Changeset 19

Show
Ignore:
Timestamp:
10/31/07 23:40:38
Author:
pvanhoof
Message:
        • Made certain pieces in TMutShellWindow virtual
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r18 r19  
    66        with a bunch of buttons and scrolled windows in it 
    77        * Made creating the buttons for TMutMsgView a virtual method 
     8        * Made certain pieces in TMutShellWindow virtual 
    89 
    9102007-10-29  Philip Van Hoof  <pvanhoof@gnome.org> 
  • trunk/src/tmut-folder-view.c

    r16 r19  
    4444 
    4545 
     46 
     47void 
     48tmut_folder_view_on_folder_move_activated (GObject *sender, TMutFolderView *self) 
     49{ 
     50        TMutFolderViewPriv *priv = TMUT_FOLDER_VIEW_GET_PRIVATE (self); 
     51 
     52g_print ("move folder\n"); 
     53 
     54        return; 
     55} 
     56 
     57void 
     58tmut_folder_view_on_folder_create_activated (GObject *sender, TMutFolderView *self) 
     59{ 
     60        TMutFolderViewPriv *priv = TMUT_FOLDER_VIEW_GET_PRIVATE (self); 
     61 
     62g_print ("create folder\n"); 
     63 
     64        return; 
     65} 
     66 
     67void 
     68tmut_folder_view_on_folder_delete_activated (GObject *sender, TMutFolderView *self) 
     69{ 
     70        TMutFolderViewPriv *priv = TMUT_FOLDER_VIEW_GET_PRIVATE (self); 
     71 
     72g_print ("delete folder\n"); 
     73 
     74        return; 
     75} 
     76 
     77void 
     78tmut_folder_view_on_message_delete_activated (GObject *sender, TMutFolderView *self) 
     79{ 
     80        TMutFolderViewPriv *priv = TMUT_FOLDER_VIEW_GET_PRIVATE (self); 
     81 
     82g_print ("delete message\n"); 
     83 
     84        return; 
     85} 
     86 
     87void 
     88tmut_folder_view_on_message_move_activated (GObject *sender, TMutFolderView *self) 
     89{ 
     90        TMutFolderViewPriv *priv = TMUT_FOLDER_VIEW_GET_PRIVATE (self); 
     91 
     92g_print ("move message\n"); 
     93 
     94        return; 
     95} 
     96 
     97static void 
     98popup_the_actions_menu (GtkButton *button, gpointer user_data) 
     99{ 
     100        GtkMenu *menu = (GtkMenu *) user_data; 
     101 
     102        gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,  
     103                        0, gtk_get_current_event_time ()); 
     104 
     105        return; 
     106} 
     107 
     108static void 
     109tmut_folder_view_create_menu_default (TMutFolderView *self) 
     110{ 
     111        TMutFolderViewPriv *priv = TMUT_FOLDER_VIEW_GET_PRIVATE (self); 
     112        GtkMenu *menu; 
     113        GtkWidget *fcreate_menuitem, *fmove_menuitem, *fdel_menuitem; 
     114        GtkWidget *mdel_menuitem, *mmove_menuitem; 
     115        GtkButton *menu_button; 
     116 
     117        menu_button = GTK_BUTTON (gtk_button_new_with_label ("Actions")); 
     118 
     119        menu = GTK_MENU (gtk_menu_new ()); 
     120 
     121        fcreate_menuitem = gtk_menu_item_new_with_label ("Create new folder"); 
     122        fmove_menuitem = gtk_menu_item_new_with_label ("Copy or move a folder"); 
     123        fdel_menuitem = gtk_menu_item_new_with_label ("Delete a folder"); 
     124        mdel_menuitem = gtk_menu_item_new_with_label ("Delete a message"); 
     125        mmove_menuitem = gtk_menu_item_new_with_label ("Move a message"); 
     126 
     127        gtk_widget_show (fcreate_menuitem); 
     128        gtk_widget_show (fmove_menuitem); 
     129        gtk_widget_show (fdel_menuitem); 
     130        gtk_widget_show (mdel_menuitem); 
     131        gtk_widget_show (mmove_menuitem); 
     132        gtk_widget_show (GTK_WIDGET (menu)); 
     133 
     134        gtk_widget_show (GTK_WIDGET (menu_button)); 
     135 
     136        gtk_menu_prepend (menu, fcreate_menuitem); 
     137        gtk_menu_prepend (menu, fmove_menuitem); 
     138        gtk_menu_prepend (menu, fdel_menuitem); 
     139        gtk_menu_prepend (menu, mdel_menuitem); 
     140        gtk_menu_prepend (menu, mmove_menuitem); 
     141 
     142        gtk_menu_attach_to_widget (menu, GTK_WIDGET (menu_button), NULL); 
     143 
     144        g_signal_connect (G_OBJECT (menu_button), "clicked", 
     145                G_CALLBACK (popup_the_actions_menu), menu); 
     146 
     147        g_signal_connect (G_OBJECT (fcreate_menuitem), "activate", 
     148                G_CALLBACK (tmut_folder_view_on_folder_create_activated), self); 
     149        g_signal_connect (G_OBJECT (fmove_menuitem), "activate", 
     150                G_CALLBACK (tmut_folder_view_on_folder_move_activated), self); 
     151        g_signal_connect (G_OBJECT (fdel_menuitem), "activate", 
     152                G_CALLBACK (tmut_folder_view_on_folder_delete_activated), self); 
     153        g_signal_connect (G_OBJECT (mdel_menuitem), "activate", 
     154                G_CALLBACK (tmut_folder_view_on_message_delete_activated), self); 
     155        g_signal_connect (G_OBJECT (mmove_menuitem), "activate", 
     156                G_CALLBACK (tmut_folder_view_on_message_move_activated), self); 
     157 
     158        gtk_box_pack_start (GTK_BOX (self), GTK_WIDGET (menu_button), FALSE, TRUE, 0); 
     159 
     160        return; 
     161} 
     162 
    46163static void  
    47164status_update (GObject *sender, TnyStatus *status, gpointer user_data) 
     
    214331                G_CALLBACK (on_msg_selected), self); 
    215332 
     333        TMUT_FOLDER_VIEW_GET_CLASS (self)->create_menu_func (self); 
     334 
    216335        return; 
    217336} 
     
    242361 
    243362        object_class->finalize = tmut_folder_view_finalize; 
     363 
     364        class->create_menu_func = tmut_folder_view_create_menu_default; 
    244365 
    245366        g_type_class_add_private (object_class, sizeof (TMutFolderViewPriv)); 
  • trunk/src/tmut-folder-view.h

    r16 r19  
    4646{ 
    4747        GtkVBoxClass parent_class; 
     48 
     49        /* virtuals */ 
     50 
     51        /* Override this one if you want to provide your own menu items for 
     52         * rename folder, create folder, move&copy folder, delete msg, copy&move 
     53         * msg and delete folder. The construction of this type will call this. 
     54         * Note that @self here is a GtkVBox and that you can add your widgets 
     55         * to it. */ 
     56 
     57        void (*create_menu_func) (TMutFolderView *self); 
    4858}; 
    4959 
     
    5363void tmut_folder_view_set_active_folder (TMutFolderView *self, TnyFolder *folder); 
    5464 
     65/* Preimplemented handlers for your action performers */ 
     66void tmut_folder_view_on_folder_move_activated (GObject *sender, TMutFolderView *self); 
     67void tmut_folder_view_on_folder_create_activated (GObject *sender, TMutFolderView *self); 
     68void tmut_folder_view_on_folder_delete_activated (GObject *sender, TMutFolderView *self); 
     69void tmut_folder_view_on_message_delete_activated (GObject *sender, TMutFolderView *self); 
     70void tmut_folder_view_on_message_move_activated (GObject *sender, TMutFolderView *self); 
     71 
    5572G_END_DECLS 
    5673 
  • trunk/src/tmut-msg-view.c

    r18 r19  
    4343 
    4444 
    45 static void 
    46 on_reply_clicked (GtkButton *button, gpointer user_data) 
    47 
    48         TMutMsgViewPriv *priv = TMUT_MSG_VIEW_GET_PRIVATE (user_data); 
    49  
    50         return; 
    51 
    52  
    53  
    54 static void 
    55 on_forward_clicked (GtkButton *button, gpointer user_data) 
    56 
    57         TMutMsgViewPriv *priv = TMUT_MSG_VIEW_GET_PRIVATE (user_data); 
    58  
    59         return; 
    60 
    61  
    62  
    63 static void 
    64 tmut_msg_view_create_buttons_default (TMutMsgView *self) 
     45 
     46void  
     47tmut_msg_view_on_reply_clicked (GObject *sender, TMutMsgView *self) 
     48
     49        TMutMsgViewPriv *priv = TMUT_MSG_VIEW_GET_PRIVATE (self); 
     50 
     51g_print ("reply to message\n"); 
     52 
     53        return; 
     54
     55 
     56 
     57void  
     58tmut_msg_view_on_forward_clicked (GObject *sender, TMutMsgView *self) 
     59
     60        TMutMsgViewPriv *priv = TMUT_MSG_VIEW_GET_PRIVATE (self); 
     61 
     62g_print ("forward message\n"); 
     63 
     64        return; 
     65
     66 
     67 
     68static void 
     69tmut_msg_view_create_menu_default (TMutMsgView *self) 
    6570{ 
    6671        TMutMsgViewPriv *priv = TMUT_MSG_VIEW_GET_PRIVATE (self); 
     
    7782 
    7883        g_signal_connect (G_OBJECT (priv->reply_button), "clicked", 
    79                 G_CALLBACK (on_reply_clicked), self); 
     84                G_CALLBACK (tmut_msg_view_on_reply_clicked), self); 
    8085        g_signal_connect (G_OBJECT (priv->forward_button), "clicked", 
    81                 G_CALLBACK (on_forward_clicked), self); 
     86                G_CALLBACK (tmut_msg_view_on_forward_clicked), self); 
    8287 
    8388        return; 
     
    233238        gtk_box_pack_start (GTK_BOX (instance), GTK_WIDGET (priv->sw), TRUE, TRUE, 0); 
    234239 
    235         TMUT_MSG_VIEW_GET_CLASS (instance)->create_buttons_func ((TMutMsgView *) instance); 
     240        TMUT_MSG_VIEW_GET_CLASS (instance)->create_menu_func ((TMutMsgView *) instance); 
    236241 
    237242        tmut_msg_view_set_view (TMUT_MSG_VIEW (instance), 
     
    285290        object_class->finalize = tmut_msg_view_finalize; 
    286291 
    287         class->create_buttons_func = tmut_msg_view_create_buttons_default; 
     292        class->create_menu_func = tmut_msg_view_create_menu_default; 
    288293 
    289294        g_type_class_add_private (object_class, sizeof (TMutMsgViewPriv)); 
  • trunk/src/tmut-msg-view.h

    r18 r19  
    4848        GtkVBoxClass parent_class; 
    4949 
    50         void (*create_buttons_func) (TMutMsgView *self); 
     50        /* virtuals */ 
     51 
     52        /* Override this one if you want to provide your own menu items for 
     53         * reply and forward. The construction of this type will call this. Note 
     54         * that @self here is a GtkVBox and that you can add your widgets to it. */ 
     55 
     56        void (*create_menu_func) (TMutMsgView *self); 
    5157}; 
    5258 
     
    5662void tmut_msg_view_set_view (TMutMsgView *self, TnyMsgView *view); 
    5763 
     64/* Preimplemented handlers for your action performers */ 
     65void tmut_msg_view_on_reply_clicked (GObject *sender, TMutMsgView *self); 
     66void tmut_msg_view_on_forward_clicked (GObject *sender, TMutMsgView *self); 
     67 
    5868G_END_DECLS 
    5969 
  • trunk/src/tmut-shell-window.c

    r16 r19  
    4747tmut_shell_window_set_child (TMutShellWindow *self, TMutShellChild *child, const gchar *instruction) 
    4848{ 
     49        TMUT_SHELL_WINDOW_GET_CLASS (self)->set_child_func (self, child, instruction); 
     50        return; 
     51} 
     52 
     53static void  
     54tmut_shell_window_set_child_default (TMutShellWindow *self, TMutShellChild *child, const gchar *instruction) 
     55{ 
    4956        TMutShellWindowPriv *priv = TMUT_SHELL_WINDOW_GET_PRIVATE (self); 
    5057        ChildSet *set = g_slice_new0 (ChildSet); 
     
    112119tmut_shell_window_get_progress (TMutShellWindow *self) 
    113120{ 
     121        return TMUT_SHELL_WINDOW_GET_CLASS (self)->get_progress_func (self); 
     122} 
     123 
     124static GtkProgress*  
     125tmut_shell_window_get_progress_default (TMutShellWindow *self) 
     126{ 
    114127        TMutShellWindowPriv *priv = TMUT_SHELL_WINDOW_GET_PRIVATE (self); 
    115128 
     
    118131 
    119132 
    120 static void 
    121 tmut_shell_window_instance_init (GTypeInstance *instance, gpointer g_class
     133static void  
     134tmut_shell_window_instantiate_default (TMutShellWindow *instance
    122135{ 
    123136        TMutShellWindowPriv *priv = TMUT_SHELL_WINDOW_GET_PRIVATE (instance); 
     137 
    124138        GtkWidget *hbox, *vvbox, *back_button; 
    125139 
     
    144158        gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (vvbox),  
    145159                FALSE, TRUE, 0); 
    146  
    147160        gtk_box_pack_start (GTK_BOX (vvbox), GTK_WIDGET (priv->progress_bar),  
    148161                FALSE, TRUE, 0); 
    149162        gtk_box_pack_start (GTK_BOX (vvbox), GTK_WIDGET (priv->instruction_label),  
    150163                FALSE, TRUE, 0); 
    151  
    152164        gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (back_button),  
    153165                FALSE, TRUE, 0); 
     
    157169        g_signal_connect (G_OBJECT (back_button), "clicked",  
    158170                G_CALLBACK (on_back_clicked), instance); 
     171} 
     172 
     173static void 
     174tmut_shell_window_instance_init (GTypeInstance *instance, gpointer g_class) 
     175{ 
     176        if (TMUT_SHELL_WINDOW_GET_CLASS (instance)->instantiate_func) 
     177                TMUT_SHELL_WINDOW_GET_CLASS (instance)->instantiate_func ((TMutShellWindow *) instance); 
    159178 
    160179        return; 
     
    194213        parent_class = g_type_class_peek_parent (class); 
    195214        object_class = (GObjectClass*) class; 
     215 
     216        class->set_child_func = tmut_shell_window_set_child_default; 
     217        class->get_progress_func = tmut_shell_window_get_progress_default; 
     218        class->instantiate_func = tmut_shell_window_instantiate_default; 
    196219 
    197220        object_class->finalize = tmut_shell_window_finalize; 
  • trunk/src/tmut-shell-window.h

    r16 r19  
    5050{ 
    5151        GtkWindowClass parent_class; 
     52 
     53        /* virtuals */ 
     54 
     55        void (*set_child_func) (TMutShellWindow *self, TMutShellChild *child, const gchar *instruction); 
     56        GtkProgress* (*get_progress_func) (TMutShellWindow *self); 
     57 
     58        /* If you set this one to NULL, it wont ever be called for and you'll 
     59         * get an empty-everything. Note, though, that you do need to implement 
     60         * tmut_shell_window_set_child and tmut_shell_window_get_progress  
     61         * somehow. Overriding this, and it's up to you! */ 
     62 
     63        void (*instantiate_func) (TMutShellWindow *self); 
     64 
    5265}; 
    5366