diff options
author | waker <wakeroid@gmail.com> | 2012-04-11 16:01:23 +0200 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2012-04-11 16:01:23 +0200 |
commit | 1f18193418e65563d51bc02c231555888200d930 (patch) | |
tree | 3a3c6886495835e4617b63229ba4d8ae3d4fc818 /plugins/gtkui/gtkui_api.h | |
parent | ad4b2eaf2346230773dddf5852e5869de5a24ff8 (diff) |
gtkui: widget api documented and extended to cover more functions
Diffstat (limited to 'plugins/gtkui/gtkui_api.h')
-rw-r--r-- | plugins/gtkui/gtkui_api.h | 76 |
1 files changed, 66 insertions, 10 deletions
diff --git a/plugins/gtkui/gtkui_api.h b/plugins/gtkui/gtkui_api.h index 9117e46b..30bf7090 100644 --- a/plugins/gtkui/gtkui_api.h +++ b/plugins/gtkui/gtkui_api.h @@ -37,26 +37,54 @@ typedef struct ddb_gtkui_widget_s { uint32_t flags; - const char *(*load) (struct ddb_gtkui_widget_s *w, const char *s); + // all the functions here are overloads, so they are not mandatory + // they can be implemented to add custom code to normal widget code + // they can be NULL if you don't need them, or you can set them to + // standard functions (more below) + + // this function will be called after the widget is visible and needs to + // [re]initialize itself + // e.g. splitter widget sets the grip position in the init + void (*init) (struct ddb_gtkui_widget_s *container); + // save your custom parameters in the string using strncat + // for example, if you need to write width and height: + // strncat (s, "100 200", sz); void (*save) (struct ddb_gtkui_widget_s *w, char *s, int sz); + // this is to read custom widget parameters, e.g. width and height + // you will be passed a string looking like "100 200 {" + // you will need to read params, and return the new pointer, normally it + // should be pointing to the "{" + const char *(*load) (struct ddb_gtkui_widget_s *w, const char *s); + + // custom destructor code void (*destroy) (struct ddb_gtkui_widget_s *w); + // custom append code + // if left NULL, appending will not be supported + // you should use standard w_container_add if your widget is derived from + // GTK_CONTAINER void (*append) (struct ddb_gtkui_widget_s *container, struct ddb_gtkui_widget_s *child); - void (*remove) (struct ddb_gtkui_widget_s *container, struct ddb_gtkui_widget_s *child); - // this function will be called after the widget is visible and needs to - // [re]initialize itself - // e.g. splitter widget should set the grip position - void (*init) (struct ddb_gtkui_widget_s *container); + // custom remove code + // you should use w_container_remove if your widget is derived from + // GTK_CONTAINER + void (*remove) (struct ddb_gtkui_widget_s *container, struct ddb_gtkui_widget_s *child); + // custom replace code + // default replace will call remove;destroy;append + // but you can override if you need smarter behaviour + // look at the splitter and tabs implementation for more details void (*replace) (struct ddb_gtkui_widget_s *container, struct ddb_gtkui_widget_s *child, struct ddb_gtkui_widget_s *newchild); + // implement this if you want to handle deadbeef broadcast messages/events int (*message) (struct ddb_gtkui_widget_s *w, uint32_t id, uintptr_t ctx, uint32_t p1, uint32_t p2); + // this will be called to setup the menu widget in design mode void (*initmenu) (struct ddb_gtkui_widget_s *w, GtkWidget *menu); + // you shouldn't touch this list normally, the system takes care of it struct ddb_gtkui_widget_s *children; struct ddb_gtkui_widget_s *next; // points to next widget in the same container } ddb_gtkui_widget_t; @@ -64,10 +92,38 @@ typedef struct ddb_gtkui_widget_s { typedef struct { DB_gui_t gui; int api_version; + + // returns main window ptr GtkWidget * (*get_mainwin) (void); - void (*reg_widget) (const char *type, ddb_gtkui_widget_t *(*create_func) (void)); - void (*unreg_widget) (const char *type); - ddb_gtkui_widget_t * (*get_root_widget) (void); -} ddb_gtkui_t; + // register the new widget + void (*w_reg_widget) (const char *type, const char *title, ddb_gtkui_widget_t *(*create_func) (void)); + + // unregister the widget + void (*w_unreg_widget) (const char *type); + + // returns 1 if a widget of the specified is registered + int (*w_is_registered) (const char *type); + + // returns toplevel widget + ddb_gtkui_widget_t * (*w_get_rootwidget) (void); + + // create a widget oof specified type + ddb_gtkui_widget_t * (*w_create) (const char *type); + + // set widget name + void (*w_set_name) (ddb_gtkui_widget_t *w, const char *name); + + // destroy the widget + void (*w_destroy) (ddb_gtkui_widget_t *w); + + // append the widget to container + void (*w_append) (ddb_gtkui_widget_t *cont, ddb_gtkui_widget_t *child); + + // replace existing child widget with another widget + void (*w_replace) (ddb_gtkui_widget_t *w, ddb_gtkui_widget_t *from, ddb_gtkui_widget_t *to); + + // remove the widget from its container + void (*w_remove) (ddb_gtkui_widget_t *cont, ddb_gtkui_widget_t *child); +} ddb_gtkui_t; #endif |