use generic toolbar handling
This commit is contained in:
parent
2cd2f95d46
commit
fda5525dc3
10 changed files with 164 additions and 1458 deletions
|
@ -1,3 +1,12 @@
|
|||
2002-12-24 [oliver] 0.8.7claws6
|
||||
|
||||
* src/mainwindow.[ch]
|
||||
* src/messageview.[ch]
|
||||
* src/compose.[ch]
|
||||
* src/inc.c
|
||||
* src/summaryview.c
|
||||
changes to use updated toolbar handling
|
||||
|
||||
2002-12-24 [oliver] 0.8.7claws5
|
||||
|
||||
* src/toolbar.[ch]
|
||||
|
|
|
@ -11,7 +11,7 @@ MINOR_VERSION=8
|
|||
MICRO_VERSION=7
|
||||
INTERFACE_AGE=0
|
||||
BINARY_AGE=0
|
||||
EXTRA_VERSION=claws5
|
||||
EXTRA_VERSION=claws6
|
||||
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
|
||||
|
||||
dnl set $target
|
||||
|
|
350
src/compose.c
350
src/compose.c
|
@ -164,11 +164,6 @@ Compose *compose_generic_new (PrefsAccount *account,
|
|||
|
||||
static Compose *compose_create (PrefsAccount *account,
|
||||
ComposeMode mode);
|
||||
static void compose_toolbar_create (Compose *compose,
|
||||
GtkWidget *container);
|
||||
static void compose_toolbar_update (Compose *compose);
|
||||
static void compose_toolbar_set_sensitive (Compose *compose,
|
||||
gboolean sensitive);
|
||||
|
||||
static GtkWidget *compose_account_option_menu_create
|
||||
(Compose *compose);
|
||||
|
@ -296,31 +291,8 @@ static void compose_update_priority_menu_item(Compose * compose);
|
|||
static gboolean compose_edit_size_alloc (GtkEditable *widget,
|
||||
GtkAllocation *allocation,
|
||||
GtkSHRuler *shruler);
|
||||
|
||||
static void toolbar_send_cb (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void toolbar_send_later_cb (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void toolbar_draft_cb (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void toolbar_insert_cb (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void toolbar_attach_cb (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void toolbar_sig_cb (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void toolbar_ext_editor_cb (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void toolbar_linewrap_cb (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void toolbar_address_cb (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void toolbar_compose_buttons_cb (GtkWidget *widget,
|
||||
|
||||
ToolbarItem *item);
|
||||
static void account_activated (GtkMenuItem *menuitem,
|
||||
gpointer data);
|
||||
|
||||
static void attach_selected (GtkCList *clist,
|
||||
gint row,
|
||||
gint column,
|
||||
|
@ -1379,6 +1351,46 @@ void compose_entry_select (Compose *compose, const gchar *mailto)
|
|||
}
|
||||
}
|
||||
|
||||
void compose_toolbar_cb(gint action, gpointer data)
|
||||
{
|
||||
ToolbarItem *toolbar_item = (ToolbarItem*)data;
|
||||
Compose *compose = (Compose*)toolbar_item->parent;
|
||||
|
||||
g_return_if_fail(compose != NULL);
|
||||
|
||||
switch(action) {
|
||||
case A_SEND:
|
||||
compose_send_cb(compose, 0, NULL);
|
||||
break;
|
||||
case A_SENDL:
|
||||
compose_send_later_cb(compose, 0, NULL);
|
||||
break;
|
||||
case A_DRAFT:
|
||||
compose_draft_cb(compose, 0, NULL);
|
||||
break;
|
||||
case A_INSERT:
|
||||
compose_insert_file_cb(compose, 0, NULL);
|
||||
break;
|
||||
case A_ATTACH:
|
||||
compose_attach_cb(compose, 0, NULL);
|
||||
break;
|
||||
case A_SIG:
|
||||
compose_insert_sig(compose);
|
||||
break;
|
||||
case A_EXTEDITOR:
|
||||
compose_ext_editor_cb(compose, 0, NULL);
|
||||
break;
|
||||
case A_LINEWRAP:
|
||||
compose_wrap_line(compose);
|
||||
break;
|
||||
case A_ADDRBOOK:
|
||||
compose_address_cb(compose, 0, NULL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void compose_entries_set(Compose *compose, const gchar *mailto)
|
||||
{
|
||||
gchar *to = NULL;
|
||||
|
@ -4658,7 +4670,8 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode)
|
|||
handlebox = gtk_handle_box_new();
|
||||
gtk_box_pack_start(GTK_BOX(vbox), handlebox, FALSE, FALSE, 0);
|
||||
|
||||
compose_toolbar_create(compose, handlebox);
|
||||
compose->toolbar = toolbar_create(TOOLBAR_COMPOSE, handlebox,
|
||||
(gpointer)compose);
|
||||
|
||||
vbox2 = gtk_vbox_new(FALSE, 2);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), vbox2, TRUE, TRUE, 0);
|
||||
|
@ -4993,230 +5006,12 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode)
|
|||
#if USE_GPGME
|
||||
activate_gnupg_mode(compose, account);
|
||||
#endif
|
||||
|
||||
common_toolbar_set_style(compose, TOOLBAR_COMPOSE);
|
||||
|
||||
toolbar_set_style(compose->toolbar->toolbar, compose->handlebox, prefs_common.toolbar_style);
|
||||
gtk_widget_show(window);
|
||||
|
||||
return compose;
|
||||
}
|
||||
|
||||
static void toolbar_compose_buttons_cb(GtkWidget *widget,
|
||||
ToolbarItem *item)
|
||||
{
|
||||
struct {
|
||||
gint index;
|
||||
void (*func)(GtkWidget *widget, gpointer data);
|
||||
} compose_action[] = {
|
||||
{ A_SEND, toolbar_send_cb },
|
||||
{ A_SENDL, toolbar_send_later_cb },
|
||||
{ A_DRAFT, toolbar_draft_cb },
|
||||
{ A_INSERT, toolbar_insert_cb },
|
||||
{ A_ATTACH, toolbar_attach_cb },
|
||||
{ A_SIG, toolbar_sig_cb },
|
||||
{ A_EXTEDITOR, toolbar_ext_editor_cb },
|
||||
{ A_LINEWRAP, toolbar_linewrap_cb },
|
||||
{ A_ADDRBOOK, toolbar_address_cb },
|
||||
{ A_SYL_ACTIONS, common_toolbar_actions_execute_cb }};
|
||||
|
||||
|
||||
gint num_items = sizeof(compose_action)/sizeof(compose_action[0]);
|
||||
gint i;
|
||||
for (i = 0; i < num_items; i++) {
|
||||
|
||||
if (compose_action[i].index == item->index) {
|
||||
if (item->index == A_SYL_ACTIONS)
|
||||
compose_action[i].func(widget, (gpointer)item->parent);
|
||||
else /* this won`t be necessary if everything is moved to toolbar.c */
|
||||
compose_action[i].func(widget, (gpointer)item->parent->data);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void compose_toolbar_update(Compose *compose)
|
||||
{
|
||||
gtk_container_remove(GTK_CONTAINER(compose->handlebox),
|
||||
GTK_WIDGET(compose->toolbar->toolbar));
|
||||
|
||||
compose->toolbar->toolbar = NULL;
|
||||
compose->toolbar->send_btn = NULL;
|
||||
compose->toolbar->sendl_btn = NULL;
|
||||
compose->toolbar->draft_btn = NULL;
|
||||
compose->toolbar->insert_btn = NULL;
|
||||
compose->toolbar->attach_btn = NULL;
|
||||
compose->toolbar->sig_btn = NULL;
|
||||
compose->toolbar->exteditor_btn = NULL;
|
||||
compose->toolbar->linewrap_btn = NULL;
|
||||
compose->toolbar->addrbook_btn = NULL;
|
||||
|
||||
TOOLBAR_DESTROY_ITEMS(compose->toolbar->item_list);
|
||||
TOOLBAR_DESTROY_ACTIONS(compose->toolbar->action_list);
|
||||
compose_toolbar_create(compose, compose->handlebox);
|
||||
}
|
||||
|
||||
static void compose_toolbar_create(Compose *compose,
|
||||
GtkWidget *container)
|
||||
{
|
||||
ToolbarItem *toolbar_item;
|
||||
|
||||
GtkWidget *toolbar;
|
||||
GtkWidget *icon_wid = NULL;
|
||||
GtkWidget *item;
|
||||
GtkTooltips *toolbar_tips;
|
||||
ToolbarSylpheedActions *action_item;
|
||||
GSList *cur;
|
||||
GSList *toolbar_list;
|
||||
toolbar_tips = gtk_tooltips_new();
|
||||
|
||||
toolbar_read_config_file(TOOLBAR_COMPOSE);
|
||||
toolbar_list = toolbar_get_list(TOOLBAR_COMPOSE);
|
||||
|
||||
compose->toolbar = g_new0(Toolbar, 1);
|
||||
|
||||
toolbar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL,
|
||||
GTK_TOOLBAR_BOTH);
|
||||
gtk_container_add(GTK_CONTAINER(container), toolbar);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(container), 2);
|
||||
gtk_toolbar_set_button_relief(GTK_TOOLBAR(toolbar), GTK_RELIEF_NONE);
|
||||
gtk_toolbar_set_space_style(GTK_TOOLBAR(toolbar),
|
||||
GTK_TOOLBAR_SPACE_LINE);
|
||||
|
||||
for (cur = toolbar_list; cur != NULL; cur = cur->next) {
|
||||
|
||||
if (g_strcasecmp(((ToolbarItem*)cur->data)->file, SEPARATOR) == 0) {
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
continue;
|
||||
}
|
||||
|
||||
toolbar_item = g_new0(ToolbarItem, 1);
|
||||
toolbar_item->file = g_strdup(((ToolbarItem*)cur->data)->file);
|
||||
toolbar_item->text = g_strdup(((ToolbarItem*)cur->data)->text);
|
||||
toolbar_item->index = ((ToolbarItem*)cur->data)->index;
|
||||
|
||||
toolbar_item->parent = g_new0(ToolbarParent, 1);
|
||||
toolbar_item->parent->data = (gpointer)compose;
|
||||
toolbar_item->parent->type = TOOLBAR_COMPOSE;
|
||||
|
||||
/* collect toolbar items in list to keep track */
|
||||
compose->toolbar->item_list = g_slist_append(compose->toolbar->item_list,
|
||||
toolbar_item);
|
||||
|
||||
icon_wid = stock_pixmap_widget(container, stock_pixmap_get_icon(toolbar_item->file));
|
||||
item = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
toolbar_item->text,
|
||||
(""),
|
||||
(""),
|
||||
icon_wid, toolbar_compose_buttons_cb,
|
||||
toolbar_item);
|
||||
|
||||
switch (toolbar_item->index) {
|
||||
case A_SEND:
|
||||
compose->toolbar->send_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
compose->toolbar->send_btn,
|
||||
_("Send Message"), NULL);
|
||||
break;
|
||||
case A_SENDL:
|
||||
compose->toolbar->sendl_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
compose->toolbar->sendl_btn,
|
||||
_("Put into queue folder and send later"), NULL);
|
||||
break;
|
||||
case A_DRAFT:
|
||||
compose->toolbar->draft_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
compose->toolbar->draft_btn,
|
||||
_("Save to draft folder"), NULL);
|
||||
break;
|
||||
case A_INSERT:
|
||||
compose->toolbar->insert_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
compose->toolbar->insert_btn,
|
||||
_("Insert file"), NULL);
|
||||
break;
|
||||
case A_ATTACH:
|
||||
compose->toolbar->attach_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
compose->toolbar->attach_btn,
|
||||
_("Attach file"), NULL);
|
||||
break;
|
||||
case A_SIG:
|
||||
compose->toolbar->sig_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
compose->toolbar->sig_btn,
|
||||
_("Insert signature"), NULL);
|
||||
break;
|
||||
case A_EXTEDITOR:
|
||||
compose->toolbar->exteditor_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
compose->toolbar->exteditor_btn,
|
||||
_("Edit with external editor"), NULL);
|
||||
break;
|
||||
case A_LINEWRAP:
|
||||
compose->toolbar->linewrap_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
compose->toolbar->linewrap_btn,
|
||||
_("Wrap all long lines"), NULL);
|
||||
break;
|
||||
case A_ADDRBOOK:
|
||||
compose->toolbar->addrbook_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
compose->toolbar->addrbook_btn,
|
||||
_("Address book"), NULL);
|
||||
break;
|
||||
case A_SYL_ACTIONS:
|
||||
action_item = g_new0(ToolbarSylpheedActions, 1);
|
||||
action_item->widget = item;
|
||||
action_item->name = g_strdup(toolbar_item->text);
|
||||
|
||||
compose->toolbar->action_list =
|
||||
g_slist_append(compose->toolbar->action_list,
|
||||
action_item);
|
||||
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
item,
|
||||
action_item->name, NULL);
|
||||
|
||||
gtk_widget_show(item);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
compose->toolbar->toolbar = toolbar;
|
||||
|
||||
gtk_widget_show_all(toolbar);
|
||||
}
|
||||
|
||||
static void compose_toolbar_set_sensitive (Compose * compose, gboolean sensitive)
|
||||
{
|
||||
GSList *items = compose->toolbar->action_list;
|
||||
if (compose->toolbar->send_btn)
|
||||
gtk_widget_set_sensitive(compose->toolbar->send_btn, sensitive);
|
||||
if (compose->toolbar->sendl_btn)
|
||||
gtk_widget_set_sensitive(compose->toolbar->sendl_btn, sensitive);
|
||||
if (compose->toolbar->draft_btn )
|
||||
gtk_widget_set_sensitive(compose->toolbar->draft_btn , sensitive);
|
||||
if (compose->toolbar->insert_btn )
|
||||
gtk_widget_set_sensitive(compose->toolbar->insert_btn , sensitive);
|
||||
if (compose->toolbar->attach_btn)
|
||||
gtk_widget_set_sensitive(compose->toolbar->attach_btn, sensitive);
|
||||
if (compose->toolbar->sig_btn)
|
||||
gtk_widget_set_sensitive(compose->toolbar->sig_btn, sensitive);
|
||||
if (compose->toolbar->exteditor_btn)
|
||||
gtk_widget_set_sensitive(compose->toolbar->exteditor_btn, sensitive);
|
||||
if (compose->toolbar->linewrap_btn)
|
||||
gtk_widget_set_sensitive(compose->toolbar->linewrap_btn, sensitive);
|
||||
if (compose->toolbar->addrbook_btn)
|
||||
gtk_widget_set_sensitive(compose->toolbar->addrbook_btn, sensitive);
|
||||
for (; items != NULL; items = g_slist_next(items)) {
|
||||
ToolbarSylpheedActions *item = (ToolbarSylpheedActions *)items->data;
|
||||
gtk_widget_set_sensitive(item->widget, sensitive);
|
||||
}
|
||||
}
|
||||
|
||||
static GtkWidget *compose_account_option_menu_create(Compose *compose)
|
||||
{
|
||||
GList *accounts;
|
||||
|
@ -5379,8 +5174,7 @@ void compose_reflect_prefs_pixmap_theme(void)
|
|||
|
||||
for (cur = compose_list; cur != NULL; cur = cur->next) {
|
||||
compose = (Compose *)cur->data;
|
||||
compose_toolbar_update(compose);
|
||||
common_toolbar_set_style(compose, TOOLBAR_COMPOSE);
|
||||
toolbar_update(TOOLBAR_COMPOSE, compose);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5491,8 +5285,7 @@ static void compose_destroy(Compose *compose)
|
|||
|
||||
gtk_widget_destroy(compose->paned);
|
||||
|
||||
TOOLBAR_DESTROY_ITEMS(compose->toolbar->item_list);
|
||||
TOOLBAR_DESTROY_ACTIONS(compose->toolbar->action_list);
|
||||
toolbar_destroy(compose->toolbar);
|
||||
g_free(compose->toolbar);
|
||||
g_free(compose);
|
||||
|
||||
|
@ -6156,57 +5949,6 @@ static gboolean compose_edit_size_alloc(GtkEditable *widget,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static void toolbar_send_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
compose_send_cb(data, 0, NULL);
|
||||
}
|
||||
|
||||
static void toolbar_send_later_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
compose_send_later_cb(data, 0, NULL);
|
||||
}
|
||||
|
||||
static void toolbar_draft_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
compose_draft_cb(data, 0, NULL);
|
||||
}
|
||||
|
||||
static void toolbar_insert_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
compose_insert_file_cb(data, 0, NULL);
|
||||
}
|
||||
|
||||
static void toolbar_attach_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
compose_attach_cb(data, 0, NULL);
|
||||
}
|
||||
|
||||
static void toolbar_sig_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
Compose *compose = (Compose *)data;
|
||||
|
||||
compose_insert_sig(compose);
|
||||
}
|
||||
|
||||
static void toolbar_ext_editor_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
Compose *compose = (Compose *)data;
|
||||
|
||||
compose_exec_ext_editor(compose);
|
||||
}
|
||||
|
||||
static void toolbar_linewrap_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
Compose *compose = (Compose *)data;
|
||||
|
||||
compose_wrap_line(compose);
|
||||
}
|
||||
|
||||
static void toolbar_address_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
compose_address_cb(data, 0, NULL);
|
||||
}
|
||||
|
||||
static void account_activated(GtkMenuItem *menuitem, gpointer data)
|
||||
{
|
||||
Compose *compose = (Compose *)data;
|
||||
|
@ -6271,7 +6013,7 @@ static void attach_key_pressed(GtkWidget *widget, GdkEventKey *event,
|
|||
static void compose_allow_user_actions (Compose *compose, gboolean allow)
|
||||
{
|
||||
GtkItemFactory *ifactory = gtk_item_factory_from_widget(compose->menubar);
|
||||
compose_toolbar_set_sensitive(compose, allow);
|
||||
toolbar_comp_set_sensitive(compose, allow);
|
||||
menu_set_sensitive(ifactory, "/File", allow);
|
||||
menu_set_sensitive(ifactory, "/Edit", allow);
|
||||
menu_set_sensitive(ifactory, "/Spelling", allow);
|
||||
|
|
|
@ -257,5 +257,7 @@ void compose_reflect_prefs_pixmap_theme (void);
|
|||
|
||||
void compose_destroy_all (void);
|
||||
void compose_draft (gpointer data);
|
||||
void compose_toolbar_cb (gint action,
|
||||
gpointer data);
|
||||
|
||||
#endif /* __COMPOSE_H__ */
|
||||
|
|
|
@ -270,7 +270,7 @@ static gint inc_account_mail(PrefsAccount *account, MainWindow *mainwin)
|
|||
gtk_clist_append(GTK_CLIST(inc_dialog->dialog->clist), text);
|
||||
|
||||
if (mainwin) {
|
||||
toolbar_set_sensitive(mainwin);
|
||||
toolbar_main_set_sensitive(mainwin);
|
||||
main_window_set_menu_sensitive(mainwin);
|
||||
}
|
||||
|
||||
|
@ -370,7 +370,7 @@ void inc_all_account_mail(MainWindow *mainwin, gboolean notify)
|
|||
gtk_clist_append(GTK_CLIST(inc_dialog->dialog->clist), text);
|
||||
}
|
||||
|
||||
toolbar_set_sensitive(mainwin);
|
||||
toolbar_main_set_sensitive(mainwin);
|
||||
main_window_set_menu_sensitive(mainwin);
|
||||
|
||||
new_msgs += inc_start(inc_dialog);
|
||||
|
|
933
src/mainwindow.c
933
src/mainwindow.c
File diff suppressed because it is too large
Load diff
|
@ -166,8 +166,6 @@ void main_window_toolbar_set_compose_button (MainWindow *mainwin,
|
|||
|
||||
SensitiveCond main_window_get_current_state (MainWindow *mainwin);
|
||||
|
||||
void toolbar_set_sensitive (MainWindow *mainwin);
|
||||
|
||||
void toolbar_set_compose_button (Toolbar *toolbar,
|
||||
ComposeButtonType compose_btn_type);
|
||||
void main_window_destroy_all (void);
|
||||
|
|
|
@ -65,10 +65,6 @@ static void key_pressed (GtkWidget *widget,
|
|||
static void focus_in (GtkWidget *widget,
|
||||
GdkEventFocus *event,
|
||||
gpointer data);
|
||||
static void messageview_toolbar_create (MessageView *messageview,
|
||||
GtkWidget *container);
|
||||
static void toolbar_messageview_buttons_cb (GtkWidget *widget,
|
||||
ToolbarItem *item);
|
||||
|
||||
static void return_receipt_show (NoticeView *noticeview,
|
||||
MsgInfo *msginfo);
|
||||
|
@ -78,17 +74,14 @@ static void return_receipt_send_clicked (NoticeView *noticeview,
|
|||
static PrefsAccount *select_account_from_list
|
||||
(GList *ac_list);
|
||||
|
||||
static void messageview_reply_cb (gpointer data,
|
||||
guint action,
|
||||
GtkWidget *widget);
|
||||
|
||||
static void messageview_delete_cb (gpointer data,
|
||||
guint action,
|
||||
GtkWidget *widget);
|
||||
static void messageview_menubar_cb (gpointer data,
|
||||
guint action,
|
||||
GtkWidget *widget);
|
||||
|
||||
static void messageview_close_cb (gpointer data,
|
||||
guint action,
|
||||
GtkWidget *widget);
|
||||
static GList *msgview_list = NULL;
|
||||
|
||||
MessageView *messageview_create(MainWindow *mainwin)
|
||||
{
|
||||
|
@ -154,32 +147,58 @@ static GtkItemFactoryEntry messageview_entries[] =
|
|||
{N_("/_File/---"), NULL, NULL, 0, "<Separator>"},
|
||||
{N_("/_File/_Close"), "<control>W", messageview_close_cb, 0, NULL},
|
||||
|
||||
{N_("/_Message"), NULL, NULL, 0, "<Branch>"},
|
||||
{N_("/_Message/_Reply"), "<control>R", messageview_reply_cb, COMPOSE_REPLY, NULL},
|
||||
{N_("/_Message"), NULL, NULL, 0, "<Branch>"},
|
||||
{N_("/_Message/_Reply"), "<control>R", messageview_menubar_cb, COMPOSE_REPLY, NULL},
|
||||
{N_("/_Message/Repl_y to"), NULL, NULL, 0, "<Branch>"},
|
||||
{N_("/_Message/Repl_y to/_all"), "<shift><control>R", messageview_reply_cb, COMPOSE_REPLY_TO_ALL, NULL},
|
||||
{N_("/_Message/Repl_y to/_sender"), NULL, messageview_reply_cb, COMPOSE_REPLY_TO_SENDER, NULL},
|
||||
{N_("/_Message/Repl_y to/_all"), "<shift><control>R", messageview_menubar_cb, COMPOSE_REPLY_TO_ALL, NULL},
|
||||
{N_("/_Message/Repl_y to/_sender"), NULL, messageview_menubar_cb, COMPOSE_REPLY_TO_SENDER, NULL},
|
||||
{N_("/_Message/Repl_y to/mailing _list"),
|
||||
"<control>L", messageview_reply_cb, COMPOSE_REPLY_TO_LIST, NULL},
|
||||
{N_("/_Message/Follow-up and reply to"),NULL, messageview_reply_cb, COMPOSE_FOLLOWUP_AND_REPLY_TO, NULL},
|
||||
"<control>L", messageview_menubar_cb, COMPOSE_REPLY_TO_LIST, NULL},
|
||||
{N_("/_Message/Follow-up and reply to"),NULL, messageview_menubar_cb, COMPOSE_FOLLOWUP_AND_REPLY_TO, NULL},
|
||||
{N_("/_Message/---"), NULL, NULL, 0, "<Separator>"},
|
||||
{N_("/_Message/_Delete"), "<control>D", messageview_delete_cb, 0, NULL},
|
||||
{N_("/_Message/_Delete"), "<control>D", delete_msgview_cb, 0, NULL},
|
||||
|
||||
{N_("/_Help"), NULL, NULL, 0, "<Branch>"},
|
||||
{N_("/_Help/_About"), NULL, about_show, 0, NULL}
|
||||
{N_("/_Help"), NULL, NULL, 0, "<Branch>"},
|
||||
{N_("/_Help/_About"), NULL, about_show, 0, NULL}
|
||||
};
|
||||
|
||||
|
||||
GList *messageview_get_msgview_list(void)
|
||||
{
|
||||
return msgview_list;
|
||||
}
|
||||
|
||||
void messageview_add_toolbar(MessageView *msgview, GtkWidget *window)
|
||||
{
|
||||
GtkWidget *handlebox;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *menubar;
|
||||
guint n_menu_entries;
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(vbox);
|
||||
gtk_container_add(GTK_CONTAINER(window), vbox);
|
||||
|
||||
n_menu_entries = sizeof(messageview_entries) / sizeof(messageview_entries[0]);
|
||||
menubar = menubar_create(window, messageview_entries,
|
||||
n_menu_entries, "<MessageView>", msgview);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, TRUE, 0);
|
||||
|
||||
handlebox = gtk_handle_box_new();
|
||||
gtk_box_pack_start(GTK_BOX(vbox), handlebox, FALSE, FALSE, 0);
|
||||
msgview->toolbar = toolbar_create(TOOLBAR_MSGVIEW, handlebox,
|
||||
(gpointer)msgview);
|
||||
msgview->handlebox = handlebox;
|
||||
msgview->menubar = menubar;
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(vbox),
|
||||
GTK_WIDGET_PTR(msgview));
|
||||
}
|
||||
|
||||
MessageView *messageview_create_with_new_window(MainWindow *mainwin)
|
||||
{
|
||||
GtkWidget *window;
|
||||
MessageView *msgview;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *menubar;
|
||||
GtkWidget *handlebox;
|
||||
|
||||
guint n_menu_entries;
|
||||
|
||||
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title(GTK_WINDOW(window), _("Sylpheed - Message View"));
|
||||
|
@ -188,10 +207,6 @@ MessageView *messageview_create_with_new_window(MainWindow *mainwin)
|
|||
gtk_widget_set_usize(window, prefs_common.msgwin_width,
|
||||
prefs_common.msgwin_height);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(vbox);
|
||||
gtk_container_add(GTK_CONTAINER(window), vbox);
|
||||
|
||||
msgview = messageview_create(mainwin);
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(window), "size_allocate",
|
||||
|
@ -204,28 +219,19 @@ MessageView *messageview_create_with_new_window(MainWindow *mainwin)
|
|||
gtk_signal_connect(GTK_OBJECT(window), "focus_in_event",
|
||||
GTK_SIGNAL_FUNC(focus_in), msgview);
|
||||
|
||||
n_menu_entries = sizeof(messageview_entries) / sizeof(messageview_entries[0]);
|
||||
menubar = menubar_create(window, messageview_entries,
|
||||
n_menu_entries, "<MessageView>", msgview);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, TRUE, 0);
|
||||
messageview_add_toolbar(msgview, window);
|
||||
|
||||
handlebox = gtk_handle_box_new();
|
||||
gtk_box_pack_start(GTK_BOX(vbox), handlebox, FALSE, FALSE, 0);
|
||||
messageview_toolbar_create(msgview,handlebox);
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(vbox), GTK_WIDGET_PTR(msgview));
|
||||
gtk_widget_grab_focus(msgview->textview->text);
|
||||
gtk_widget_show_all(window);
|
||||
|
||||
msgview->new_window = TRUE;
|
||||
msgview->window = window;
|
||||
msgview->visible = TRUE;
|
||||
msgview->menubar = menubar;
|
||||
msgview->handlebox = handlebox;
|
||||
|
||||
|
||||
toolbar_set_style(msgview->toolbar->toolbar, msgview->handlebox,
|
||||
prefs_common.toolbar_style);
|
||||
messageview_init(msgview);
|
||||
common_toolbar_set_style(msgview, TOOLBAR_MSGVIEW);
|
||||
msgview_list = g_list_append(msgview_list, msgview);
|
||||
|
||||
return msgview;
|
||||
}
|
||||
|
@ -581,6 +587,17 @@ static void messageview_change_view_type(MessageView *messageview,
|
|||
messageview->type = type;
|
||||
}
|
||||
|
||||
void messageview_reflect_prefs_pixmap_theme(void)
|
||||
{
|
||||
GList *cur;
|
||||
MessageView *msgview;
|
||||
|
||||
for (cur = msgview_list; cur != NULL; cur = cur->next) {
|
||||
msgview = (MessageView*)cur->data;
|
||||
toolbar_update(TOOLBAR_MSGVIEW, msgview);
|
||||
}
|
||||
}
|
||||
|
||||
void messageview_clear(MessageView *messageview)
|
||||
{
|
||||
messageview_change_view_type(messageview, MVIEW_TEXT);
|
||||
|
@ -596,6 +613,7 @@ void messageview_destroy(MessageView *messageview)
|
|||
GtkWidget *imageview = GTK_WIDGET_PTR(messageview->imageview);
|
||||
GtkWidget *mimeview = GTK_WIDGET_PTR(messageview->mimeview);
|
||||
|
||||
debug_print("destroy messageview\n");
|
||||
headerview_destroy(messageview->headerview);
|
||||
textview_destroy(messageview->textview);
|
||||
imageview_destroy(messageview->imageview);
|
||||
|
@ -603,8 +621,12 @@ void messageview_destroy(MessageView *messageview)
|
|||
noticeview_destroy(messageview->noticeview);
|
||||
|
||||
toolbar_clear_list(TOOLBAR_MSGVIEW);
|
||||
TOOLBAR_DESTROY_ITEMS(messageview->toolbar->item_list);
|
||||
TOOLBAR_DESTROY_ACTIONS(messageview->toolbar->action_list);
|
||||
if (messageview->toolbar) {
|
||||
toolbar_destroy(messageview->toolbar);
|
||||
g_free(messageview->toolbar);
|
||||
}
|
||||
|
||||
msgview_list = g_list_remove(msgview_list, messageview);
|
||||
|
||||
g_free(messageview);
|
||||
|
||||
|
@ -817,197 +839,18 @@ static PrefsAccount *select_account_from_list(GList *ac_list)
|
|||
return account_find_from_id(account_id);
|
||||
}
|
||||
|
||||
static void messageview_toolbar_create(MessageView *messageview,
|
||||
GtkWidget *container)
|
||||
static void messageview_menubar_cb(gpointer data, guint action, GtkWidget *widget)
|
||||
{
|
||||
ToolbarItem *toolbar_item;
|
||||
MessageView *msgview = (MessageView*)data;
|
||||
MainWindow *mainwin = (MainWindow*)msgview->mainwin;
|
||||
|
||||
GtkWidget *toolbar;
|
||||
GtkWidget *icon_wid = NULL;
|
||||
GtkWidget *item;
|
||||
GtkTooltips *toolbar_tips;
|
||||
ToolbarSylpheedActions *action_item;
|
||||
GSList *cur;
|
||||
GSList *toolbar_list;
|
||||
toolbar_tips = gtk_tooltips_new();
|
||||
|
||||
toolbar_read_config_file(TOOLBAR_MSGVIEW);
|
||||
toolbar_list = toolbar_get_list(TOOLBAR_MSGVIEW);
|
||||
|
||||
messageview->toolbar = g_new0(Toolbar, 1);
|
||||
|
||||
toolbar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL,
|
||||
GTK_TOOLBAR_BOTH);
|
||||
gtk_container_add(GTK_CONTAINER(container), toolbar);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(container), 2);
|
||||
gtk_toolbar_set_button_relief(GTK_TOOLBAR(toolbar), GTK_RELIEF_NONE);
|
||||
gtk_toolbar_set_space_style(GTK_TOOLBAR(toolbar),
|
||||
GTK_TOOLBAR_SPACE_LINE);
|
||||
|
||||
for (cur = toolbar_list; cur != NULL; cur = cur->next) {
|
||||
|
||||
if (g_strcasecmp(((ToolbarItem*)cur->data)->file, SEPARATOR) == 0) {
|
||||
gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
|
||||
continue;
|
||||
}
|
||||
|
||||
toolbar_item = g_new0(ToolbarItem, 1);
|
||||
toolbar_item->file = g_strdup(((ToolbarItem*)cur->data)->file);
|
||||
toolbar_item->text = g_strdup(((ToolbarItem*)cur->data)->text);
|
||||
toolbar_item->index = ((ToolbarItem*)cur->data)->index;
|
||||
|
||||
toolbar_item->parent = g_new0(ToolbarParent, 1);
|
||||
toolbar_item->parent->data = (gpointer)messageview;
|
||||
toolbar_item->parent->type = TOOLBAR_MSGVIEW;
|
||||
|
||||
/* collect toolbar items in list to keep track */
|
||||
messageview->toolbar->item_list =
|
||||
g_slist_append(messageview->toolbar->item_list,
|
||||
toolbar_item);
|
||||
|
||||
icon_wid = stock_pixmap_widget(container, stock_pixmap_get_icon(toolbar_item->file));
|
||||
item = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
|
||||
toolbar_item->text,
|
||||
(""),
|
||||
(""),
|
||||
icon_wid, toolbar_messageview_buttons_cb,
|
||||
toolbar_item);
|
||||
|
||||
switch (toolbar_item->index) {
|
||||
case A_COMPOSE_EMAIL:
|
||||
messageview->toolbar->compose_mail_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
messageview->toolbar->compose_mail_btn,
|
||||
_("Compose Email"), NULL);
|
||||
break;
|
||||
case A_REPLY_MESSAGE:
|
||||
messageview->toolbar->reply_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
messageview->toolbar->reply_btn,
|
||||
_("Reply to Message"), NULL);
|
||||
break;
|
||||
case A_REPLY_SENDER:
|
||||
messageview->toolbar->replysender_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
messageview->toolbar->replysender_btn,
|
||||
_("Reply to Sender"), NULL);
|
||||
break;
|
||||
case A_REPLY_ALL:
|
||||
messageview->toolbar->replyall_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
messageview->toolbar->replyall_btn,
|
||||
_("Reply to All"), NULL);
|
||||
break;
|
||||
case A_REPLY_ML:
|
||||
messageview->toolbar->replylist_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
messageview->toolbar->replylist_btn,
|
||||
_("Reply to Mailing-list"), NULL);
|
||||
break;
|
||||
case A_FORWARD:
|
||||
messageview->toolbar->fwd_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
messageview->toolbar->fwd_btn,
|
||||
_("Forward Message"), NULL);
|
||||
break;
|
||||
case A_DELETE:
|
||||
messageview->toolbar->delete_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
messageview->toolbar->delete_btn,
|
||||
_("Delete Message"), NULL);
|
||||
break;
|
||||
case A_GOTO_NEXT:
|
||||
messageview->toolbar->next_btn = item;
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
messageview->toolbar->next_btn,
|
||||
_("Goto Next Message"), NULL);
|
||||
break;
|
||||
case A_SYL_ACTIONS:
|
||||
action_item = g_new0(ToolbarSylpheedActions, 1);
|
||||
action_item->widget = item;
|
||||
action_item->name = g_strdup(toolbar_item->text);
|
||||
|
||||
messageview->toolbar->action_list =
|
||||
g_slist_append(messageview->toolbar->action_list,
|
||||
action_item);
|
||||
|
||||
gtk_tooltips_set_tip(GTK_TOOLTIPS(toolbar_tips),
|
||||
item,
|
||||
action_item->name, NULL);
|
||||
|
||||
gtk_widget_show(item);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
messageview->toolbar->toolbar = toolbar;
|
||||
|
||||
gtk_widget_show_all(toolbar);
|
||||
}
|
||||
|
||||
static void toolbar_messageview_buttons_cb(GtkWidget *widget,
|
||||
ToolbarItem *item)
|
||||
{
|
||||
|
||||
struct {
|
||||
gint index;
|
||||
void (*func)(GtkWidget *widget, gpointer data);
|
||||
} messageview_action[] = {
|
||||
{ A_COMPOSE_EMAIL, common_toolbar_compose_cb },
|
||||
{ A_REPLY_MESSAGE, common_toolbar_reply_cb },
|
||||
{ A_REPLY_SENDER, common_toolbar_reply_to_sender_cb },
|
||||
{ A_REPLY_ALL, common_toolbar_reply_to_all_cb },
|
||||
{ A_REPLY_ML, common_toolbar_reply_to_list_cb },
|
||||
{ A_FORWARD, common_toolbar_forward_cb },
|
||||
{ A_DELETE, common_toolbar_delete_cb },
|
||||
{ A_GOTO_NEXT, common_toolbar_next_unread_cb },
|
||||
{ A_SYL_ACTIONS, common_toolbar_actions_execute_cb },
|
||||
};
|
||||
|
||||
|
||||
gint num_items = sizeof(messageview_action)/sizeof(messageview_action[0]);
|
||||
gint i;
|
||||
for (i = 0; i < num_items; i++) {
|
||||
|
||||
if (messageview_action[i].index == item->index) {
|
||||
messageview_action[i].func(widget, (gpointer)item->parent);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void messageview_reply_cb(gpointer data, guint action, GtkWidget *widget)
|
||||
{
|
||||
MessageView *messageview = (MessageView *)data;
|
||||
|
||||
switch (action) {
|
||||
case COMPOSE_REPLY:
|
||||
common_toolbar_reply_cb(NULL,messageview);
|
||||
break;
|
||||
case COMPOSE_REPLY_TO_ALL:
|
||||
common_toolbar_reply_to_all_cb(NULL,messageview);
|
||||
break;
|
||||
case COMPOSE_REPLY_TO_SENDER:
|
||||
common_toolbar_reply_to_sender_cb(NULL,messageview);
|
||||
break;
|
||||
case COMPOSE_REPLY_TO_LIST:
|
||||
common_toolbar_reply_to_list_cb(NULL,messageview);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void messageview_delete_cb(gpointer data, guint action, GtkWidget *widget)
|
||||
{
|
||||
MessageView *messageview = (MessageView *)data;
|
||||
|
||||
common_toolbar_delete_cb(NULL,messageview);
|
||||
g_return_if_fail(mainwin != NULL);
|
||||
reply_cb(mainwin, action, widget);
|
||||
}
|
||||
|
||||
static void messageview_close_cb(gpointer data, guint action, GtkWidget *widget)
|
||||
{
|
||||
MessageView *messageview = (MessageView *)data;
|
||||
|
||||
|
||||
gtk_widget_destroy(messageview->window);
|
||||
}
|
||||
|
|
|
@ -43,7 +43,6 @@ typedef enum
|
|||
struct _MessageView
|
||||
{
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *menubar;
|
||||
|
||||
MessageType type;
|
||||
gboolean new_window;
|
||||
|
@ -52,6 +51,7 @@ struct _MessageView
|
|||
/* Toolbar handlebox */
|
||||
GtkWidget *handlebox;
|
||||
Toolbar *toolbar;
|
||||
GtkWidget *menubar;
|
||||
|
||||
HeaderView *headerview;
|
||||
TextView *textview;
|
||||
|
@ -86,8 +86,8 @@ void messageview_copy_clipboard (MessageView *messageview);
|
|||
void messageview_select_all (MessageView *messageview);
|
||||
void messageview_set_position (MessageView *messageview,
|
||||
gint pos);
|
||||
void messageview_toggle_view_real(MessageView *messageview);
|
||||
|
||||
void messageview_toggle_view_real (MessageView *messageview);
|
||||
GList *messageview_get_msgview_list (void);
|
||||
gboolean messageview_search_string (MessageView *messageview,
|
||||
const gchar *str,
|
||||
gboolean case_sens);
|
||||
|
@ -97,4 +97,7 @@ gboolean messageview_search_string_backward (MessageView *messageview,
|
|||
|
||||
gboolean messageview_is_visible (MessageView *messageview);
|
||||
|
||||
void messageview_add_toolbar (MessageView *msgview,
|
||||
GtkWidget *vbox);
|
||||
void messageview_reflect_prefs_pixmap_theme (void);
|
||||
#endif /* __MESSAGEVIEW_H__ */
|
||||
|
|
|
@ -1068,7 +1068,7 @@ gboolean summary_show(SummaryView *summaryview, FolderItem *item)
|
|||
|
||||
summary_status_show(summaryview);
|
||||
summary_set_menu_sensitive(summaryview);
|
||||
toolbar_set_sensitive(summaryview->mainwin);
|
||||
toolbar_main_set_sensitive(summaryview->mainwin);
|
||||
|
||||
debug_print("\n");
|
||||
STATUSBAR_PUSH(summaryview->mainwin, _("Done."));
|
||||
|
@ -1131,7 +1131,7 @@ void summary_clear_all(SummaryView *summaryview)
|
|||
{
|
||||
summary_clear_list(summaryview);
|
||||
summary_set_menu_sensitive(summaryview);
|
||||
toolbar_set_sensitive(summaryview->mainwin);
|
||||
toolbar_main_set_sensitive(summaryview->mainwin);
|
||||
summary_status_show(summaryview);
|
||||
}
|
||||
|
||||
|
@ -2409,7 +2409,7 @@ static void summary_display_msg_full(SummaryView *summaryview,
|
|||
}
|
||||
|
||||
summary_set_menu_sensitive(summaryview);
|
||||
toolbar_set_sensitive(summaryview->mainwin);
|
||||
toolbar_main_set_sensitive(summaryview->mainwin);
|
||||
|
||||
summary_unlock(summaryview);
|
||||
}
|
||||
|
@ -4785,7 +4785,7 @@ static void summary_selected(GtkCTree *ctree, GtkCTreeNode *row,
|
|||
GTK_CLIST(ctree)->selection->next) {
|
||||
summaryview->display_msg = FALSE;
|
||||
summary_set_menu_sensitive(summaryview);
|
||||
toolbar_set_sensitive(summaryview->mainwin);
|
||||
toolbar_main_set_sensitive(summaryview->mainwin);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -4829,7 +4829,7 @@ static void summary_selected(GtkCTree *ctree, GtkCTreeNode *row,
|
|||
summaryview->display_msg = FALSE;
|
||||
} else {
|
||||
summary_set_menu_sensitive(summaryview);
|
||||
toolbar_set_sensitive(summaryview->mainwin);
|
||||
toolbar_main_set_sensitive(summaryview->mainwin);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue