LCOV - code coverage report
Current view: top level - src/utils/foxtools - MFXDynamicLabel.h (source / functions) Coverage Total Hit
Test: lcov.info Lines: 0.0 % 2 0
Test Date: 2026-03-02 16:00:03 Functions: 0.0 % 3 0

            Line data    Source code
       1              : /****************************************************************************/
       2              : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
       3              : // Copyright (C) 2001-2026 German Aerospace Center (DLR) and others.
       4              : // This program and the accompanying materials are made available under the
       5              : // terms of the Eclipse Public License 2.0 which is available at
       6              : // https://www.eclipse.org/legal/epl-2.0/
       7              : // This Source Code may also be made available under the following Secondary
       8              : // Licenses when the conditions for such availability set forth in the Eclipse
       9              : // Public License 2.0 are satisfied: GNU General Public License, version 2
      10              : // or later which is available at
      11              : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
      12              : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
      13              : /****************************************************************************/
      14              : /// @file    MFXDynamicLabel.h
      15              : /// @author  Mirko Barthauer
      16              : /// @date    31.03.2023
      17              : ///
      18              : // Text label with dynamic multi-line text (inserts line breaks on the fly)
      19              : /****************************************************************************/
      20              : #pragma once
      21              : #include <config.h>
      22              : 
      23              : #include <string>
      24              : 
      25              : #include "fxheader.h"
      26              : 
      27              : 
      28              : /// @brief A list item which allows for custom coloring
      29              : class MFXDynamicLabel : public FXLabel {
      30              :     /// @brief FOX declaration
      31            0 :     FXDECLARE(MFXDynamicLabel)
      32              : 
      33              : public:
      34              :     /// @brief enum for events
      35              :     enum {
      36              :         MID_LABEL_WIDTHCHANGE,
      37              :     };
      38              : 
      39              :     /// @brief Construct label with given text and icon
      40              :     MFXDynamicLabel(FXComposite* p, const FXString& text, FXIcon* ic = 0, FXuint opts = LABEL_NORMAL, FXint x = 0, FXint y = 0, FXint w = 0, FXint h = 0, FXint pl = DEFAULT_PAD, FXint pr = DEFAULT_PAD, FXint pt = DEFAULT_PAD, FXint pb = DEFAULT_PAD, std::string indent = "- ");
      41              : 
      42            0 :     virtual ~MFXDynamicLabel() {};
      43              : 
      44              :     /// @brief overload text label updates to store the original string as backup for when width changes again
      45              :     void setText(const FXString& text);
      46              : 
      47              :     /// @brief overload to be informed when the label text has to be reformatted due to width changes
      48              :     long onUpdate(FXObject* sender, FXSelector, void*);
      49              : 
      50              :     /// @brief overload position to be informed when the parent has done the layout
      51              :     void position(FXint x, FXint y, FXint w, FXint h);
      52              : 
      53              :     FXint getDefaultHeight();
      54              : 
      55              : protected:
      56              :     /// @brief fox needs this
      57              :     MFXDynamicLabel();
      58              : 
      59              : private:
      60              :     /// @brief compute indentation
      61              :     void computeIndentation();
      62              : 
      63              :     /// @brief reformat line breaks
      64              :     void reformatLineBreaks(const int curWidth);
      65              : 
      66              :     /// @brief original string
      67              :     std::string myOriginalString;
      68              : 
      69              :     /// @brief indent string
      70              :     std::string myIndentString;
      71              : 
      72              :     /// @brief indent
      73              :     int myIndent;
      74              : 
      75              :     /// @brief previous width
      76              :     int myPreviousWidth;
      77              : 
      78              :     /// @brief Invalidated copy constructor.
      79              :     MFXDynamicLabel(const MFXDynamicLabel&) = delete;
      80              : 
      81              :     /// @brief Invalidated assignment operator.
      82              :     MFXDynamicLabel& operator=(const MFXDynamicLabel&) = delete;
      83              : };
        

Generated by: LCOV version 2.0-1