123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- //| Copyright: (C) 2019-2020 Kevin Larke <contact AT larke DOT org>
- //| License: GNU GPL version 3.0 or above. See the accompanying LICENSE file.
- #ifndef cmUiDrvrFltk_h
- #define cmUiDrvrFltk_h
-
- class Fl_Tabs;
- class Fl_Widget;
- class Fl_Button;
- class Fl_Check_Button;
- class Fl_Menu_Button;
- class Fl_Select_Browser;
- class Fl_Box;
- class Fl_Input;
- class Fl_Value_Input;
- class Fl_Value_Slider;
- class Fl_Progress;
- class Fl_Vert_Progress;
- class Fl_File_Btn;
- class Fl_Text_Display;
-
- class cmUiDrvrFltk
- {
- public:
-
- cmUiDrvrFltk(cmCtx_t* ctx, Fl_Tabs* tabs, cmUiDriverFunc_t cbFunc, void* cbArg);
- virtual ~cmUiDrvrFltk();
-
- void setBaseWindow( Fl_Tabs* tabs );
- void setCallback( cmUiDriverFunc_t cbFunc, void* cbArg );
-
- static cmUiRC_t cmUiDriverFunc( void* arg, const cmUiDriverArg_t* a );
-
- private:
- struct panel_str;
-
- typedef struct ctl_str
- {
- cmUiCId_t cId; // control type id
- unsigned usrId; // user id
- unsigned flags; // flags from this controls create call.
- struct panel_str* pnl; // parent panel
- Fl_Widget* wdgt; // this controls FLTK wdgt ptr
- cmUiDriverArg_t cbArg; // cached callback arg. recd used by this ctl
- struct ctl_str* link; // panel.ctls list link
-
- union
- {
- Fl_Button* btn;
- Fl_Check_Button* chk;
- Fl_Menu_Button* mbt;
- Fl_Select_Browser* lst;
- Fl_Box* lbl;
- Fl_Input* str;
- Fl_Text_Display* con;
- Fl_Value_Input* num;
- Fl_Value_Slider* sld;
- Fl_Progress* prg;
- Fl_Progress* mtr;
- Fl_File_Btn* fnb;
- } u;
- } ctl_t;
-
- typedef struct panel_str
- {
- cmUiDrvrFltk* drvr; // parent driver object
- Fl_Group* grp; // panel Widget
- unsigned appId; // id of the app. this panel serves
- unsigned usrId; // panels id
- int x_offs; // left control border
- int y_offs; // top control border
- ctl_t* ctls; // this panels control list
- cmUiDriverArg_t cbArg; // cached callback arg recd used by this ctl
- struct panel_str* link; // links used by _panels
- } panel_t;
-
- cmErr_t _err; //
- Fl_Tabs* _tabs; // Fl_Tabs Widget containing the panels
- cmUiDriverFunc_t _cbFunc; // application event callback function
- void* _cbArgs; //
- panel_t* _panels; // panel list
- ctl_t _dummy; //
-
- void _insertNewCtl( panel_t* pp, ctl_t* ctl, Fl_Widget* wp, unsigned flags );
- bool _hasNoAlignFlags( unsigned flags ) const;
- cmUiRC_t _createCtl( const cmUiDriverArg_t* a );
- cmUiRC_t _destroyCtl( unsigned appId, unsigned panelId, unsigned usrId, bool deleteWindowEleFlag );
- cmUiRC_t _destroyCtl( panel_t* pp, unsigned usrId, bool deleteWindowEleFlag );
- cmUiRC_t _createPanel( const cmUiDriverArg_t* a );
- cmUiRC_t _setValueCtl( const cmUiDriverArg_t* a );
- cmUiRC_t _enableCtl( const cmUiDriverArg_t* a );
- cmUiRC_t _destroyAllPanels( bool deleteWindowEleFl );
- cmUiRC_t _destroyPanel(panel_t* pp, bool deleteWindowEleFl );
- cmUiRC_t _findPanel( unsigned appId, unsigned usrId, panel_t*& ppRef, panel_t*& prvPnlRef, bool errFl=true );
- cmUiRC_t _findCtl( panel_t* pp, unsigned usrId, ctl_t*& ctlRef, ctl_t*& prvCtlRef, bool errFl=true );
- void _doCb( ctl_t* ctl, cmUiDId_t dId, unsigned flags );
-
- static void _s_ctl_cb(Fl_Widget* wp, void* data );
- static void _s_tab_cb(Fl_Widget* wp, void* data );
- };
-
- #endif
|