LCOV - code coverage report
Current view: top level - src/utils/foxtools - MFXDecalsTable.h (source / functions) Coverage Total Hit
Test: lcov.info Lines: 0.0 % 2 0
Test Date: 2024-11-22 15:46:21 Functions: 0.0 % 1 0

            Line data    Source code
       1              : /****************************************************************************/
       2              : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
       3              : // Copyright (C) 2001-2024 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    MFXDecalsTable.h
      15              : /// @author  Pablo Alvarez Lopez
      16              : /// @date    Feb 2023
      17              : ///
      18              : // Table used for show and edit decal values
      19              : /****************************************************************************/
      20              : #pragma once
      21              : #include <config.h>
      22              : 
      23              : #include <vector>
      24              : 
      25              : #include <utils/common/UtilExceptions.h>
      26              : #include <utils/foxtools/MFXLabelTooltip.h>
      27              : 
      28              : // ===========================================================================
      29              : // class declaration
      30              : // ===========================================================================
      31              : 
      32              : class GUIDialog_ViewSettings;
      33              : 
      34              : // ===========================================================================
      35              : // class definitions
      36              : // ===========================================================================
      37              : /**
      38              :  * @class MFXDecalsTable
      39              :  */
      40              : class MFXDecalsTable : public FXVerticalFrame {
      41              :     /// @brief fox declaration
      42            0 :     FXDECLARE(MFXDecalsTable)
      43              : 
      44              : public:
      45              :     /// @brief constructor (Exactly like the FXButton constructor)
      46              :     MFXDecalsTable(GUIDialog_ViewSettings* dialogViewSettingsParent, FXComposite* parent);
      47              : 
      48              :     /// @brief destructor (Called automatically)
      49              :     ~MFXDecalsTable();
      50              : 
      51              :     /// @brief clear table
      52              :     void clearTable();
      53              : 
      54              :     /// @brief Modify cell text
      55              :     void setItemText(FXint row, FXint column, const std::string& text);
      56              : 
      57              :     /// @brief Return cell text
      58              :     std::string getItemText(const int row, const int column) const;
      59              : 
      60              :     /// @brief Get number of rows
      61              :     int getNumRows() const;
      62              : 
      63              :     /// @brief Get current selected row
      64              :     int getCurrentSelectedRow() const;
      65              : 
      66              :     /// @brief Select a row
      67              :     void selectRow(const int rowIndex);
      68              : 
      69              :     /// @brief Change column header text
      70              :     void setColumnLabel(const int column, const std::string& text, const std::string& tooltip = "");
      71              : 
      72              :     /// @brief fill table
      73              :     void fillTable();
      74              : 
      75              :     /// @name FOX callbacks
      76              :     /// @{
      77              : 
      78              :     /// @brief called when a row is focused
      79              :     long onFocusRow(FXObject*, FXSelector, void*);
      80              : 
      81              :     /// @brief called when a key is pressed
      82              :     long onCmdKeyPress(FXObject*, FXSelector, void*);
      83              : 
      84              :     /// @brief called when a string is updated
      85              :     long onCmdEditRowString(FXObject*, FXSelector, void*);
      86              : 
      87              :     /// @brief called when a spinner is updated
      88              :     long onCmdEditRowSpinner(FXObject*, FXSelector, void*);
      89              : 
      90              :     /// @brief called when a checkBox is updated
      91              :     long onCmdEditRowCheckBox(FXObject*, FXSelector, void*);
      92              : 
      93              :     /// @brief called when open decal button is pressed
      94              :     long onCmdOpenDecal(FXObject*, FXSelector, void*);
      95              : 
      96              :     /// @brief called when add row button is pressed
      97              :     long onCmdAddRow(FXObject*, FXSelector, void*);
      98              : 
      99              :     /// @brief update add row button
     100              :     long onUpdAddRow(FXObject*, FXSelector, void*);
     101              : 
     102              :     /// @brief called when remove row button is pressed
     103              :     long onCmdRemoveRow(FXObject*, FXSelector, void*);
     104              : 
     105              :     /// @}
     106              : 
     107              : protected:
     108              :     /// @brief FOX needs this
     109            0 :     FOX_CONSTRUCTOR(MFXDecalsTable)
     110              : 
     111              :     /// @brief table cell
     112              :     class Cell {
     113              : 
     114              :     public:
     115              :         /// @brief constructor for textField
     116              :         Cell(MFXDecalsTable* decalsTable, FXTextField* textField, int col, int row);
     117              : 
     118              :         /// @brief constructor for index label
     119              :         Cell(MFXDecalsTable* decalsTable, FXLabel* indexLabel, FXLabel* indexLabelBold, int col, int row);
     120              : 
     121              :         /// @brief constructor for buttons
     122              :         Cell(MFXDecalsTable* decalsTable, FXButton* button, int col, int row);
     123              : 
     124              :         /// @brief constructor for check buttons
     125              :         Cell(MFXDecalsTable* decalsTable, FXCheckButton* checkButton, int col, int row);
     126              : 
     127              :         /// @brief constructor for spinners
     128              :         Cell(MFXDecalsTable* decalsTable, FXRealSpinner* spinner, int col, int row);
     129              : 
     130              :         /// @brief destructor
     131              :         ~Cell();
     132              : 
     133              :         /// @brief check if current cell has focus
     134              :         bool hasFocus() const;
     135              : 
     136              :         /// @brief set focus in the current cell
     137              :         void setFocus();
     138              : 
     139              :         /// @brief get textField
     140              :         FXTextField* getTextField() const;
     141              : 
     142              :         /// @brief get index label
     143              :         FXLabel* getIndexLabel() const;
     144              : 
     145              :         /// @brief get open button
     146              :         FXButton* getButton();
     147              : 
     148              :         /// @brief get check button
     149              :         FXCheckButton* getCheckButton();
     150              : 
     151              :         /// @brief get spinner
     152              :         FXRealSpinner* getSpinner();
     153              : 
     154              :         /// @brief show label index normal
     155              :         void showIndexLabelNormal();
     156              : 
     157              :         /// @brief show label index bold
     158              :         void showIndexLabelBold();
     159              : 
     160              :         /// @brief column index
     161              :         int getCol() const;
     162              : 
     163              :         /// @brief row index
     164              :         int getRow() const;
     165              : 
     166              :         /// @brief get column type
     167              :         char getType() const;
     168              : 
     169              :     private:
     170              :         /// @brief pointer to decals table parent
     171              :         MFXDecalsTable* myDecalsTable = nullptr;
     172              : 
     173              :         /// @brief FXTextField
     174              :         FXTextField* myTextField = nullptr;
     175              : 
     176              :         /// @brief index label
     177              :         FXLabel* myIndexLabel = nullptr;
     178              : 
     179              :         /// @brief index label bold
     180              :         FXLabel* myIndexLabelBold = nullptr;
     181              : 
     182              :         /// @brief button
     183              :         FXButton* myButton = nullptr;
     184              : 
     185              :         /// @brief spinner
     186              :         FXRealSpinner* mySpinner = nullptr;
     187              : 
     188              :         /// @brief check button
     189              :         FXCheckButton* myCheckButton = nullptr;
     190              : 
     191              :         /// @brief column index
     192              :         const int myCol;
     193              : 
     194              :         /// @brief row index
     195              :         const int myRow;
     196              : 
     197              :         /// @brief default constructor
     198              :         Cell();
     199              :     };
     200              : 
     201              :     /// @brief table column
     202              :     class Column {
     203              : 
     204              :     public:
     205              :         /// @brief constructor
     206              :         Column(MFXDecalsTable* table, const int index, const char type);
     207              : 
     208              :         /// @brief destructor
     209              :         ~Column();
     210              : 
     211              :         /// @brief get vertical cell frame
     212              :         FXVerticalFrame* getVerticalCellFrame() const;
     213              : 
     214              :         /// @brief get column type
     215              :         char getType() const;
     216              : 
     217              :         /// @brief get column label
     218              :         FXString getColumnLabel() const;
     219              : 
     220              :         /// @brief set column label
     221              :         void setColumnLabel(const std::string& text, const std::string& tooltip);
     222              : 
     223              :     private:
     224              :         /// @brief pointer to table
     225              :         MFXDecalsTable* myTable = nullptr;
     226              : 
     227              :         /// @brief vertical frame
     228              :         FXVerticalFrame* myVerticalFrame = nullptr;
     229              : 
     230              :         /// @brief column top tooltip label
     231              :         MFXLabelTooltip* myTopLabel = nullptr;
     232              : 
     233              :         /// @brief vertical frame
     234              :         FXVerticalFrame* myVerticalCellFrame = nullptr;
     235              : 
     236              :         /// @brief column index
     237              :         const int myIndex;
     238              : 
     239              :         /// @brief column type
     240              :         const char myType;
     241              : 
     242              :         /// @brief adjust column width
     243              :         void adjustColumnWidth();
     244              : 
     245              :         /// @brief default constructor
     246              :         Column();
     247              :     };
     248              : 
     249              :     /// @brief table row
     250              :     class Row {
     251              : 
     252              :     public:
     253              :         /// @brief constructor
     254              :         Row(MFXDecalsTable* table);
     255              : 
     256              :         /// @brief destructor
     257              :         ~Row();
     258              : 
     259              :         /// @brief get text
     260              :         std::string getText(int index) const;
     261              : 
     262              :         /// @brief set text
     263              :         void setText(int index, const std::string& text) const;
     264              : 
     265              :         /// @brief get cells
     266              :         const std::vector<Cell*>& getCells() const;
     267              : 
     268              :         /// @brief disable row buttons
     269              :         void disableButtons();
     270              : 
     271              :     protected:
     272              :         /// @brief poiner to table parent
     273              :         MFXDecalsTable* myTable = nullptr;
     274              : 
     275              :         /// @brief list wtih cells
     276              :         std::vector<Cell*> myCells;
     277              : 
     278              :     private:
     279              :         /// @brief default constructor
     280              :         Row();
     281              :     };
     282              : 
     283              :     /// @brief update index labels
     284              :     void updateIndexLabel();
     285              : 
     286              :     /// @brief move focus to current row
     287              :     bool moveFocus();
     288              : 
     289              :     /// @brief horizontal columns frame
     290              :     FXHorizontalFrame* myColumnsFrame = nullptr;
     291              : 
     292              :     /// @brief font for index
     293              :     FXFont* myIndexFont = nullptr;
     294              : 
     295              :     /// @brief font for index selected
     296              :     FXFont* myIndexSelectedFont = nullptr;
     297              : 
     298              :     /// @frame pointer to GUIDialog_ViewSettings parent
     299              :     GUIDialog_ViewSettings* myDialogViewSettings = nullptr;
     300              : 
     301              :     /// @brief columns
     302              :     std::vector<Column*> myColumns;
     303              : 
     304              :     /// @brief rows
     305              :     std::vector<Row*> myRows;
     306              : 
     307              :     /// @brief add button
     308              :     FXButton* myAddButton = nullptr;
     309              : 
     310              :     /// @brief current selected row
     311              :     int myCurrentSelectedRow = -1;
     312              : 
     313              : private:
     314              :     /// @brief Invalidated duplicate constructor.
     315              :     MFXDecalsTable(const MFXDecalsTable&) = delete;
     316              : 
     317              :     /// @brief Invalidated assignment operator.
     318              :     MFXDecalsTable& operator=(const MFXDecalsTable&) = delete;
     319              : };
        

Generated by: LCOV version 2.0-1