00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef FXCOMBOBOXEX_H
00024 #define FXCOMBOBOXEX_H
00025
00026 #ifndef FXPACKER_H
00027 #include <fox/FXPacker.h>
00028 using namespace FX;
00029 #endif
00030 namespace FXEX {
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 class FXAPI FXComboBoxEx : public FXPacker {
00041 FXDECLARE(FXComboBoxEx)
00042 protected:
00043 FXTextField *field;
00044 FXMenuButton *button;
00045 FXIconList *list;
00046 FXPopup *pane;
00047
00048 FXint numvisible;
00049 private:
00050
00051 static FXString getTextUntilFirstTab(const FXString& in);
00052 protected:
00053 FXComboBoxEx(){}
00054 virtual void layout();
00055 private:
00056 FXComboBoxEx(const FXComboBoxEx&);
00057 FXComboBoxEx &operator=(const FXComboBoxEx&);
00058 public:
00059 long onFocusUp(FXObject*,FXSelector,void*);
00060 long onFocusDown(FXObject*,FXSelector,void*);
00061 long onFocusSelf(FXObject*,FXSelector,void*);
00062 long onTextButton(FXObject*,FXSelector,void*);
00063 long onTextChanged(FXObject*,FXSelector,void*);
00064 long onTextCommand(FXObject*,FXSelector,void*);
00065 long onListClicked(FXObject*,FXSelector,void*);
00066 long onFwdToText(FXObject*,FXSelector,void*);
00067 long onUpdFmText(FXObject*,FXSelector,void*);
00068 public:
00069 enum {
00070 ID_LIST=FXPacker::ID_LAST,
00071 ID_TEXT,
00072 ID_LAST
00073 };
00074 public:
00075
00076
00077 FXComboBoxEx(FXComposite *p,FXint cols,FXint nvis,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=COMBOBOX_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);
00078
00079
00080 virtual void create();
00081
00082
00083 virtual void detach();
00084
00085
00086 virtual void destroy();
00087
00088
00089 virtual void enable();
00090
00091
00092 virtual void disable();
00093
00094
00095 virtual FXint getDefaultWidth();
00096
00097
00098 virtual FXint getDefaultHeight();
00099
00100
00101 FXbool isEditable() const;
00102
00103
00104 void setEditable(FXbool edit=TRUE);
00105
00106
00107 void setText(const FXString& text);
00108
00109
00110 FXString getText() const;
00111
00112
00113 void setNumColumns(FXint cols);
00114
00115
00116 FXint getNumColumns() const;
00117
00118
00119 FXint getNumItems() const;
00120
00121
00122 FXint getNumVisible() const;
00123
00124
00125
00126 void setNumVisible(FXint nvis);
00127
00128
00129 FXbool isItemCurrent(FXint index) const;
00130
00131
00132 void setCurrentItem(FXint indexz);
00133
00134
00135 FXint getCurrentItem() const;
00136
00137
00138 FXString getItem(FXint index) const;
00139
00140
00141 void setItem(FXint index,const FXString& text,void* ptr=NULL);
00142
00143
00144 void insertItem(FXint index,const FXString& text,void* ptr=NULL);
00145
00146
00147 void appendItem(const FXString& text,void* ptr=NULL);
00148
00149
00150 void prependItem(const FXString& text,void* ptr=NULL);
00151
00152
00153 void setItem(FXint index,FXIconItem* item);
00154
00155
00156 void insertItem(FXint index,FXIconItem* item);
00157
00158
00159 void appendItem(FXIconItem* item);
00160
00161
00162 void prependItem(FXIconItem* item);
00163
00164
00165 void removeItem(FXint index);
00166
00167
00168 void clearItems();
00169
00170
00171 void appendHeader(const FXString& text,FXIcon *icon,FXint size) {
00172 list->appendHeader(text,icon,size);
00173 recalc();
00174 }
00175
00176
00177 void removeHeader(FXint index) {
00178 list->removeHeader(index);
00179 recalc();
00180 }
00181
00182
00183 void setHeaderText(FXint index,const FXString& text) {
00184 list->setHeaderText(index, text);
00185 }
00186
00187
00188 FXString getHeaderText(FXint index) const {
00189 return list->getHeaderText(index);
00190 }
00191
00192
00193 void setHeaderIcon(FXint index,FXIcon *icon) {
00194 list->setHeaderIcon(index,icon);
00195 }
00196
00197
00198 FXIcon* getHeaderIcon(FXint index) const {
00199 return list->getHeaderIcon(index);
00200 }
00201
00202
00203 void setHeaderSize(FXint index,FXint size) {
00204 list->setHeaderSize(index,size);
00205 recalc();
00206 }
00207
00208
00209 FXint getHeaderSize(FXint index) const {
00210 return list->getHeaderSize(index);
00211 }
00212
00213
00214 FXint getNumHeaders() const {
00215 return list->getNumHeaders();
00216 }
00217
00218
00219
00220
00221
00222 FXint findItem(const FXString& text,FXint start=-1,FXuint flags=SEARCH_FORWARD|SEARCH_WRAP) const;
00223
00224
00225 void setItemText(FXint index,const FXString& text);
00226
00227
00228 FXString getItemText(FXint index) const;
00229
00230
00231 void setItemData(FXint index,void* ptr) const;
00232
00233
00234 void* getItemData(FXint index) const;
00235
00236
00237 FXbool isPaneShown() const;
00238
00239
00240 void sortItems();
00241
00242
00243 void setFont(FXFont* fnt);
00244
00245
00246 FXFont* getFont() const;
00247
00248
00249 void setComboStyle(FXuint mode);
00250
00251
00252 FXuint getComboStyle() const;
00253
00254
00255 virtual void setBackColor(FXColor clr);
00256
00257
00258 FXColor getBackColor() const;
00259
00260
00261 void setTextColor(FXColor clr);
00262
00263
00264 FXColor getTextColor() const;
00265
00266
00267 void setSelBackColor(FXColor clr);
00268
00269
00270 FXColor getSelBackColor() const;
00271
00272
00273 void setSelTextColor(FXColor clr);
00274
00275
00276 FXColor getSelTextColor() const;
00277
00278
00279 FXIconListSortFunc getSortFunc() const;
00280
00281
00282 void setSortFunc(FXIconListSortFunc func);
00283
00284
00285 void setHelpText(const FXString& txt);
00286
00287
00288 FXString getHelpText() const;
00289
00290
00291 void setTipText(const FXString& txt);
00292
00293
00294 FXString getTipText() const;
00295
00296
00297 virtual void save(FXStream& store) const;
00298
00299
00300 virtual void load(FXStream& store);
00301
00302
00303 virtual ~FXComboBoxEx();
00304 };
00305 }
00306
00307 #endif