00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef __GADGET_H
00029 #define __GADGET_H
00030
00031 #include "types.h"
00032 #include "Bases.h"
00033 #include "Skin.h"
00034
00035
00036
00037
00038
00039
00040 #define GADST_COUNT 5
00041
00042 #define GADST_NORMAL (0)
00043 #define GADST_PRESSED (1)
00044 #define GADST_DISABLED (2)
00045 #define GADST_FOCUSED (3)
00046 #define GADST_DEFAULT (4)
00047 #define GADST_NONE GADST_COUNT
00048
00049 #define GADSTF_NORMAL (1L<<GADST_NORMAL)
00050 #define GADSTF_PRESSED (1L<<GADST_PRESSED)
00051 #define GADSTF_DISABLED (1L<<GADST_DISABLED)
00052 #define GADSTF_FOCUSED (1L<<GADST_FOCUSED)
00053 #define GADSTF_DEFAULT (1L<<GADST_DEFAULT)
00054
00055 #define GADGET_MAXIMUM_SIZE 0x1000
00056 #define GADGET_TAGBASE 0x1000
00057
00058 #define GADGET_ILLEGAL_ID 0
00059 #define GADGET_SYSBASE 0x6000
00060 #define GADGET_SUBGADGET_BASE 0x7000
00061 #define GADGET_NOID 0x8000
00062
00063 #define GADGET_DEFAULT_FONTNAME "Arial"
00064 #define GADGET_DEFAULT_FONTSIZE (16)
00065 #define GADGET_DEFAULT_FONTSTYLE (0L)
00066 #define GADGET_DEFAULT_FONTWEIGHT (0L)
00067 #define GADGET_DEFAULT_FONTDECORATION (0L)
00068
00069 #define GADGET_FONTSTYLE_ITALIC (1)
00070 #define GADGET_FONTWEIGHT_BOLD (1)
00071 #define GADGET_FONTDECORATION_UNDERLINED (1)
00072
00073 #define GADGET_DESCRIPTOR_DONE {-1,NULL,0,0,NULL}
00074
00075
00076 #define GADGET_CUS_BACKGROUND (1L<<0)
00077 #define GADGET_CUS_LAYOUT (1L<<1)
00078 #define GADGET_CUS_REFRESH (1L<<2)
00079
00080 #define GADGET_METHOD_DONE {NULL,NULL,0L}
00081 #define GADGET_METHOD_MAX_COUNT 512
00082 #define GADGET_METHOD_BASE 16
00083
00084 #define GADGET_METHOD_VOID (1L<<0)
00085
00086
00087 #define GADGET_LAYOUT_FREE 0
00088 #define GADGET_LAYOUT_FIXED 1
00089 #define GADGET_LAYOUT_SQUARE 2
00090
00091 #define TAG_GAD_HINT ((TAG_USER+1)|TAGT_STRING)
00092 #define TAG_GAD_FONTNAME ((TAG_USER+2)|TAGT_STRING)
00093 #define TAG_GAD_FONTSIZE (TAG_USER+3)
00094 #define TAG_GAD_FONTWEIGHT (TAG_USER+4)
00095 #define TAG_GAD_FONTSTYLE (TAG_USER+5)
00096 #define TAG_GAD_FONTDECORATION (TAG_USER+6)
00097 #define TAG_GAD_SKIN ((TAG_USER+7)|TAGT_STRING)
00098 #define TAG_GAD_WIDTH (TAG_USER+8)
00099 #define TAG_GAD_HEIGHT (TAG_USER+9)
00100 #define TAG_GAD_LAYOUT (TAG_USER+10)
00101 #define TAG_GAD_EXTMIN (TAG_USER+11)
00102 #define TAG_GAD_EXTMAX (TAG_USER+12)
00103 #define TAG_GAD_RECT (TAG_USER+13)
00104
00105
00106 #define TAG_GADGET_STATE_NAME ((TAG_USER+100)|TAGT_STRING)
00107 #define TAG_GADGET_CLASS_ID (TAG_USER+101)
00108 #define TAG_GADGET_NAME ((TAG_USER+102)|TAGT_STRING)
00109 #define TAG_GADGET_CLASS_DATA (TAG_USER+103)
00110 #define TAG_GADGET_GADGET_SIZE (TAG_USER+104)
00111 #define TAG_GADGET_METHODS (TAG_USER+105)
00112 #define TAG_GADGET_BINDING (TAG_USER+106)
00113 #define TAG_GADGET_COLOR_NAMES (TAG_USER+107)
00114 #define TAG_GADGET_CUSTOM_NAMES (TAG_USER+108)
00115 #define TAG_GADGET_STATE_MASK (TAG_USER+109)
00116 #define TAG_GADGET_CLASS_NAME ((TAG_USER+110)|TAGT_STRING)
00117 #define TAG_GADGET_OBJECT (TAG_USER+111)
00118 #define TAG_GADGET_INDEX (TAG_USER+112)
00119 #define TAG_GADGET_ROOT (TAG_USER+113)
00120 #define TAG_GADGET_NEW_PARENT (TAG_USER+114)
00121 #define TAG_GADGET_NEW_CHILD (TAG_USER+115)
00122 #define TAG_GADGET_STATE (TAG_USER+116)
00123 #define TAG_GADGET_VISUAL (TAG_USER+117)
00124 #define TAG_GADGET_EVENT (TAG_USER+118)
00125 #define TAG_GADGET_SIZE (TAG_USER+119)
00126 #define TAG_GADGET_COLOR (TAG_USER+120)
00127 #define TAG_GADGET_DESCRIPTOR (TAG_USER+121)
00128 #define TAG_GADGET_WINDOW (TAG_USER+122)
00129 #define TAG_GADGET_PARENT (TAG_USER+123)
00130 #define TAG_GADGET_GADGET_ID (TAG_USER+124)
00131 #define TAG_GADGET_RECT (TAG_USER+125)
00132 #define TAG_GADGET_CUSTOM (TAG_USER+126)
00133 #define TAG_GADGET_FLAGS (TAG_USER+127)
00134 #define TAG_GADGET_HIDDEN (TAG_USER+128)
00135 #define TAG_GADGET_MIN (TAG_USER+129)
00136 #define TAG_GADGET_MAX (TAG_USER+130)
00137 #define TAG_GADGET_TAGLIST (TAG_USER+131)
00138 #define TAG_GADGET_EVENT_DATA (TAG_USER+132)
00139 #define TAG_GADGET_METHOD (TAG_USER+133)
00140 #define TAG_GADGET_MODULE (TAG_USER+134)
00141 #define TAG_GADGET_INPUT_EVENT_HANDLER (TAG_USER+135)
00142 #define TAG_GADGET_EVENT_HANDLER (TAG_USER+136)
00143 #define TAG_GADGET_GADGET_EVENT_HANDLER (TAG_USER+137)
00144 #define TAG_GADGET_MEM (TAG_USER+138)
00145 #define TAG_GADGET_LOCALE (TAG_USER+139)
00146 #define TAG_GADGET_VALUE ((TAG_USER+140)|TAGT_STRING)
00147 #define TAG_GADGET_TAGNAME (TAG_USER+141)
00148 #define TAG_GADGET_TAGVALUE (TAG_USER+142)
00149
00150
00151
00152 #define MET_GAD_SET_FONT (0)
00153 #define MET_GAD_SET_HINT (1)
00154 #define GADGET_METHOD_COUNT (2)
00155
00156
00157
00158
00159
00160 #define GAD_INVISIBLE (1L<<0)
00161
00162 #define GADGET_ILLEGAL_CLASS 0L
00163
00164
00165
00166
00167
00168 #define GAD_HIDDEN (1L<<0)
00169 #define GAD_LOCALIZE (1L<<1)
00170 #define GAD_ONSCREEN (1L<<2)
00171
00172
00173
00174 enum gadget_functions
00175 {
00176 GADGET_GET_STATE_NAME=GADGET_FUNCBASE,
00177 GADGET_REGISTER_CLASS,
00178 GADGET_FIND_CLASS,
00179 GADGET_FIND_CLASS_BY_NAME,
00180 GADGET_FATHER,
00181 GADGET_FIRST_CHILD,
00182 GADGET_LAST_CHILD,
00183 GADGET_NTH_CHILD,
00184 GADGET_LEFT_BROTHER,
00185 GADGET_RIGHT_BROTHER,
00186 GADGET_FIRST_BROTHER,
00187 GADGET_LAST_BROTHER,
00188 GADGET_LEFT_BROTHER_CIRCULAR,
00189 GADGET_RIGHT_BROTHER_CIRCULAR,
00190 GADGET_FIRST_NODE,
00191 GADGET_NEXT_NODE,
00192 GADGET_ATTACH_FIRST,
00193 GADGET_ATTACH,
00194 GADGET_DETACH,
00195 GADGET_SET_STATE,
00196 GADGET_POST_MESSAGE,
00197 GADGET_GET_FONT,
00198 GADGET_GET_COLOR,
00199 GADGET_GET_STATE,
00200 GADGET_NEW,
00201 GADGET_DELETE_SUBTREE,
00202 GADGET_SEARCH,
00203 GADGET_SEARCH_IN_WINDOW,
00204 GADGET_RENDER_CUSTOM,
00205 GADGET_REFRESH,
00206 GADGET_FIND_PARENT,
00207 GADGET_HIDE_ALL,
00208 GADGET_FIND_RIGHT_MOST,
00209 GADGET_GET_HINT,
00210 GADGET_GET_EXTENT,
00211 GADGET_GET_RECT,
00212 GADGET_SUGGEST_EXTENT,
00213 GADGET_DELETE_GADGET,
00214 GADGET_INIT_GADGET,
00215 GADGET_INPUT_EVENT_HANDLER,
00216 GADGET_LAYOUT,
00217 GADGET_DAMAGE,
00218 GADGET_CALLBACK,
00219 GADGET_GET_UNIQUE_ID,
00220 GADGET_METHODCALL,
00221 GADGET_SAVE,
00222 GADGET_RESTORE,
00223 GADGET_BIND,
00224 GADGET_FUNC_DONE
00225 };
00226
00227
00228
00229
00230
00231
00232
00233 #define CBK_GADGET_DOWN (1L<<0)
00234 #define CBK_GADGET_UP (1L<<1)
00235 #define CBK_GADGET_MOVE (1L<<2)
00236 #define CBK_GADGET_HINT (1L<<3)
00237 #define CBK_GADGET_CLICKED (1L<<4)
00238 #define CBK_WINDOW_OPENED (1L<<5)
00239 #define CBK_WINDOW_CLOSE (1L<<6)
00240 #define CBK_WINDOW_SIZE (1L<<7)
00241 #define CBK_WINDOW_OUTPUT (1L<<8)
00242 #define CBK_CHILD_WINDOW_OPENED (1L<<9)
00243 #define CBK_CHILD_WINDOW_CLOSED (1L<<10)
00244 #define CBK_WINDOW_CLOSED (1L<<11)
00245 #define CBK_WINDOW_ACTIVATED (1L<<12)
00246 #define CBK_WINDOW_INACTIVATED (1L<<13)
00247
00248 enum gadget_events
00249 {
00250 GADEV_INIT_GADGET,
00251 GADEV_DELETE_GADGET,
00252 GADEV_GET_EXTENT,
00253 GADEV_SUGGEST_EXTENT,
00254 GADEV_LAYOUT,
00255 GADEV_DAMAGE,
00256 GADEV_SAVE,
00257 GADEV_RESTORE,
00258 GADEV_COUNT
00259 };
00260
00261 #define GADGET_BINDING_DONE {NULL,0L,0,NULL}
00262
00263 #define GADGET_INVALID 0
00264 #define GADGET_INT 1
00265 #define GADGET_STRING 2
00266 #define GADGET_SELECT 3
00267 #define GADGET_BOOL 4
00268
00269
00270 #define GADGET_REQUIRED (1<<1)
00271
00272 #define GADGET_CHECK_DONE { GADGET_ILLEGAL_ID, GADGET_ILLEGAL_CLASS, 0L }
00273
00274
00275
00276
00277
00278
00279
00280 typedef struct
00281 {
00282 char *name;
00283 u32 tagname;
00284 int datatype;
00285 char *value_mask;
00286 } gadget_Binding_t;
00287
00288 typedef struct
00289 {
00290 u32 gadget_id;
00291 char *class_name;
00292 int flags;
00293 } gadget_Check_t;
00294
00295
00296 struct gadget_Descriptor_s
00297 {
00298 int level;
00299 char *class_name;
00300 u32 gadget_id;
00301 int weight;
00302 tag *taglist;
00303 };
00304
00305
00306 typedef struct
00307 {
00308 char *name;
00309 u32 (*function)(Gadget_t *this, tag *taglist);
00310 int flags;
00311 } gadget_Method_t;
00312
00313
00314 typedef struct
00315 {
00316 u32 class_id;
00317 u32 module;
00318 char *class_name;
00319 int gadget_counter;
00320 int gadget_size;
00321 int (*input_event_handler)(Gadget_t *this, struct glw_Event *event);
00322 int (*event_handler)(Gadget_t *this, Gadget_t *sender, int event, u32 event_data);
00323 int (*gadget_event_handler)(Gadget_t *this, int event, tag *taglist);
00324 int flags;
00325 int method_count;
00326 gadget_Method_t *methods;
00327 gadget_Binding_t *xmlbinding;
00328 u32 state_mask;
00329 int color_count;
00330 char **color_names;
00331 int custom_count;
00332 char **custom_names;
00333 } gadget_ClassData_t;
00334
00335
00336
00337 struct Gadget_s
00338 {
00339 Window_t *window;
00340 Gadget_t *parent;
00341 Gadget_t *next;
00342 Gadget_t *prev;
00343 Gadget_t *firstchild;
00344 Gadget_t *lastchild;
00345 u32 gadget_id;
00346 gadget_ClassData_t *class_data;
00347 Rect_t rect;
00348 int weight;
00349 char *hint;
00350 u32 font;
00351 int layout;
00352 int layout_width;
00353 int layout_height;
00354 int flags;
00355 int state;
00356 u32 callback_discard_mask;
00357 u32 *color_table[GADST_COUNT];
00358 void *skin;
00359 u32 skincrc;
00360 };
00361
00362
00363
00364
00365
00366
00367
00368 int gadget_Init(void);
00369 void gadget_CleanUp(void);
00370 gadget_Binding_t *gadget_GetCommonBind(void);
00371 void gadget_SetDiscardMask(Gadget_t *this, u32 add_event, u32 remove_event);
00372 int gadget_LoadClass(gui_App_t *app, char *class, Skin_t *skin);
00373 int gadget_ChangeSkin(Gadget_t *this, Skin_t *skin);
00374
00375
00376
00377 u32 gadget_Call(int function, u32 firsttag, ...);
00378 u32 gadget_CallTL(int function, tag *taglist);
00379
00380
00381 u32 gadget_GetStateName(u32 firsttag, ...);
00382 u32 gadget_GetStateNameTL(tag *taglist);
00383 u32 gadget_RegisterClass(u32 firsttag, ...);
00384 u32 gadget_RegisterClassTL(tag *taglist);
00385 u32 gadget_FindClass(u32 firsttag, ...);
00386 u32 gadget_FindClassTL(tag *taglist);
00387 u32 gadget_FindClassByName(u32 firsttag, ...);
00388 u32 gadget_FindClassByNameTL(tag *taglist);
00389 u32 gadget_Father(u32 firsttag, ...);
00390 u32 gadget_FatherTL(tag *taglist);
00391 u32 gadget_FirstChild(u32 firsttag, ...);
00392 u32 gadget_FirstChildTL(tag *taglist);
00393 u32 gadget_LastChild(u32 firsttag, ...);
00394 u32 gadget_LastChildTL(tag *taglist);
00395 u32 gadget_NthChild(u32 firsttag, ...);
00396 u32 gadget_NthChildTL(tag *taglist);
00397 u32 gadget_LeftBrother(u32 firsttag, ...);
00398 u32 gadget_LeftBrotherTL(tag *taglist);
00399 u32 gadget_RightBrother(u32 firsttag, ...);
00400 u32 gadget_RightBrotherTL(tag *taglist);
00401 u32 gadget_FirstBrother(u32 firsttag, ...);
00402 u32 gadget_FirstBrotherTL(tag *taglist);
00403 u32 gadget_LastBrother(u32 firsttag, ...);
00404 u32 gadget_LastBrotherTL(tag *taglist);
00405 u32 gadget_LeftBrotherCircular(u32 firsttag, ...);
00406 u32 gadget_LeftBrotherCircularTL(tag *taglist);
00407 u32 gadget_RightBrotherCircular(u32 firsttag, ...);
00408 u32 gadget_RightBrotherCircularTL(tag *taglist);
00409 u32 gadget_FirstNode(u32 firsttag, ...);
00410 u32 gadget_FirstNodeTL(tag *taglist);
00411 u32 gadget_NextNode(u32 firsttag, ...);
00412 u32 gadget_NextNodeTL(tag *taglist);
00413 u32 gadget_AttachFirst(u32 firsttag, ...);
00414 u32 gadget_AttachFirstTL(tag *taglist);
00415 u32 gadget_Attach(u32 firsttag, ...);
00416 u32 gadget_AttachTL(tag *taglist);
00417 u32 gadget_Detach(u32 firsttag, ...);
00418 u32 gadget_DetachTL(tag *taglist);
00419 u32 gadget_SetState(u32 firsttag, ...);
00420 u32 gadget_SetStateTL(tag *taglist);
00421 u32 gadget_PostMessage(u32 firsttag, ...);
00422 u32 gadget_PostMessageTL(tag *taglist);
00423 u32 gadget_GetFont(u32 firsttag, ...);
00424 u32 gadget_GetFontTL(tag *taglist);
00425 u32 gadget_GetColor(u32 firsttag, ...);
00426 u32 gadget_GetColorTL(tag *taglist);
00427 u32 gadget_GetState(u32 firsttag, ...);
00428 u32 gadget_GetStateTL(tag *taglist);
00429 u32 gadget_New(u32 firsttag, ...);
00430 u32 gadget_NewTL(tag *taglist);
00431 u32 gadget_DeleteSubtree(u32 firsttag, ...);
00432 u32 gadget_DeleteSubtreeTL(tag *taglist);
00433 u32 gadget_Search(u32 firsttag, ...);
00434 u32 gadget_SearchTL(tag *taglist);
00435 u32 gadget_SearchInWindow(u32 firsttag, ...);
00436 u32 gadget_SearchInWindowTL(tag *taglist);
00437 u32 gadget_RenderCustom(u32 firsttag, ...);
00438 u32 gadget_RenderCustomTL(tag *taglist);
00439 u32 gadget_Refresh(u32 firsttag, ...);
00440 u32 gadget_RefreshTL(tag *taglist);
00441 u32 gadget_FindParent(u32 firsttag, ...);
00442 u32 gadget_FindParentTL(tag *taglist);
00443 u32 gadget_HideAll(u32 firsttag, ...);
00444 u32 gadget_HideAllTL(tag *taglist);
00445 u32 gadget_FindRightMost(u32 firsttag, ...);
00446 u32 gadget_FindRightMostTL(tag *taglist);
00447 u32 gadget_GetHint(u32 firsttag, ...);
00448 u32 gadget_GetHintTL(tag *taglist);
00449 u32 gadget_GetExtent(u32 firsttag, ...);
00450 u32 gadget_GetExtentTL(tag *taglist);
00451 u32 gadget_GetRect(u32 firsttag, ...);
00452 u32 gadget_GetRectTL(tag *taglist);
00453 u32 gadget_SuggestExtent(u32 firsttag, ...);
00454 u32 gadget_SuggestExtentTL(tag *taglist);
00455 u32 gadget_DeleteGadget(u32 firsttag, ...);
00456 u32 gadget_DeleteGadgetTL(tag *taglist);
00457 u32 gadget_InitGadget(u32 firsttag, ...);
00458 u32 gadget_InitGadgetTL(tag *taglist);
00459 u32 gadget_InputEventHandler(u32 firsttag, ...);
00460 u32 gadget_InputEventHandlerTL(tag *taglist);
00461 u32 gadget_Layout(u32 firsttag, ...);
00462 u32 gadget_LayoutTL(tag *taglist);
00463 u32 gadget_Damage(u32 firsttag, ...);
00464 u32 gadget_DamageTL(tag *taglist);
00465 u32 gadget_CallBack(u32 firsttag, ...);
00466 u32 gadget_CallBackTL(tag *taglist);
00467 u32 gadget_GetUniqueId(void);
00468 u32 gadget_GetUniqueIdTL(tag *taglist);
00469 u32 gadget_Save(u32 firsttag, ...);
00470 u32 gadget_SaveTL(tag *taglist);
00471 u32 gadget_Restore(u32 firsttag, ...);
00472 u32 gadget_RestoreTL(tag *taglist);
00473 u32 gadget_MethodCall(u32 firsttag, ...);
00474 u32 gadget_MethodCallTL(tag *taglist);
00475 u32 gadget_Bind(u32 firsttag, ...);
00476 u32 gadget_BindTL(tag *taglist);
00477
00478
00479 #endif