![]() |
Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members
![]() |
00001 /******************************************************************************** 00002 * * 00003 * T a b B a r W i d g e t * 00004 * * 00005 ********************************************************************************* 00006 * Copyright (C) 1997,2009 by Jeroen van der Zijp. All Rights Reserved. * 00007 ********************************************************************************* 00008 * This library is free software; you can redistribute it and/or modify * 00009 * it under the terms of the GNU Lesser General Public License as published by * 00010 * the Free Software Foundation; either version 3 of the License, or * 00011 * (at your option) any later version. * 00012 * * 00013 * This library is distributed in the hope that it will be useful, * 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00016 * GNU Lesser General Public License for more details. * 00017 * * 00018 * You should have received a copy of the GNU Lesser General Public License * 00019 * along with this program. If not, see <http://www.gnu.org/licenses/> * 00020 ********************************************************************************* 00021 * $Id: FXTabBar.h,v 1.22 2009/01/06 13:07:28 fox Exp $ * 00022 ********************************************************************************/ 00023 #ifndef FXTABBAR_H 00024 #define FXTABBAR_H 00025 00026 #ifndef FXPACKER_H 00027 #include "FXPacker.h" 00028 #endif 00029 00030 namespace FX { 00031 00032 00033 /// Tab Book options 00034 enum { 00035 TABBOOK_TOPTABS = 0, /// Tabs on top (default) 00036 TABBOOK_BOTTOMTABS = 0x00020000, /// Tabs on bottom 00037 TABBOOK_SIDEWAYS = 0x00040000, /// Tabs on left 00038 TABBOOK_LEFTTABS = TABBOOK_SIDEWAYS|TABBOOK_TOPTABS, /// Tabs on left 00039 TABBOOK_RIGHTTABS = TABBOOK_SIDEWAYS|TABBOOK_BOTTOMTABS, /// Tabs on right 00040 TABBOOK_NORMAL = TABBOOK_TOPTABS /// Normal tabs 00041 }; 00042 00043 00044 00045 /** 00046 * The tab bar layout manager arranges tab items side by side, 00047 * and raises the active tab item above the neighboring tab items. 00048 * In a the horizontal arrangement, the tab bar can have the tab 00049 * items on the top or on the bottom. In the vertical arrangement, 00050 * the tabs can be on the left or on the right. 00051 * When one of the tab items is pressed, the tab bar's setCurrent() 00052 * is called with notify=true. Thus causes the tab bar to send a 00053 * SEL_COMMAND message to its target. 00054 */ 00055 class FXAPI FXTabBar : public FXPacker { 00056 FXDECLARE(FXTabBar) 00057 protected: 00058 FXint current; // Current tab index 00059 FXint shift; // Shift amount 00060 protected: 00061 FXTabBar(){} 00062 private: 00063 FXTabBar(const FXTabBar&); 00064 FXTabBar& operator=(const FXTabBar&); 00065 public: 00066 long onPaint(FXObject*,FXSelector,void*); 00067 long onFocusNext(FXObject*,FXSelector,void*); 00068 long onFocusPrev(FXObject*,FXSelector,void*); 00069 long onFocusUp(FXObject*,FXSelector,void*); 00070 long onFocusDown(FXObject*,FXSelector,void*); 00071 long onFocusLeft(FXObject*,FXSelector,void*); 00072 long onFocusRight(FXObject*,FXSelector,void*); 00073 long onCmdOpenItem(FXObject*,FXSelector,void*); 00074 long onCmdSetValue(FXObject*,FXSelector,void*); 00075 long onCmdSetIntValue(FXObject*,FXSelector,void*); 00076 long onCmdGetIntValue(FXObject*,FXSelector,void*); 00077 long onCmdOpen(FXObject*,FXSelector,void*); 00078 long onUpdOpen(FXObject*,FXSelector,void*); 00079 public: 00080 enum { 00081 ID_OPEN_ITEM=FXPacker::ID_LAST, /// Sent from one of the FXTabItems 00082 ID_OPEN_FIRST, /// Switch to panel ID_OPEN_FIRST+i 00083 ID_OPEN_SECOND, 00084 ID_OPEN_THIRD, 00085 ID_OPEN_FOURTH, 00086 ID_OPEN_FIFTH, 00087 ID_OPEN_SIXTH, 00088 ID_OPEN_SEVENTH, 00089 ID_OPEN_EIGHTH, 00090 ID_OPEN_NINETH, 00091 ID_OPEN_TENTH, 00092 ID_OPEN_LAST=ID_OPEN_FIRST+100, 00093 ID_LAST 00094 }; 00095 public: 00096 00097 /// Construct a tab bar 00098 FXTabBar(FXComposite* p,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=TABBOOK_NORMAL,FXint x=0,FXint y=0,FXint w=0,FXint h=0,FXint pl=DEFAULT_SPACING,FXint pr=DEFAULT_SPACING,FXint pt=DEFAULT_SPACING,FXint pb=DEFAULT_SPACING); 00099 00100 /// Return default width 00101 virtual FXint getDefaultWidth(); 00102 00103 /// Return default height 00104 virtual FXint getDefaultHeight(); 00105 00106 /// Perform layout 00107 virtual void layout(); 00108 00109 /** 00110 * Change currently active tab item; this raises the active tab item 00111 * slightly above the neighboring tab items. If notify=true then the 00112 * tab bar will also send a SEL_COMMAND message to its target. 00113 */ 00114 virtual void setCurrent(FXint panel,FXbool notify=false); 00115 00116 /// Return the currently active tab item 00117 FXint getCurrent() const { return current; } 00118 00119 /// Return tab bar style 00120 FXuint getTabStyle() const; 00121 00122 /// Change tab tab style 00123 void setTabStyle(FXuint style); 00124 00125 /// Save to stream 00126 virtual void save(FXStream& store) const; 00127 00128 /// Load from stream 00129 virtual void load(FXStream& store); 00130 }; 00131 00132 } 00133 00134 #endif
![]() |