Mercurial > pidgin
view finch/libgnt/gntwm.h @ 16236:4aedcb70cc07
remove some of the outdated todo stuff. most of the TODO file was handled as we worked on 2.0.0. Much of the .todo files was badly out of date, some of it completed, some of it no longer applies though not exactly completed, and other parts of it really rather debatable.
For msn in particular I assume that the new msn code will addres much of it.
for zephyr in particular, the bigger question than its .todo file is having a prpl distributed that we do not have a maintainer for.
I left the jabber, oscar, and win32 .todo files. I am unsure which parts of them ought to be transfered to trac.
references #157
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Thu, 19 Apr 2007 15:06:54 +0000 |
parents | a741ec4dafa0 |
children | 82b6fdd899a9 |
line wrap: on
line source
#include "gntwidget.h" #include "gntmenu.h" #include <panel.h> #include <time.h> #define GNT_TYPE_WM (gnt_wm_get_gtype()) #define GNT_WM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GNT_TYPE_WM, GntWM)) #define GNT_WM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GNT_TYPE_WM, GntWMClass)) #define GNT_IS_WM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GNT_TYPE_WM)) #define GNT_IS_WM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNT_TYPE_WM)) #define GNT_WM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GNT_TYPE_WM, GntWMClass)) typedef enum { GNT_KP_MODE_NORMAL, GNT_KP_MODE_RESIZE, GNT_KP_MODE_MOVE, } GntKeyPressMode; typedef struct { GntWidget *me; WINDOW *window; int scroll; PANEL *panel; } GntNode; typedef struct _GnttWM GntWM; typedef struct _GntPosition { int x; int y; } GntPosition; /** * An application can register actions which will show up in a 'start-menu' like popup */ typedef struct _GntAction { const char *label; void (*callback)(); } GntAction; struct _GnttWM { GntBindable inherit; GMainLoop *loop; GList *list; /* List of windows ordered on their creation time */ GList *ordered; /* List of windows ordered on their focus */ struct { GntWidget *window; GntWidget *tree; } _list, *windows, /* Window-list window */ *actions; /* Action-list window */ GHashTable *nodes; /* GntWidget -> GntNode */ GList *acts; /* List of actions */ /** * There can be at most one menu at a time on the screen. * If there is a menu being displayed, then all the keystrokes will be sent to * the menu until it is closed, either when the user activates a menuitem, or * presses Escape to cancel the menu. */ GntMenu *menu; /* Currently active menu */ /** * 'event_stack' will be set to TRUE when a user-event, ie. a mouse-click * or a key-press is being processed. This variable will be used to determine * whether to give focus to a new window. */ gboolean event_stack; GntKeyPressMode mode; GHashTable *positions; void *res1; void *res2; void *res3; void *res4; }; typedef struct _GntWMClass GntWMClass; struct _GntWMClass { GntBindableClass parent; /* This is called when a new window is shown */ void (*new_window)(GntWM *wm, GntWidget *win); void (*decorate_window)(GntWM *wm, GntWidget *win); /* This is called when a window is being closed */ gboolean (*close_window)(GntWM *wm, GntWidget *win); /* The WM may want to confirm a size for a window first */ gboolean (*window_resize_confirm)(GntWM *wm, GntWidget *win, int *w, int *h); void (*window_resized)(GntWM *wm, GntNode *node); /* The WM may want to confirm the position of a window */ gboolean (*window_move_confirm)(GntWM *wm, GntWidget *win, int *x, int *y); void (*window_moved)(GntWM *wm, GntNode *node); /* This gets called when: * - the title of the window changes * - the 'urgency' of the window changes */ void (*window_update)(GntWM *wm, GntNode *node); /* This should usually return NULL if the keys were processed by the WM. * If not, the WM can simply return the original string, which will be * processed by the default WM. The custom WM can also return a different * static string for the default WM to process. */ gboolean (*key_pressed)(GntWM *wm, const char *key); gboolean (*mouse_clicked)(GntWM *wm, GntMouseEvent event, int x, int y, GntWidget *widget); /* Whatever the WM wants to do when a window is given focus */ void (*give_focus)(GntWM *wm, GntWidget *widget); /* List of windows. Although the WM can keep a list of its own for the windows, * it'd be better if there was a way to share between the 'core' and the WM. */ /*const GList *(*window_list)();*/ void (*res1)(void); void (*res2)(void); void (*res3)(void); void (*res4)(void); }; G_BEGIN_DECLS GType gnt_wm_get_gtype(void); void gnt_wm_new_window(GntWM *wm, GntWidget *widget); void gnt_wm_window_decorate(GntWM *wm, GntWidget *widget); void gnt_wm_window_close(GntWM *wm, GntWidget *widget); gboolean gnt_wm_process_input(GntWM *wm, const char *string); gboolean gnt_wm_process_click(GntWM *wm, GntMouseEvent event, int x, int y, GntWidget *widget); void gnt_wm_resize_window(GntWM *wm, GntWidget *widget, int width, int height); void gnt_wm_move_window(GntWM *wm, GntWidget *widget, int x, int y); void gnt_wm_update_window(GntWM *wm, GntWidget *widget); void gnt_wm_raise_window(GntWM *wm, GntWidget *widget); time_t gnt_wm_get_idle_time(void); G_END_DECLS