LCOV - code coverage report
Current view: top level - src/utils/foxtools - MFXTextFieldIcon.h (source / functions) Coverage Total Hit
Test: lcov.info Lines: 0.0 % 1 0
Test Date: 2025-12-06 15:35:27 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) 2006-2025 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    MFXTextFieldIcon.h
      15              : /// @author  Pablo Alvarez Lopez
      16              : /// @date    Aug 2023
      17              : ///
      18              : //
      19              : /****************************************************************************/
      20              : #pragma once
      21              : #include <config.h>
      22              : 
      23              : #include "fxheader.h"
      24              : 
      25              : #include <utils/gui/images/GUIIconSubSys.h>
      26              : 
      27              : // ===========================================================================
      28              : // class declaration
      29              : // ===========================================================================
      30              : 
      31              : class MFXStaticToolTip;
      32              : 
      33              : // ===========================================================================
      34              : // class definitions
      35              : // ===========================================================================
      36              : 
      37              : class MFXTextFieldIcon : public FXFrame {
      38              :     /// @brief FOX declaration
      39            0 :     FXDECLARE(MFXTextFieldIcon)
      40              : 
      41              : public:
      42              :     /// @brief Construct text field wide enough to display ncols columns
      43              :     MFXTextFieldIcon(FXComposite* p, MFXStaticToolTip* staticToolTip, GUIIcon icon, FXObject* tgt,
      44              :                      FXSelector sel, FXuint opts, FXint x = 0, FXint y = 0, FXint w = 0, FXint h = 0,
      45              :                      FXint pl = DEFAULT_PAD, FXint pr = DEFAULT_PAD, FXint pt = DEFAULT_PAD, FXint pb = DEFAULT_PAD);
      46              : 
      47              :     /// @brief Destructor
      48              :     virtual ~MFXTextFieldIcon();
      49              : 
      50              :     /// @brief Create server-side resources
      51              :     virtual void create();
      52              : 
      53              :     /// @brief Perform layout
      54              :     virtual void layout();
      55              : 
      56              :     /// @brief Enable text field
      57              :     virtual void enable();
      58              : 
      59              :     /// @brief Disable text field
      60              :     virtual void disable();
      61              : 
      62              :     /// @brief Return default width
      63              :     virtual FXint getDefaultWidth();
      64              : 
      65              :     /// @brief Return default height
      66              :     virtual FXint getDefaultHeight();
      67              : 
      68              :     /// @brief Yes,  text field may receive focus
      69              :     virtual bool canFocus() const;
      70              : 
      71              :     /// @brief Move the focus to this window
      72              :     virtual void setFocus();
      73              : 
      74              :     /// @brief Remove the focus from this window
      75              :     virtual void killFocus();
      76              : 
      77              :     /// @brief Set editable mode
      78              :     void setEditable(FXbool edit = TRUE);
      79              : 
      80              :     /// @brief Return TRUE if text field may be edited
      81              :     FXbool isEditable() const;
      82              : 
      83              :     /// @brief Set overstrike mode
      84              :     void setOverstrike(FXbool over = TRUE);
      85              : 
      86              :     /// @brief Return TRUE if overstrike mode in effect
      87              :     FXbool isOverstrike() const;
      88              : 
      89              :     /// @brief Set cursor position
      90              :     void setCursorPos(FXint pos);
      91              : 
      92              :     /// @brief Return cursor position
      93              :     FXint getCursorPos() const;
      94              : 
      95              :     /// @brief Change anchor position
      96              :     void setAnchorPos(FXint pos);
      97              : 
      98              :     /// @brief Return anchor position
      99              :     FXint getAnchorPos() const;
     100              : 
     101              :     /// @brief Change the text and move cursor to end
     102              :     void setText(const FXString& text, FXbool notify = FALSE);
     103              : 
     104              :     /// @brief Change the icon
     105              :     void setIcon(FXIcon* ic);
     106              : 
     107              :     /// @brief Get the text for this label
     108              :     FXString getText() const;
     109              : 
     110              :     /// @brief Set the text font
     111              :     void setFont(FXFont* fnt);
     112              : 
     113              :     /// @brief Get the text font
     114              :     FXFont* getFont() const;
     115              : 
     116              :     /// @brief Change text color
     117              :     void setTextColor(FXColor clr);
     118              : 
     119              :     /// @brief Return text color
     120              :     FXColor getTextColor() const;
     121              : 
     122              :     /// @brief Change selected background color
     123              :     void setSelBackColor(FXColor clr);
     124              : 
     125              :     /// @brief Return selected background color
     126              :     FXColor getSelBackColor() const {
     127              :         return mySelectedBackgroundColor;
     128              :     }
     129              : 
     130              :     /// @brief Change selected text color
     131              :     void setSelTextColor(FXColor clr);
     132              : 
     133              :     /// @brief Return selected text color
     134              :     FXColor getSelTextColor() const;
     135              : 
     136              :     /// @brief Changes the cursor color
     137              :     void setCursorColor(FXColor clr);
     138              : 
     139              :     /// @brief Return the cursor color
     140              :     FXColor getCursorColor() const;
     141              : 
     142              :     /// @brief Change the default width of the text field
     143              :     void setNumColumns(FXint cols);
     144              : 
     145              :     /// @brief Return number of columns
     146              :     FXint getNumColumns() const;
     147              : 
     148              :     /// @brief Change text justification mode
     149              :     void setJustify(FXuint mode);
     150              : 
     151              :     /// @brief Return text justification mode
     152              :     FXuint getJustify() const;
     153              : 
     154              :     /// @brief Change word delimiters
     155              :     void setDelimiters(const FXchar* delims = FXTextField::textDelimiters);
     156              : 
     157              :     /// @brief Return word delimiters
     158              :     const FXchar* getDelimiters() const;
     159              : 
     160              :     /// @brief Set the status line help text for this label
     161              :     void setHelpText(const FXString& text);
     162              : 
     163              :     /// @brief Get the status line help text for this label
     164              :     const FXString& getHelpText() const;
     165              : 
     166              :     /// @brief Set the tool tip message for this text field
     167              :     void setTipText(const FXString& text);
     168              : 
     169              :     /// @brief Get the tool tip message for this text field
     170              :     const FXString& getTipText() const;
     171              : 
     172              :     /// @brief Change text style
     173              :     void setTextStyle(FXuint style);
     174              : 
     175              :     /// @brief Return text style
     176              :     FXuint getTextStyle() const;
     177              : 
     178              :     /// @brief Select all text
     179              :     FXbool selectAll();
     180              : 
     181              :     /// @brief Select len characters starting at given position pos
     182              :     FXbool setSelection(FXint pos, FXint len);
     183              : 
     184              :     /// @brief Extend the selection from the anchor to the given position
     185              :     FXbool extendSelection(FXint pos);
     186              : 
     187              :     /// @brief Unselect the text
     188              :     FXbool killSelection();
     189              : 
     190              :     /// @brief Return TRUE if position pos is selected
     191              :     FXbool isPosSelected(FXint pos) const;
     192              : 
     193              :     /// @brief Return TRUE if position is fully visible
     194              :     FXbool isPosVisible(FXint pos) const;
     195              : 
     196              :     /// @brief Scroll text to make the given position visible
     197              :     void makePositionVisible(FXint pos);
     198              : 
     199              :     /// @brief set toolTip
     200              :     void setToolTipText(const FXString& toolTip);
     201              : 
     202              :     /// @brief fox callbacks
     203              :     /// @{
     204              : 
     205              :     long onEnter(FXObject*, FXSelector, void*);
     206              :     long onLeave(FXObject*, FXSelector, void*);
     207              :     long onPaint(FXObject*, FXSelector, void*);
     208              :     long onUpdate(FXObject*, FXSelector, void*);
     209              :     long onKeyPress(FXObject*, FXSelector, void*);
     210              :     long onKeyRelease(FXObject*, FXSelector, void*);
     211              :     long onLeftBtnPress(FXObject*, FXSelector, void*);
     212              :     long onLeftBtnRelease(FXObject*, FXSelector, void*);
     213              :     long onMiddleBtnPress(FXObject*, FXSelector, void*);
     214              :     long onMiddleBtnRelease(FXObject*, FXSelector, void*);
     215              :     long onVerify(FXObject*, FXSelector, void*);
     216              :     long onMotion(FXObject*, FXSelector, void*);
     217              :     long onSelectionLost(FXObject*, FXSelector, void*);
     218              :     long onSelectionGained(FXObject*, FXSelector, void*);
     219              :     long onSelectionRequest(FXObject*, FXSelector, void* ptr);
     220              :     long onClipboardLost(FXObject*, FXSelector, void*);
     221              :     long onClipboardGained(FXObject*, FXSelector, void*);
     222              :     long onClipboardRequest(FXObject*, FXSelector, void*);
     223              :     long onFocusSelf(FXObject*, FXSelector, void*);
     224              :     long onFocusIn(FXObject*, FXSelector, void*);
     225              :     long onFocusOut(FXObject*, FXSelector, void*);
     226              :     long onBlink(FXObject*, FXSelector, void*);
     227              :     long onAutoScroll(FXObject*, FXSelector, void*);
     228              :     long onCmdSetValue(FXObject*, FXSelector, void*);
     229              :     long onCmdSetIntValue(FXObject*, FXSelector, void*);
     230              :     long onCmdSetRealValue(FXObject*, FXSelector, void*);
     231              :     long onCmdSetStringValue(FXObject*, FXSelector, void*);
     232              :     long onCmdGetIntValue(FXObject*, FXSelector, void*);
     233              :     long onCmdGetRealValue(FXObject*, FXSelector, void*);
     234              :     long onCmdGetStringValue(FXObject*, FXSelector, void*);
     235              :     long onCmdCursorHome(FXObject*, FXSelector, void*);
     236              :     long onCmdCursorEnd(FXObject*, FXSelector, void*);
     237              :     long onCmdCursorRight(FXObject*, FXSelector, void*);
     238              :     long onCmdCursorLeft(FXObject*, FXSelector, void*);
     239              :     long onCmdCursorWordLeft(FXObject*, FXSelector, void*);
     240              :     long onCmdCursorWordRight(FXObject*, FXSelector, void*);
     241              :     long onCmdCursorWordStart(FXObject*, FXSelector, void*);
     242              :     long onCmdCursorWordEnd(FXObject*, FXSelector, void*);
     243              :     long onCmdMark(FXObject*, FXSelector, void*);
     244              :     long onCmdExtend(FXObject*, FXSelector, void*);
     245              :     long onCmdSelectAll(FXObject*, FXSelector, void*);
     246              :     long onCmdDeselectAll(FXObject*, FXSelector, void*);
     247              :     long onCmdCutSel(FXObject*, FXSelector, void*);
     248              :     long onCmdCopySel(FXObject*, FXSelector, void*);
     249              :     long onCmdPasteSel(FXObject*, FXSelector, void*);
     250              :     long onCmdPasteMiddle(FXObject*, FXSelector, void*);
     251              :     long onCmdDeleteSel(FXObject*, FXSelector, void*);
     252              :     long onCmdDeleteAll(FXObject*, FXSelector, void*);
     253              :     long onCmdOverstString(FXObject*, FXSelector, void*);
     254              :     long onCmdInsertString(FXObject*, FXSelector, void*);
     255              :     long onCmdBackspace(FXObject*, FXSelector, void*);
     256              :     long onCmdDelete(FXObject*, FXSelector, void*);
     257              :     long onCmdToggleEditable(FXObject*, FXSelector, void*);
     258              :     long onUpdToggleEditable(FXObject*, FXSelector, void*);
     259              :     long onCmdToggleOverstrike(FXObject*, FXSelector, void*);
     260              :     long onUpdToggleOverstrike(FXObject*, FXSelector, void*);
     261              :     long onUpdHaveSelection(FXObject*, FXSelector, void*);
     262              :     long onUpdSelectAll(FXObject*, FXSelector, void*);
     263              :     long onCmdSetHelp(FXObject*, FXSelector, void*);
     264              :     long onCmdGetHelp(FXObject*, FXSelector, void*);
     265              :     long onCmdSetTip(FXObject*, FXSelector, void*);
     266              :     long onCmdGetTip(FXObject*, FXSelector, void*);
     267              :     long onQueryHelp(FXObject*, FXSelector, void*);
     268              :     long onQueryTip(FXObject*, FXSelector, void*);
     269              : 
     270              :     /// @}
     271              : 
     272              : protected:
     273              :     /// @brief Edited text
     274              :     FXString contents;
     275              : 
     276              :     /// @brief Set of text delimiter
     277              :     const FXchar* myTextDelimiter = FXTextField::textDelimiters;
     278              : 
     279              :     /// @brief Text font
     280              :     FXFont* myFont;
     281              : 
     282              :     /// @brief Text color
     283              :     FXColor myTextColor = 0;
     284              : 
     285              :     /// @brief Selected background color
     286              :     FXColor mySelectedBackgroundColor = 0;
     287              : 
     288              :     /// @brief Selected text color
     289              :     FXColor mySelectedTextColor = 0;
     290              : 
     291              :     /// @brief Color of the Cursor
     292              :     FXColor myCursorColor = 0;
     293              : 
     294              :     /// @brief Cursor position
     295              :     FXint myCursorPosition = 0;
     296              : 
     297              :     /// @brief Anchor position
     298              :     FXint myAnchorPosition = 0;
     299              : 
     300              :     /// @brief Number of myVisibleColumns visible
     301              :     FXint myVisibleColumns = 0;
     302              : 
     303              :     /// @brief Shift amount
     304              :     FXint myShiftAmount = 0;
     305              : 
     306              :     /// @brief Clipped text
     307              :     FXString myClippedText;
     308              : 
     309              :     /// @brief Help string
     310              :     FXString myHelpText;
     311              : 
     312              :     /// @brief Tooltip
     313              :     FXString myTooltipText;
     314              : 
     315              :     /// @brief myIcon
     316              :     FXIcon* myIcon = nullptr;
     317              : 
     318              :     /// @brief static tooltip
     319              :     MFXStaticToolTip* myStaticToolTip = nullptr;
     320              : 
     321              :     /// @brief toolTip text (if set, tooltip will be always show)
     322              :     FXString myToolTipText;
     323              : 
     324              :     /// @brief FOX need this
     325              :     MFXTextFieldIcon();
     326              : 
     327              :     /// @brief index
     328              :     FXint index(FXint x) const;
     329              : 
     330              :     /// @brief coordinates
     331              :     FXint coord(FXint i) const;
     332              : 
     333              :     /// @brief draw myCursorPosition
     334              :     void drawCursor(FXuint state);
     335              : 
     336              :     /// @brief draw text range
     337              :     void drawTextRange(FXDCWindow& dc, FXint fm, FXint to);
     338              : 
     339              :     /// @brief draw text fragment
     340              :     void drawTextFragment(FXDCWindow& dc, FXint x, FXint y, FXint fm, FXint to);
     341              : 
     342              :     /// @brief draw password text fragment
     343              :     void drawPWDTextFragment(FXDCWindow& dc, FXint x, FXint y, FXint fm, FXint to);
     344              : 
     345              :     /// @brief right word
     346              :     FXint rightWord(FXint pos) const;
     347              : 
     348              :     /// @brief left word
     349              :     FXint leftWord(FXint pos) const;
     350              : 
     351              :     /// @brief word start
     352              :     FXint wordStart(FXint pos) const;
     353              : 
     354              :     /// @brief word end
     355              :     FXint wordEnd(FXint pos) const;
     356              : 
     357              : private:
     358              :     /// @brief invalidate copy constructor
     359              :     MFXTextFieldIcon(const MFXTextFieldIcon&) = delete;
     360              : 
     361              :     /// @brief invalidate assigment constructor
     362              :     MFXTextFieldIcon& operator=(const MFXTextFieldIcon&) = delete;
     363              : };
        

Generated by: LCOV version 2.0-1