00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MFXEditableTable_h
00020 #define MFXEditableTable_h
00021
00022
00023
00024
00025
00026 #ifdef _MSC_VER
00027 #include <windows_config.h>
00028 #else
00029 #include <config.h>
00030 #endif
00031
00032 #include <fx.h>
00033 #include <set>
00034
00035 struct MFXEditedTableItem {
00036 FXTableItem *item;
00037 int row;
00038 int col;
00039 bool updateOnly;
00040 };
00041
00042 enum {
00043 EDITTABLE_NEXTROW = 0x02000000
00044 };
00045
00046
00047 class MFXEditableTable : public FXTable {
00048 FXDECLARE(MFXEditableTable)
00049 public:
00050 enum {
00051 ID_LABELEDIT=FXTable::ID_LAST,
00052 ID_EDITEND,
00053 ID_NEXTLINE,
00054 ID_EDITOR,
00055 ID_TEXT_CHANGED,
00056 ID_LAST
00057 };
00058 MFXEditableTable(FXComposite *p,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=0,FXint x=0,FXint y=0,FXint w=0,FXint h=0,FXint pl=DEFAULT_MARGIN,FXint pr=DEFAULT_MARGIN,FXint pt=DEFAULT_MARGIN,FXint pb=DEFAULT_MARGIN);
00059 ~MFXEditableTable();
00060
00061 public:
00062 long onLeftBtnPress(FXObject* sender, FXSelector sel, void* ptr);
00063 long onLeftBtnRelease(FXObject* sender, FXSelector sel, void* ptr);
00064 long onLeftBtnClicked(FXObject* sender, FXSelector sel, void* ptr);
00065
00066 virtual void editItem(FXTableItem* item,FXint how);
00067 virtual void editEnd();
00068 long onEditEnd(FXObject*,FXSelector,void*);
00069 virtual void editCancel();
00070 long onEditKeyPress(FXObject*,FXSelector,void* ptr);
00071 long onKeyRelease(FXObject* sender, FXSelector sel, void* ptr);
00072 long onEditFocusOut(FXObject*,FXSelector,void*);
00073
00074 long onRightBtnRelease(FXObject* sender, FXSelector sel, void* ptr);
00075
00076
00077 long onHScrollerChanged(FXObject *o,FXSelector s,void *d);
00078 long onVScrollerChanged(FXObject *o,FXSelector s,void *d);
00079 long onHScrollerDragged(FXObject *o,FXSelector s,void *d);
00080 long onVScrollerDragged(FXObject *o,FXSelector s,void *d);
00081
00082 long onAutoScroll(FXObject *o,FXSelector s,void *d);
00083 long onUngrabbed(FXObject *o,FXSelector s,void *d);
00084 long onRightBtnPress(FXObject *o,FXSelector s,void *d);
00085 long onTabKeyPress(FXObject *o,FXSelector s,void *d);
00086 long onTabKeyRelease(FXObject *o,FXSelector s,void *d);
00087 long onFocusIn(FXObject *o,FXSelector s,void *d);
00088 long onFocusOut(FXObject *o,FXSelector s,void *d);
00089 long onSelectionLost(FXObject *o,FXSelector s,void *d);
00090 long onSelectionGained(FXObject *o,FXSelector s,void *d);
00091 long onSelectionRequest(FXObject *o,FXSelector s,void *d);
00092 long onClipboardLost(FXObject *o,FXSelector s,void *d);
00093 long onClipboardGained(FXObject *o,FXSelector s,void *d);
00094 long onClipboardRequest(FXObject *o,FXSelector s,void *d);
00095 long onDoubleClicked(FXObject *o,FXSelector s,void *d);
00096 long onTripleClicked(FXObject *o,FXSelector s,void *d);
00097 long onCommand(FXObject *o,FXSelector s,void *d);
00098 long onUpdHorzGrid(FXObject *o,FXSelector s,void *d);
00099 long onUpdVertGrid(FXObject *o,FXSelector s,void *d);
00100 long onCmdHorzGrid(FXObject *o,FXSelector s,void *d);
00101 long onCmdVertGrid(FXObject *o,FXSelector s,void *d);
00102 long onCmdDeleteColumn(FXObject *o,FXSelector s,void *d);
00103 long onUpdDeleteColumn(FXObject *o,FXSelector s,void *d);
00104 long onCmdDeleteRow(FXObject *o,FXSelector s,void *d);
00105 long onUpdDeleteRow(FXObject *o,FXSelector s,void *d);
00106 long onCmdInsertColumn(FXObject *o,FXSelector s,void *d);
00107 long onCmdInsertRow(FXObject *o,FXSelector s,void *d);
00108
00109 long onCmdMoveLeft(FXObject *o,FXSelector s,void *d);
00110 long onCmdMoveRight(FXObject *o,FXSelector s,void *d);
00111 long onCmdMoveUp(FXObject *o,FXSelector s,void *d);
00112 long onCmdMoveDown(FXObject *o,FXSelector s,void *d);
00113 long onCmdMoveHome(FXObject *o,FXSelector s,void *d);
00114 long onCmdMoveEnd(FXObject *o,FXSelector s,void *d);
00115 long onCmdMoveTop(FXObject *o,FXSelector s,void *d);
00116 long onCmdMoveBottom(FXObject *o,FXSelector s,void *d);
00117 long onCmdMovePageDown(FXObject *o,FXSelector s,void *d);
00118 long onCmdMovePageUp(FXObject *o,FXSelector s,void *d);
00119
00120 long onCmdSelectRowIndex(FXObject *o,FXSelector s,void *d);
00121 long onCmdSelectColumnIndex(FXObject *o,FXSelector s,void *d);
00122 long onCmdSelectColumn(FXObject *o,FXSelector s,void *d);
00123 long onCmdSelectRow(FXObject *o,FXSelector s,void *d);
00124 long onCmdSelectCell(FXObject *o,FXSelector s,void *d);
00125 long onCmdSelectAll(FXObject *o,FXSelector s,void *d);
00126 long onCmdDeselectAll(FXObject *o,FXSelector s,void *d);
00127 long onCmdMark(FXObject *o,FXSelector s,void *d);
00128 long onCmdExtend(FXObject *o,FXSelector s,void *d);
00129
00130
00131 void writeProtectCol(int col, bool val=true);
00132
00133
00134 protected:
00135 FXTextField *myEditor;
00136 FXTableItem *myEditedItem;
00137 FXint myEditedCol, myEditedRow;
00138 std::set<int> myWriteProtectedCols;
00139 FXString myPreviousText;
00140
00141 protected:
00142 MFXEditableTable() { }
00143
00144 };
00145
00146
00147 #endif
00148
00149
00150