93 #if !defined (USE_FINAL_H) && !defined (COMPILE_FINAL_CUT)    94   #error "Only <final/final.h> can be included directly."    99 #include <unordered_map>   103 #include "final/fobject.h"   104 #include "final/ftypes.h"   105 #include "final/fwidget_flags.h"   106 #include "final/fwidget_functions.h"   107 #include "final/output/foutput.h"   108 #include "final/util/fcallback.h"   109 #include "final/util/fpoint.h"   110 #include "final/util/frect.h"   111 #include "final/util/fsize.h"   112 #include "final/vterm/fvterm.h"   140     using FVTerm::setColor;
   142     using FWidgetList = std::vector<FWidget*>;
   143     using FAcceleratorList = std::vector<FAccelerator>;
   152     auto  getClassName() 
const -> 
FString override;
   153     auto  getRootWidget() -> 
FWidget*;
   154     auto  getParentWidget() 
const -> 
FWidget*;
   155     static auto  getMainWidget() -> 
FWidget*&;
   156     static auto  getActiveWindow() -> 
FWidget*&;
   157     static auto  getFocusWidget() -> 
FWidget*&;
   158     static auto  getClickedWidget() -> 
FWidget*&;
   159     static auto  getOpenMenu() -> 
FWidget*&;
   160     static auto  getMoveResizeWidget() -> 
FWidget*&;
   161     static auto  getMenuBar() -> 
FMenuBar*;
   163     static auto  getColorTheme() -> std::shared_ptr<FWidgetColors>&;
   164     auto  getAcceleratorList() 
const & -> 
const FAcceleratorList&;
   165     auto  getStatusbarMessage() 
const -> 
FString;
   166     auto  getForegroundColor() 
const noexcept -> FColor;  
   167     auto  getBackgroundColor() 
const noexcept -> FColor;  
   168     auto  doubleFlatLine_ref (Side) -> std::vector<bool>&;
   170     auto  getX() 
const -> int;
   171     auto  getY() 
const -> int;
   172     auto  getPos() 
const -> 
FPoint;
   173     auto  getTermX() 
const -> int;
   174     auto  getTermY() 
const -> int;
   175     auto  getTermPos() 
const -> 
FPoint;
   176     auto  getWidth() 
const -> std::size_t;
   177     auto  getHeight() 
const -> std::size_t;
   178     auto  getSize() 
const -> 
FSize;
   179     auto  getTopPadding() 
const noexcept -> int;
   180     auto  getLeftPadding() 
const noexcept -> int;
   181     auto  getBottomPadding() 
const noexcept -> int;
   182     auto  getRightPadding() 
const noexcept -> int;
   183     auto  getClientWidth() 
const -> std::size_t;
   184     auto  getClientHeight() 
const -> std::size_t;
   185     auto  getClientSize() 
const -> 
FSize;
   186     auto  getMaxWidth() 
const -> std::size_t;
   187     auto  getMaxHeight() 
const -> std::size_t;
   188     auto  getShadow() 
const & -> 
const FSize&;
   189     auto  getGeometry() 
const & -> 
const FRect&;
   190     auto  getGeometryWithShadow() & -> 
const FRect&;
   191     auto  getTermGeometry() & -> 
const FRect&;
   192     auto  getTermGeometryWithShadow() & -> 
const FRect&;
   193     auto  getDesktopWidth() 
const -> std::size_t;
   194     auto  getDesktopHeight() 
const -> std::size_t;
   196     auto  getCursorPos() 
const -> 
FPoint;
   197     auto  getPrintPos() -> 
FPoint;
   200     static void  setMainWidget (
FWidget*);
   201     static void  setFocusWidget (
FWidget*);
   202     static void  setClickedWidget (
FWidget*);
   203     static void  setMoveSizeWidget (
FWidget*);
   204     static void  setActiveWindow (
FWidget*);
   205     static void  setOpenMenu (
FWidget*);
   206     template <
typename ClassT>
   207     static void  setColorTheme();
   208     auto  setAcceleratorList() & -> FAcceleratorList&;
   209     virtual void setStatusbarMessage (
const FString&);
   210     void  setVisible (
bool = 
true);
   212     virtual void setEnable (
bool = 
true);
   213     virtual void unsetEnable();
   214     virtual void setDisable();
   215     virtual void setVisibleCursor (
bool = 
true);  
   216     virtual void unsetVisibleCursor();            
   217     virtual auto setFocus ( 
bool = 
true   218                           , FocusTypes = FocusTypes::DefiniteWidget) -> bool;
   219     virtual auto unsetFocus() -> bool;
   220     void  setFocusable (
bool = 
true);
   221     void  unsetFocusable();
   222     auto  ignorePadding (
bool = 
true) -> bool;    
   223     auto  acceptPadding() -> bool;                
   224     virtual void setForegroundColor (FColor);
   225     virtual void setBackgroundColor (FColor);
   226     virtual void resetColors();
   227     void  useParentWidgetColor();
   228     void  setColor() 
const;
   231     virtual void setX (
int, 
bool = 
true);
   232     virtual void setY (
int, 
bool = 
true);
   233     virtual void setPos (
const FPoint&, 
bool = 
true);
   234     virtual void setWidth (std::size_t, 
bool = 
true);
   235     virtual void setHeight (std::size_t, 
bool = 
true);
   236     virtual void setSize (
const FSize&, 
bool = 
true);
   237     void  setTopPadding (
int, 
bool = 
true);
   238     void  setLeftPadding (
int, 
bool = 
true);
   239     void  setBottomPadding (
int, 
bool = 
true);
   240     void  setRightPadding (
int, 
bool = 
true);
   241     void  setTerminalSize (
const FSize&) 
const;
   242     virtual void setGeometry (
const FRect&, 
bool = 
true);
   243     virtual void setGeometry (
const FPoint&, 
const FSize&, 
bool = 
true);
   244     virtual void setShadowSize (
const FSize&);
   245     void  setMinimumWidth (std::size_t);
   246     void  setMinimumHeight (std::size_t);
   247     void  setMinimumSize (
const FSize&);
   248     void  setMaximumWidth (std::size_t);
   249     void  setMaximumHeight (std::size_t);
   250     void  setMaximumSize (
const FSize&);
   251     void  setFixedSize (
const FSize&);
   252     virtual auto setCursorPos (
const FPoint&) -> bool;
   253     void  unsetCursorPos();
   254     virtual void setPrintPos (
const FPoint&);
   255     void  setDoubleFlatLine (Side, 
bool = 
true);
   256     void  unsetDoubleFlatLine (Side);
   257     void  setDoubleFlatLine (Side, 
int, 
bool = 
true);
   258     void  unsetDoubleFlatLine (Side, 
int);
   261     auto  isRootWidget() 
const -> bool;
   262     auto  isWindowWidget() 
const -> bool;
   263     auto  isDialogWidget() 
const -> bool;
   264     auto  isMenuWidget() 
const -> bool;
   265     auto  isVisible() 
const -> bool;
   266     auto  isShown() 
const -> bool;
   267     auto  isHidden() 
const -> bool;
   268     auto  isEnabled() 
const -> bool;
   269     auto  hasVisibleCursor() 
const -> bool;
   270     auto  hasFocus() 
const -> bool;
   271     auto  acceptFocus() 
const -> bool;  
   272     auto  isPaddingIgnored() 
const -> bool;
   276     auto  numOfFocusableChildren() & -> int;
   277     virtual auto close() -> bool;
   278     void  clearStatusbarMessage();
   279     template <
typename... Args>
   280     void  addCallback (
FString&&, Args&&...) & noexcept;
   281     template <
typename... Args>
   282     void  delCallback (Args&&...) & noexcept;
   283     void  emitCallback (
const FString&) 
const &;
   284     void  addAccelerator (FKey) &;
   285     virtual void addAccelerator (FKey, 
FWidget*) &;
   286     void  delAccelerator () &;
   287     virtual void delAccelerator (
FWidget*) &;
   288     virtual void flushChanges();
   289     virtual void redraw();
   290     virtual void resize();
   293     virtual auto focusNextChild() -> bool;  
   294     virtual auto focusPrevChild() -> bool;  
   295     virtual auto focusFirstChild() & -> bool;
   296     virtual auto focusLastChild() & -> bool;
   298     void  print (
const FPoint&) 
override;
   299     virtual void move (
const FPoint&);
   300     virtual void drawBorder();
   305     auto  getPrintArea() -> 
FTermArea* 
override;
   306     static auto getModalDialogCounter() -> uInt;
   307     static auto getDialogList() -> FWidgetList*&;
   308     static auto getAlwaysOnTopList() -> FWidgetList*&;
   309     static auto getWidgetCloseList() -> FWidgetList*&;
   310     void  addPreprocessingHandler ( 
const FVTerm*
   311                                   , FPreprocessingFunction&& ) 
override;
   312     void  delPreprocessingHandler (
const FVTerm*) 
override;
   315     auto  isChildPrintArea() 
const -> bool;
   319     virtual void setMenuBar (
FMenuBar*);
   320     static auto  setModalDialogCounter() -> uInt&;
   321     void  setParentOffset();
   322     void  setTermOffset();
   323     void  setTermOffsetWithPadding();
   326     void  initTerminal() 
override;
   328     virtual void initLayout();
   329     virtual void adjustSize();
   330     void  adjustSizeGlobal();
   331     void  hideArea (
const FSize&);
   334     auto  event (
FEvent*) -> 
bool override;
   358     using EventHandler = std::function<void(FEvent*)>;
   359     using EventMap = std::unordered_map<Event, EventHandler, EnumHash<Event>>;
   361     struct WidgetSizeHints
   363       WidgetSizeHints() = 
default;
   364       ~WidgetSizeHints() = 
default;
   366       inline void setMinimum (
const FSize& s)
   368         min_width = s.getWidth();
   369         min_height = s.getHeight();
   372       inline void setMaximum (
const FSize& s)
   374         max_width = s.getWidth();
   375         max_height = s.getHeight();
   378       std::size_t min_width{0};
   379       std::size_t min_height{0};
   380       std::size_t max_width{INT_MAX};
   381       std::size_t max_height{INT_MAX};
   384     struct DoubleLineMask
   386       DoubleLineMask() = 
default;
   387       ~DoubleLineMask() = 
default;
   389       inline void setWidth (std::size_t width)
   391         if ( top.size() == width && bottom.size() == width )
   394         top.resize (width, 
false);
   395         bottom.resize (width, 
false);
   398       inline void setHeight (std::size_t height)
   400         if ( right.size() == height && left.size() == height )
   403         right.resize (height, 
false);
   404         left.resize (height, 
false);
   407       inline void setSize (std::size_t width, std::size_t height)
   413       std::vector<bool> top{};
   414       std::vector<bool> right{};
   415       std::vector<bool> bottom{};
   416       std::vector<bool> left{};
   421       WidgetPadding() = 
default;
   422       ~WidgetPadding() = 
default;
   431     void  determineDesktopSize();
   432     void  mapEventFunctions();
   434     void  mapMouseEvents();
   435     void  mapFocusEvents();
   436     void  mapWidgetEvents();
   437     void  initRootWidget();
   438     void  initWidgetLayout();
   439     void  initDesktopOnShown() 
const;
   442     void  finalizeShow() 
const;
   443     void  showChildWidgets();
   444     void  moveLeftIfNotEnoughSpace();
   445     void  moveUpIfNotEnoughSpace();
   446     void  reduceWidthIfNotEnoughSpace();
   447     void  reduceHeightIfNotEnoughSpace();
   448     void  insufficientSpaceAdjust();
   452     void  setWindowFocus (
bool = 
true);
   453     auto  searchForwardForWidget ( 
const FWidget*
   454                                  , 
const FWidget*) 
const  -> FObjectList::const_iterator;
   455     auto  searchBackwardsForWidget ( 
const FWidget*
   456                                    , 
const FWidget* ) 
const -> FObjectList::const_reverse_iterator;
   457     auto  isViewable() 
const -> bool;
   458     auto  canReceiveFocus (
const FWidget*) 
const -> bool;
   459     void  setFocusOnThisWidget (FocusTypes);
   460     auto  sendFailAtChildFocusEvent (
FWidget*, FocusTypes) 
const -> bool;
   461     auto  sendFocusOutEvent (
FWidget*, FocusTypes) 
const -> bool;
   462     auto  sendFocusInEvent (
FWidget*, FocusTypes) 
const -> bool;
   463     void  processDestroy() 
const;
   465     void  drawWindows() 
const;
   468     void  adjustSizeWithinArea (
FRect&) 
const;
   469     void  adjustChildWidgetSizes();
   470     void  setWindowOffset();
   471     void  setWidgetOffset (
const FWidget*);
   472     void  setClientOffset();
   473     static auto  isDefaultTheme() -> bool;
   474     static void  initColorTheme();
   475     void  removeQueuedEvent() 
const;
   476     void  setStatusbarText (
bool = 
true) 
const;
   480     FPoint               widget_cursor_position{-1, -1};
   481     WidgetSizeHints      size_hints{};
   482     DoubleLineMask       double_flatline_mask{};
   483     WidgetPadding        padding{};
   486     FRect                wsize{1, 1, 1, 1};
   487     FRect                adjust_wsize{1, 1, 1, 1};
   488     FRect                adjust_wsize_term{};
   489     FRect                adjust_wsize_shadow{};
   490     FRect                adjust_wsize_term_shadow{};
   494     FRect                wclient_offset{};
   499     FColor               foreground_color{FColor::Default};
   500     FColor               background_color{FColor::Default};
   502     FAcceleratorList     accelerator_list{};
   503     EventMap             event_map{};
   511     static FWidget*      clicked_widget;
   513     static FWidget*      move_resize_widget;
   514     static FWidget*      first_shown_widget;
   515     static FWidget*      redraw_root_widget;
   516     static FWidgetList*  dialog_list;
   517     static FWidgetList*  always_on_top_list;
   518     static FWidgetList*  close_widget_list;
   519     static uInt          modal_dialog_counter;
   520     static bool          init_terminal;
   521     static bool          init_desktop;
   524     friend void  detectTerminalSize();
   525     friend void  drawShadow (
FWidget*);
   526     friend void  drawTransparentShadow (
FWidget*);
   527     friend void  drawGenericBox (
FWidget*, 
const FRect&, 
const std::array<wchar_t, 8>&);
   528     friend void  drawGenericBlockShadow (
FWidget*, 
const std::array<FChar, 4>&);
   529     friend void  drawFlatBorder (
FWidget*);
   530     friend void  clearFlatBorder (
FWidget*);
   536 inline auto FWidget::getClassName() 
const -> 
FString   537 { 
return "FWidget"; }
   540 inline auto FWidget::getMainWidget() -> 
FWidget*&
   541 { 
return main_widget; }
   544 inline auto FWidget::getActiveWindow() -> 
FWidget*&  
   545 { 
return active_window; }
   548 inline auto FWidget::getFocusWidget() -> 
FWidget*&
   549 { 
return focus_widget; }
   552 inline auto FWidget::getClickedWidget() -> 
FWidget*&
   553 { 
return clicked_widget; }
   556 inline auto FWidget::getOpenMenu() -> 
FWidget*&
   557 { 
return open_menu; }
   560 inline auto FWidget::getMoveResizeWidget() -> 
FWidget*&
   561 { 
return move_resize_widget; }
   564 inline auto FWidget::getMenuBar() -> 
FMenuBar*
   568 inline auto FWidget::getStatusBar() -> 
FStatusBar*
   569 { 
return statusbar; }
   572 inline auto FWidget::getAcceleratorList() 
const & -> 
const FAcceleratorList&
   573 { 
return accelerator_list; }
   576 inline auto FWidget::setAcceleratorList() & -> FAcceleratorList&
   577 { 
return accelerator_list; }
   580 inline auto FWidget::getStatusbarMessage() 
const -> 
FString   581 { 
return statusbar_message; }
   584 inline auto FWidget::getForegroundColor() 
const noexcept -> FColor
   585 { 
return foreground_color; }
   588 inline auto FWidget::getBackgroundColor() 
const noexcept -> FColor
   589 { 
return background_color; }
   592 inline auto FWidget::getX() 
const -> 
int     593 { 
return adjust_wsize.getX(); }
   596 inline auto FWidget::getY() 
const -> 
int     597 { 
return adjust_wsize.getY(); }
   600 inline auto FWidget::getPos() 
const -> 
FPoint     602   const FPoint& pos = adjust_wsize.getPos();  
   607 inline auto FWidget::getTermX() 
const -> 
int     608 { 
return woffset.getX1() + adjust_wsize.getX(); }
   611 inline auto FWidget::getTermY() 
const -> 
int     612 { 
return woffset.getY1() + adjust_wsize.getY(); }
   615 inline auto FWidget::getTermPos() 
const -> 
FPoint     616 { 
return {getTermX(), getTermY()}; }
   619 inline auto FWidget::getWidth() 
const -> std::size_t
   620 { 
return adjust_wsize.getWidth(); }
   623 inline auto FWidget::getHeight() 
const -> std::size_t
   624 { 
return adjust_wsize.getHeight(); }
   627 inline auto FWidget::getSize() 
const -> 
FSize   629   const FSize& size = adjust_wsize.getSize();  
   634 inline auto FWidget::getTopPadding() 
const noexcept -> 
int   635 { 
return padding.top; }
   638 inline auto FWidget::getLeftPadding() 
const noexcept -> 
int   639 { 
return padding.left; }
   642 inline auto FWidget::getBottomPadding() 
const noexcept -> 
int   643 { 
return padding.bottom; }
   646 inline auto FWidget::getRightPadding() 
const noexcept -> 
int   647 { 
return padding.right; }
   650 inline auto FWidget::getClientWidth() 
const -> std::size_t
   651 { 
return wclient_offset.getWidth(); }
   654 inline auto FWidget::getClientHeight() 
const -> std::size_t
   655 { 
return wclient_offset.getHeight(); }
   658 inline auto FWidget::getClientSize() 
const -> 
FSize   660   const FSize& size = wclient_offset.getSize();  
   665 inline auto FWidget::getMaxWidth() 
const -> std::size_t
   666 { 
return woffset.getWidth(); }
   669 inline auto FWidget::getMaxHeight() 
const -> std::size_t
   670 { 
return woffset.getHeight(); }
   673 inline auto FWidget::getShadow() 
const & -> 
const FSize&
   677 inline auto FWidget::getGeometry() 
const & -> 
const FRect&
   678 { 
return adjust_wsize; }
   681 inline auto FWidget::getGeometryWithShadow() & -> 
const FRect&
   683   adjust_wsize_shadow.setCoordinates
   685     adjust_wsize.x1_ref(),
   686     adjust_wsize.y1_ref(),
   687     adjust_wsize.x2_ref() + int(wshadow.width_ref()),
   688     adjust_wsize.y2_ref() + int(wshadow.height_ref())
   691   return adjust_wsize_shadow;
   695 inline auto FWidget::getTermGeometry() & -> 
const FRect&
   697   adjust_wsize_term.setCoordinates
   699     adjust_wsize.x1_ref() + woffset.x1_ref(),
   700     adjust_wsize.y1_ref() + woffset.y1_ref(),
   701     adjust_wsize.x2_ref() + woffset.x1_ref(),
   702     adjust_wsize.y2_ref() + woffset.y1_ref()
   705   return adjust_wsize_term;
   709 inline auto FWidget::getTermGeometryWithShadow() & -> 
const FRect&
   711   adjust_wsize_term_shadow.setCoordinates
   713     adjust_wsize.x1_ref() + woffset.x1_ref(),
   714     adjust_wsize.y1_ref() + woffset.y1_ref(),
   715     adjust_wsize.x2_ref() + woffset.x1_ref() + int(wshadow.width_ref()),
   716     adjust_wsize.y2_ref() + woffset.y1_ref() + int(wshadow.height_ref())
   719   return adjust_wsize_term_shadow;
   723 inline auto FWidget::getDesktopWidth() 
const -> std::size_t
   724 { 
return FVTerm::getFOutput()->getColumnNumber(); }
   727 inline auto FWidget::getDesktopHeight() 
const -> std::size_t
   728 { 
return FVTerm::getFOutput()->getLineNumber(); }
   731 inline auto FWidget::getFlags() 
const & -> 
const FWidgetFlags&
   735 inline auto FWidget::getCursorPos() 
const -> 
FPoint   736 { 
return widget_cursor_position; }
   739 inline void FWidget::setActiveWindow (
FWidget* obj)
   740 { active_window = obj; }
   743 inline void FWidget::setFocusWidget (
FWidget* obj)
   744 { focus_widget = obj; }
   747 inline void FWidget::setClickedWidget (
FWidget* obj)
   748 { clicked_widget = obj; }
   751 inline void FWidget::setOpenMenu (
FWidget* obj)
   755 template <
typename ClassT>
   756 inline void FWidget::setColorTheme()
   758   getColorTheme() = std::make_shared<ClassT>();
   762 inline void FWidget::setMoveSizeWidget (
FWidget* obj)
   763 { move_resize_widget = obj; }
   766 inline void FWidget::setStatusbarMessage (
const FString& msg)
   767 { statusbar_message = msg; }
   770 inline void FWidget::unsetVisible()
   771 { setVisible(
false); }
   774 inline void FWidget::unsetEnable()
   775 { setEnable(
false); }
   778 inline void FWidget::setDisable()
   779 { setEnable(
false); }
   782 inline void FWidget::setVisibleCursor (
bool enable)
   783 { flags.visibility.visible_cursor = enable; }
   786 inline void FWidget::unsetVisibleCursor()
   787 { setVisibleCursor(
false); }
   790 inline auto FWidget::unsetFocus() -> 
bool   791 { 
return setFocus(
false, FocusTypes::DefiniteWidget); }
   794 inline void FWidget::setFocusable (
bool enable)
   795 { flags.focus.focusable = enable; }
   798 inline void FWidget::unsetFocusable()
   799 { flags.focus.focusable = 
false; }
   802 inline auto FWidget::ignorePadding (
bool enable) -> 
bool   803 { 
return (flags.feature.ignore_padding = enable); }
   806 inline auto FWidget::acceptPadding() -> 
bool   807 { 
return (flags.feature.ignore_padding = 
false); }
   810 inline void FWidget::setForegroundColor (FColor color)
   813   if ( color == FColor::Default || (color >> 8) == FColor::Black )
   814     foreground_color = color;
   818 inline void FWidget::setBackgroundColor (FColor color)
   821   if ( color == FColor::Default || (color >> 8) == FColor::Black )
   822     background_color = color;
   833 inline void FWidget::setGeometry (
const FRect& box, 
bool adjust)
   835   setGeometry (box.getPos(), box.getSize(), adjust);
   839 inline void FWidget::setShadowSize (
const FSize& size)
   842   wshadow.setSize (size);
   846 inline void FWidget::setMinimumWidth (std::size_t min_width)
   847 { size_hints.setMinimum (
FSize(min_width, size_hints.min_height)); }
   850 inline void FWidget::setMinimumHeight (std::size_t min_height)
   851 { size_hints.setMinimum (
FSize(size_hints.min_width, min_height)); }
   854 inline void FWidget::setMinimumSize (
const FSize& size)
   857   size_hints.setMinimum (size);
   861 inline void FWidget::setMaximumWidth (std::size_t max_width)
   862 { size_hints.setMaximum (
FSize(max_width, size_hints.max_height)); }
   865 inline void FWidget::setMaximumHeight (std::size_t max_height)
   866 { size_hints.setMaximum (
FSize(size_hints.max_width, max_height)); }
   869 inline void FWidget::setMaximumSize (
const FSize& size)
   872   size_hints.setMaximum (size);
   876 inline void FWidget::setFixedSize (
const FSize& size)
   880   size_hints.setMinimum (size);
   881   size_hints.setMaximum (size);
   885 inline void FWidget::unsetCursorPos()
   886 { setCursorPos ({-1, -1}); }
   889 inline void FWidget::unsetDoubleFlatLine (Side side)
   890 { setDoubleFlatLine(side, 
false); }
   893 inline void FWidget::unsetDoubleFlatLine (Side side, 
int pos)
   894 { setDoubleFlatLine(side, pos, 
false); }
   897 inline auto FWidget::isRootWidget() 
const -> 
bool   898 { 
return (! hasParent()); }
   901 inline auto FWidget::isVisible() 
const -> 
bool   902 { 
return flags.visibility.visible; }
   905 inline auto FWidget::isShown() 
const -> 
bool   906 { 
return flags.visibility.shown; }
   909 inline auto FWidget::isHidden() 
const -> 
bool   910 { 
return flags.visibility.hidden; }
   913 inline auto FWidget::isWindowWidget() 
const -> 
bool   914 { 
return flags.type.window_widget; }
   917 inline auto FWidget::isDialogWidget() 
const -> 
bool   918 { 
return flags.type.dialog_widget; }
   921 inline auto FWidget::isMenuWidget() 
const -> 
bool   922 { 
return flags.type.menu_widget; }
   925 inline auto FWidget::isEnabled() 
const -> 
bool   926 { 
return flags.feature.active; }
   929 inline auto FWidget::hasVisibleCursor() 
const -> 
bool   930 { 
return flags.visibility.visible_cursor; }
   933 inline auto FWidget::hasFocus() 
const -> 
bool   934 { 
return flags.focus.focus; }
   937 inline auto FWidget::acceptFocus() 
const -> 
bool     938 { 
return flags.focus.focusable; }
   941 inline auto FWidget::isPaddingIgnored() 
const -> 
bool   942 { 
return flags.feature.ignore_padding; }
   945 inline void FWidget::clearStatusbarMessage()
   946 { statusbar_message.clear(); }
   949 template <
typename... Args>
   950 inline void FWidget::addCallback (
FString&& cb_signal, Args&&... args) & noexcept
   952   callback_impl.addCallback (std::move(cb_signal), std::forward<Args>(args)...);
   956 template <
typename... Args>
   957 inline void FWidget::delCallback (Args&&... args) & noexcept
   959   callback_impl.delCallback(std::forward<Args>(args)...);
   963 inline void FWidget::emitCallback (
const FString& emit_signal) 
const &
   965   callback_impl.emitCallback(emit_signal);
   969 inline void FWidget::addAccelerator (FKey key) &
   970 { addAccelerator (key, 
this); }
   973 inline void FWidget::delAccelerator() &
   974 { delAccelerator(
this); }
   977 inline auto FWidget::termToWidgetPos (
const FPoint& tPos) 
const -> 
FPoint   979   return { tPos.getX() + 1 - woffset.getX1() - adjust_wsize.getX()
   980          , tPos.getY() + 1 - woffset.getY1() - adjust_wsize.getY() };
   984 inline void FWidget::print (
const FPoint& pos)
   990 inline void FWidget::drawBorder()
   992   finalcut::drawBorder (
this, 
FRect(
FPoint{1, 1}, getSize()));
   996 inline auto FWidget::getModalDialogCounter() -> uInt
   997 { 
return modal_dialog_counter; }
  1000 inline auto FWidget::getDialogList() -> FWidgetList*&
  1001 { 
return dialog_list; }
  1004 inline auto FWidget::getAlwaysOnTopList() -> FWidgetList*&
  1005 { 
return always_on_top_list; }
  1008 inline auto FWidget::getWidgetCloseList() -> FWidgetList*&
  1009 { 
return close_widget_list; }
  1012 inline auto FWidget::setModalDialogCounter() -> uInt&
  1013 { 
return modal_dialog_counter; }
  1016 inline void FWidget::processDestroy()
 const  1017 { emitCallback(
"destroy"); }
  1022 constexpr 
wchar_t NF_menu_button[]
  1024   wchar_t(UniChar::NF_rev_menu_button1),
  1025   wchar_t(UniChar::NF_rev_menu_button2),
  1026   wchar_t(UniChar::NF_rev_menu_button3),
  1030 constexpr 
wchar_t NF_button_up[]
  1032   wchar_t(UniChar::NF_rev_up_pointing_triangle1),
  1033   wchar_t(UniChar::NF_rev_up_pointing_triangle2),
  1037 constexpr 
wchar_t NF_button_down[]
  1039   wchar_t(UniChar::NF_rev_down_pointing_triangle1),
  1040   wchar_t(UniChar::NF_rev_down_pointing_triangle2),
  1044 constexpr 
wchar_t NF_button_arrow_up[]
  1046   wchar_t(UniChar::NF_rev_up_arrow1),
  1047   wchar_t(UniChar::NF_rev_up_arrow2),
  1051 constexpr 
wchar_t NF_button_arrow_down[]
  1053   wchar_t(UniChar::NF_rev_down_arrow1),
  1054   wchar_t(UniChar::NF_rev_down_arrow2),
  1058 constexpr 
wchar_t NF_button_arrow_left[]
  1060   wchar_t(UniChar::NF_rev_left_arrow1),
  1061   wchar_t(UniChar::NF_rev_left_arrow2),
  1065 constexpr 
wchar_t NF_button_arrow_right[]
  1067   wchar_t(UniChar::NF_rev_right_arrow1),
  1068   wchar_t(UniChar::NF_rev_right_arrow2),
  1072 constexpr 
wchar_t NF_Drive[]
  1074   wchar_t(UniChar::NF_shadow_box_left),
  1075   wchar_t(UniChar::NF_shadow_box_middle),
  1076   wchar_t(UniChar::NF_shadow_box_hdd),
  1077   wchar_t(UniChar::NF_shadow_box_right),
  1081 constexpr 
wchar_t NF_CD_ROM[]
  1083   wchar_t(UniChar::NF_shadow_box_left),
  1084   wchar_t(UniChar::NF_shadow_box_middle),
  1085   wchar_t(UniChar::NF_shadow_box_cd),
  1086   wchar_t(UniChar::NF_shadow_box_right),
  1090 constexpr 
wchar_t NF_Net_Drive[]
  1092   wchar_t(UniChar::NF_shadow_box_left),
  1093   wchar_t(UniChar::NF_shadow_box_middle),
  1094   wchar_t(UniChar::NF_shadow_box_net),
  1095   wchar_t(UniChar::NF_shadow_box_right),
  1099 constexpr 
wchar_t CHECKBOX[]
  1101   wchar_t(UniChar::NF_shadow_box_left),
  1102   wchar_t(UniChar::NF_shadow_box_middle),
  1103   wchar_t(UniChar::NF_shadow_box_right),
  1107 constexpr 
wchar_t CHECKBOX_ON[]
  1109   wchar_t(UniChar::NF_shadow_box_left),
  1110   wchar_t(UniChar::NF_shadow_box_checked),
  1111   wchar_t(UniChar::NF_shadow_box_right),
  1115 constexpr 
wchar_t RADIO_BUTTON[]
  1117   wchar_t(UniChar::NF_radio_button1),
  1118   wchar_t(UniChar::NF_radio_button2),
  1119   wchar_t(UniChar::NF_radio_button3),
  1123 constexpr 
wchar_t CHECKED_RADIO_BUTTON[]
  1125   wchar_t(UniChar::NF_radio_button1),
  1126   wchar_t(UniChar::NF_radio_button2_checked),
  1127   wchar_t(UniChar::NF_radio_button3),
 
Definition: fstatusbar.h:187
 
Definition: fcallback.h:85
 
Definition: class_template.cpp:25