|
Main Page
Class Hierarchy
Alphabetical List
Compound List
File List
Compound Members
|
00001 /*******************************************************************************
00002 * *
00003 * B a s k e t L i s t B o x O b j e c t *
00004 * *
00005 ********************************************************************************
00006 * Copyright (C) 2002 by Bryan W. Headley. All Rights Reserved. *
00007 * *
00008 * Based on FOX Toolkit, Copyright (C) 1997,2002 Jeroen van der Zijp. *
00009 ********************************************************************************
00010 * This library is free software; you can redistribute it and/or *
00011 * modify it under the terms of the GNU Lesser General Public *
00012 * License as published by the Free Software Foundation; either *
00013 * version 2.1 of the License, or (at your option) any later version. *
00014 * *
00015 * This library is distributed in the hope that it will be useful, *
00016 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
00018 * Lesser General Public License for more details. *
00019 * *
00020 * You should have received a copy of the GNU Lesser General Public *
00021 * License along with this library; if not, write to the Free Software *
00022 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
00023 ********************************************************************************
00024 * $Id: FXBasketListBox.h,v 0.00 2002/08/07 00:00:00 bwheadley Exp $ *
00025 *******************************************************************************/
00026 #ifndef FXBASKETLISTBOX_H
00027 #define FXBASKETLISTBOX_H
00028
00029 #ifndef FXPACKER_H
00030 #include <fox/FXPacker.h>
00031 using namespace FX;
00032 #endif
00033 namespace FXEX {
00034
00035 /// List Box styles
00036 enum {
00037 BASKETLISTBOX_ORIENT_HORIZONTAL= 0x10000000,
00038 BASKETLISTBOX_ORIENT_VERTICAL = 0x20000000,
00039 BASKETLISTBOX_NORMAL = (FRAME_SUNKEN|FRAME_THICK|BASKETLISTBOX_ORIENT_HORIZONTAL),
00040 };
00041
00042 /// List Box
00043 class FXAPI FXBasketListBox : public FXPacker {
00044 FXDECLARE(FXBasketListBox)
00045 protected:
00046 FXIcon* basketIcon;
00047 FXButton* field;
00048 FXMenuButton* button;
00049 FXList* basketList;
00050 FXList* selectionList;
00051 FXPopup* pane;
00052 FXButton* doneButton;
00053 FXVerticalFrame* vframe;
00054 FXHorizontalFrame* hframe;
00055 FXVerticalFrame* vframe1;
00056 FXVerticalFrame* vframe2;
00057 FXLabel* label1;
00058 FXLabel* label2;
00059 FXuint options;
00060
00061 protected:
00062 FXBasketListBox(){}
00063 virtual void layout();
00064
00065 private:
00066 FXBasketListBox(const FXBasketListBox&);
00067 FXBasketListBox &operator=(const FXBasketListBox&);
00068
00069 public:
00070 // Available callbacks on the basketList
00071 long onBasketListFocusUp(FXObject*,FXSelector,void*);
00072 long onBasketListFocusDown(FXObject*,FXSelector,void*);
00073 long onBasketListUpdate(FXObject*,FXSelector,void*);
00074 long onBasketListChanged(FXObject*,FXSelector,void*);
00075 long onBasketListClicked(FXObject*,FXSelector,void*);
00076
00077 // Available callbacks on the selectionList
00078 long onSelectionListFocusUp(FXObject*,FXSelector,void*);
00079 long onSelectionListFocusDown(FXObject*,FXSelector,void*);
00080 long onSelectionListUpdate(FXObject*,FXSelector,void*);
00081 long onSelectionListChanged(FXObject*,FXSelector,void*);
00082 long onSelectionListClicked(FXObject*,FXSelector,void*);
00083
00084 long onFocusSelf(FXObject*,FXSelector,void*);
00085 long onFieldButton(FXObject*,FXSelector,void*);
00086 long onDoneButton(FXObject*,FXSelector,void*);
00087 long onCmdGetValue(FXObject*,FXSelector,void*);
00088 long onCmdSetValue(FXObject*,FXSelector,void*);
00089 long onCmdGetIntValue(FXObject*,FXSelector,void*);
00090 long onCmdSetIntValue(FXObject*,FXSelector,void*);
00091
00092 public:
00093 enum {
00094 ID_SELECTIONLIST=FXPacker::ID_LAST,
00095 ID_BASKETLIST,
00096 ID_FIELD,
00097 ID_DONE,
00098 ID_LAST
00099 };
00100 public:
00101
00102 /// Specify the number of visible items
00103 FXBasketListBox(FXComposite *p,FXint nvis,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=BASKETLISTBOX_NORMAL,FXint x=0,FXint y=0,FXint w=0,FXint h=0,FXint pl=DEFAULT_PAD,FXint pr=DEFAULT_PAD,FXint pt=DEFAULT_PAD,FXint pb=DEFAULT_PAD);
00104
00105 /// Create server-side resources
00106 virtual void create();
00107
00108 /// Detach server-side resources
00109 virtual void detach();
00110
00111 /// Destroy server-side resources
00112 virtual void destroy();
00113
00114 /// Enable drive box
00115 virtual void enable();
00116
00117 /// Disable drive box
00118 virtual void disable();
00119
00120 /// Return default width
00121 virtual FXint getDefaultWidth();
00122
00123 /// Return default height
00124 virtual FXint getDefaultHeight();
00125
00126 /// Set values for the widget.
00127 void setValues(const FXStringList& list);
00128
00129 /// Get values for the widget.
00130 FXStringList getValues() const;
00131
00132 // I'm trying to implement a "like" API to FXListBox and FXComboBox,
00133 // two similar widgets. To do that, I assume that the first parameter
00134 // to these methods, the FXList*, points to the selection FXList.
00135 // For the above two widgets, that's the only FXList*; the FXBasketListBox
00136 // has two. Yes, I could have done the same with a series of inlines,
00137 // but opted against namespace pollution. Sometimes, below, I had no
00138 // choice but to implement pass-thru's. I am so ashamed :-)
00139
00140 /**
00141 * Return the number of items in the list.
00142 * If list is not specified, use the selection list.
00143 */
00144 FXint getNumItems(FXList* list=NULL) const;
00145
00146 /**
00147 * Return the number of visible items.
00148 * If list is not specified, use the selection list.
00149 */
00150 FXint getNumVisible(FXList* list=NULL) const;
00151
00152 /**
00153 * Set the number of visible items.
00154 * If list is not specified, use the selection list.
00155 */
00156 void setNumVisible(FXint nvis,FXList* list=NULL);
00157
00158 /**
00159 * Return true if current item.
00160 * If list is not specified, use the selection list.
00161 */
00162 FXbool isItemCurrent(FXint index,FXList* list=NULL) const;
00163
00164 /**
00165 * Set the current item (index is zero-based).
00166 * If list is not specified, use the selection list.
00167 */
00168 void setCurrentItem(FXint index,FXList* list=NULL);
00169
00170 /**
00171 * Get the current item's index.
00172 * If list is not specified, use the selection list.
00173 */
00174 FXint getCurrentItem(FXList* list=NULL) const;
00175
00176 /**
00177 * Return the item at the given index.
00178 * If list is not specified, use the selection list.
00179 */
00180 FXString getItem(FXint index,FXList* list=NULL) const;
00181
00182 /**
00183 * Replace the item at index.
00184 * If list is not specified, use the selection list.
00185 */
00186 void setItem(FXint index,const FXString& text,FXIcon* icon=NULL,void* ptr=NULL,FXList* list=NULL);
00187
00188 /**
00189 * Insert a new item at index.
00190 * If list is not specified, use the selection list.
00191 */
00192 void insertItem(FXint index,const FXString& text,FXIcon* icon=NULL,void* ptr=NULL,FXList* list=NULL);
00193
00194 /**
00195 * Add an item to the end of the list.
00196 * If list is not specified, use the selection list.
00197 */
00198 void appendItem(const FXString& text,FXIcon* icon=NULL,void* ptr=NULL,FXList* list=NULL);
00199
00200 /**
00201 * Prepend an item to the list.
00202 * If list is not specified, use the selection list.
00203 */
00204 void prependItem(const FXString& text,FXIcon* icon=NULL,void* ptr=NULL,FXList* list=NULL);
00205
00206 /**
00207 * Remove this item from the list.
00208 * If list is not specified, use the selection list.
00209 */
00210 void removeItem(FXint index,FXList* list=NULL);
00211
00212 /**
00213 * Remove all items from the list.
00214 * If list is not specified, use the selection list.
00215 */
00216 void clearItems(FXList* list=NULL);
00217
00218 /**
00219 * Search items for item by name, starting from start item; the
00220 * flags argument controls the search direction, and case sensitivity.
00221 * If list is not specified, use the selection list.
00222 */
00223 FXint findItem(const FXString& text,FXint start=-1,FXuint flags=SEARCH_FORWARD|SEARCH_WRAP,FXList* list=NULL) const;
00224
00225 /**
00226 * Set text for specified item
00227 * If list is not specified, use the selection list.
00228 */
00229 void setItemText(FXint index,const FXString& text,FXList* list=NULL);
00230
00231 /**
00232 * Get text for specified item
00233 * If list is not specified, use the selection list.
00234 */
00235 FXString getItemText(FXint index,FXList* list=NULL) const;
00236
00237 /**
00238 * Change item icon
00239 * If list is not specified, use the selection list.
00240 */
00241 void setItemIcon(FXint index,FXIcon* icon,FXList* list=NULL);
00242
00243 /**
00244 * Return icon of item at index
00245 * If list is not specified, use the selection list.
00246 */
00247 FXIcon* getItemIcon(FXint index,FXList* list=NULL) const;
00248
00249 /**
00250 * Set data pointer for specified item
00251 * If list is not specified, use the selection list.
00252 */
00253 void setItemData(FXint index,void* ptr,FXList* list=NULL) const;
00254
00255 /**
00256 * Get data pointer for specified item
00257 * If list is not specified, use the selection list.
00258 */
00259 void* getItemData(FXint index,FXList* list=NULL) const;
00260
00261 /**
00262 * Is the pane shown
00263 * If list is not specified, use the selection list.
00264 */
00265 FXbool isPaneShown(FXList* list=NULL) const;
00266
00267 /**
00268 * Sort items using current sort function
00269 * If list is not specified, use the selection list.
00270 */
00271 void sortItems(FXList* list=NULL);
00272
00273 /**
00274 * Set text font
00275 * If list is not specified, use the selection list.
00276 */
00277 void setFont(FXFont* fnt,FXList* list=NULL);
00278
00279 /**
00280 * Get text font
00281 * If list is not specified, use the selection list.
00282 */
00283 FXFont* getFont(FXList* list=NULL) const;
00284
00285 /**
00286 * Set window background color
00287 * If list is not specified, use the selection list.
00288 */
00289 void setBackColor(FXColor clr,FXList* list=NULL);
00290
00291 /**
00292 * Get background color
00293 * If list is not specified, use the selection list.
00294 */
00295 FXColor getBackColor(FXList* list=NULL) const;
00296
00297 /**
00298 * Change text color
00299 * If list is not specified, use the selection list.
00300 */
00301 void setTextColor(FXColor clr,FXList* list=NULL);
00302
00303 /**
00304 * Return text color
00305 * If list is not specified, use the selection list.
00306 */
00307 FXColor getTextColor(FXList* list=NULL) const;
00308
00309 /**
00310 * Change selected background color
00311 * If list is not specified, use the selection list.
00312 */
00313 void setSelBackColor(FXColor clr,FXList* list=NULL);
00314
00315 /**
00316 * Return selected background color
00317 * If list is not specified, use the selection list.
00318 */
00319 FXColor getSelBackColor(FXList* list=NULL) const;
00320
00321 /**
00322 * Change selected text color
00323 * If list is not specified, use the selection list.
00324 */
00325 void setSelTextColor(FXColor clr,FXList* list=NULL);
00326
00327 /**
00328 * Return selected text color
00329 * If list is not specified, use the selection list.
00330 */
00331 FXColor getSelTextColor(FXList* list=NULL) const;
00332
00333 /**
00334 * Return sort function
00335 * If list is not specified, use the selection list.
00336 */
00337 FXListSortFunc getSortFunc(FXList* list=NULL) const;
00338
00339 /**
00340 * Change sort function
00341 * If list is not specified, use the selection list.
00342 */
00343 void setSortFunc(FXListSortFunc func,FXList* list=NULL);
00344
00345 /// get access to basket list
00346 FXList* getBasketList() { return basketList; }
00347
00348 /// get access to selected list
00349 FXList* getSelectionList() { return selectionList; }
00350
00351 /// Set the combobox help text
00352 void setHelpText(const FXString& txt);
00353
00354 /// Get the combobox help text
00355 FXString getHelpText() const;
00356
00357 /// Set the tool tip message for this combobox
00358 void setTipText(const FXString& txt);
00359
00360 /// Get the tool tip message for this combobox
00361 FXString getTipText() const;
00362
00363 /// Save object to a stream
00364 virtual void save(FXStream& store) const;
00365
00366 /// Load object from a stream
00367 virtual void load(FXStream& store);
00368
00369 /// Destructor
00370 virtual ~FXBasketListBox();
00371 };
00372
00373 } // namespace FXEX
00374 #endif // FXBASKETLISTBOX_H