aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2012-08-15 05:04:29 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2012-08-15 05:04:29 +0000
commit472ddf895f7d60199d00c772f883bec878a78d48 (patch)
tree13a79df689d40b9934055805ad59b1f11ffa9b25 /src
parentb21efbe062777f0e824dc0cb013320fa42403966 (diff)
added an option to specify the position of attach tool button.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@3148 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r--src/messageview.c35
-rw-r--r--src/prefs_common_dialog.c96
2 files changed, 113 insertions, 18 deletions
diff --git a/src/messageview.c b/src/messageview.c
index e59046e2..07496b6c 100644
--- a/src/messageview.c
+++ b/src/messageview.c
@@ -69,6 +69,8 @@
static GList *messageview_list = NULL;
+static void messageview_set_mime_view_layout
+ (MessageView *messageview);
static void messageview_change_view_type(MessageView *messageview,
MessageType type);
static void messageview_set_tool_menu (MessageView *messageview,
@@ -556,14 +558,8 @@ void messageview_init(MessageView *messageview)
void messageview_reflect_prefs(MessageView *messageview)
{
- if (messageview->type == MVIEW_MIME) {
- if (prefs_common.show_attach_tab)
- gtk_widget_hide(messageview->toolbar_vbox);
- else
- gtk_widget_show(messageview->toolbar_vbox);
- gtk_notebook_set_show_tabs(GTK_NOTEBOOK(messageview->notebook),
- prefs_common.show_attach_tab);
- }
+ if (messageview->type == MVIEW_MIME)
+ messageview_set_mime_view_layout(messageview);
}
GList *messageview_get_window_list(void)
@@ -637,6 +633,22 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo,
return 0;
}
+static void messageview_set_mime_view_layout(MessageView *messageview)
+{
+ if (prefs_common.attach_toolbutton_pos == 0)
+ gtk_box_set_child_packing(GTK_BOX(messageview->hbox), messageview->toolbar_vbox, FALSE, FALSE, 0, GTK_PACK_START);
+ else
+ gtk_box_set_child_packing(GTK_BOX(messageview->hbox), messageview->toolbar_vbox, FALSE, FALSE, 0, GTK_PACK_END);
+
+ if (prefs_common.show_attach_tab)
+ gtk_widget_hide(messageview->toolbar_vbox);
+ else
+ gtk_widget_show(messageview->toolbar_vbox);
+
+ gtk_notebook_set_show_tabs(GTK_NOTEBOOK(messageview->notebook),
+ prefs_common.show_attach_tab);
+}
+
static void messageview_change_view_type(MessageView *messageview,
MessageType type)
{
@@ -645,12 +657,7 @@ static void messageview_change_view_type(MessageView *messageview,
if (messageview->type == type) return;
if (type == MVIEW_MIME) {
- if (prefs_common.show_attach_tab)
- gtk_widget_hide(messageview->toolbar_vbox);
- else
- gtk_widget_show(messageview->toolbar_vbox);
- gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook),
- prefs_common.show_attach_tab);
+ messageview_set_mime_view_layout(messageview);
gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook),
messageview->current_page);
if (messageview->current_page == 0)
diff --git a/src/prefs_common_dialog.c b/src/prefs_common_dialog.c
index 1a3a1cba..847a4fe6 100644
--- a/src/prefs_common_dialog.c
+++ b/src/prefs_common_dialog.c
@@ -171,6 +171,7 @@ static struct Message {
} message;
static struct Attach {
+ GtkWidget *radiobtn_attach_toolbtn_pos;
GtkWidget *chkbtn_show_attach_tab;
GtkWidget *chkbtn_show_files_first;
@@ -299,6 +300,9 @@ static void prefs_common_uri_set_entry (PrefParam *pparam);
static void prefs_common_addr_compl_set_data_from_radiobtn (PrefParam *pparam);
static void prefs_common_addr_compl_set_radiobtn (PrefParam *pparam);
+static void prefs_common_attach_toolbtn_pos_set_data_from_radiobtn (PrefParam *pparam);
+static void prefs_common_attach_toolbtn_pos_set_radiobtn (PrefParam *pparam);
+
static PrefsUIData ui_data[] = {
/* Receive */
{"autochk_newmail", &receive.checkbtn_autochk,
@@ -469,6 +473,9 @@ static PrefsUIData ui_data[] = {
prefs_set_data_from_toggle, prefs_set_toggle},
/* Attachment */
+ {"attach_toolbutton_pos", &attach.radiobtn_attach_toolbtn_pos,
+ prefs_common_attach_toolbtn_pos_set_data_from_radiobtn,
+ prefs_common_attach_toolbtn_pos_set_radiobtn},
{"show_attach_tab", &attach.chkbtn_show_attach_tab,
prefs_set_data_from_toggle, prefs_set_toggle},
{"show_attached_files_first", &attach.chkbtn_show_files_first,
@@ -2009,6 +2016,10 @@ static GtkWidget *prefs_attach_create(void)
{
GtkWidget *vbox1;
GtkWidget *vbox2;
+ GtkWidget *hbox1;
+ GtkWidget *label;
+ GtkWidget *radiobtn_attach_toolbtn_pos;
+ GtkWidget *radiobtn_attach_toolbtn_pos2;
GtkWidget *chkbtn_show_attach_tab;
GtkWidget *chkbtn_show_files_first;
GtkWidget *frame_image;
@@ -2023,10 +2034,36 @@ static GtkWidget *prefs_attach_create(void)
gtk_widget_show (vbox2);
gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
- PACK_CHECK_BUTTON(vbox2, chkbtn_show_attach_tab,
- _("Toggle attachment list view with tab"));
- PACK_CHECK_BUTTON(vbox2, chkbtn_show_files_first,
- _("Show attached files first on message view"));
+ hbox1 = gtk_hbox_new (FALSE, 8);
+ gtk_widget_show (hbox1);
+ gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
+
+ label = gtk_label_new (_("Position of attachment tool button:"));
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
+
+ radiobtn_attach_toolbtn_pos = gtk_radio_button_new_with_label
+ (NULL, _("Left"));
+ gtk_widget_show (radiobtn_attach_toolbtn_pos);
+ gtk_box_pack_start (GTK_BOX(hbox1), radiobtn_attach_toolbtn_pos,
+ FALSE, FALSE, 0);
+ g_object_set_data (G_OBJECT (radiobtn_attach_toolbtn_pos), MENU_VAL_ID,
+ GINT_TO_POINTER (0));
+
+ radiobtn_attach_toolbtn_pos2 = gtk_radio_button_new_with_label_from_widget
+ (GTK_RADIO_BUTTON (radiobtn_attach_toolbtn_pos), _("Right"));
+ gtk_widget_show (radiobtn_attach_toolbtn_pos2);
+ gtk_box_pack_start (GTK_BOX (hbox1), radiobtn_attach_toolbtn_pos2,
+ FALSE, FALSE, 0);
+ g_object_set_data (G_OBJECT (radiobtn_attach_toolbtn_pos2), MENU_VAL_ID,
+ GINT_TO_POINTER (1));
+
+ PACK_CHECK_BUTTON (vbox2, chkbtn_show_attach_tab,
+ _("Toggle attachment list view with tab"));
+ SET_TOGGLE_SENSITIVITY_REV (chkbtn_show_attach_tab, hbox1);
+
+ PACK_CHECK_BUTTON (vbox2, chkbtn_show_files_first,
+ _("Show attached files first on message view"));
PACK_FRAME(vbox1, frame_image, _("Images"));
@@ -2041,6 +2078,7 @@ static GtkWidget *prefs_attach_create(void)
_("Display images as inline"));
attach.chkbtn_show_attach_tab = chkbtn_show_attach_tab;
+ attach.radiobtn_attach_toolbtn_pos = radiobtn_attach_toolbtn_pos;
attach.chkbtn_show_files_first = chkbtn_show_files_first;
attach.chkbtn_resize_image = chkbtn_resize_image;
@@ -4441,6 +4479,56 @@ static void prefs_common_addr_compl_set_radiobtn(PrefParam *pparam)
}
}
+static void prefs_common_attach_toolbtn_pos_set_data_from_radiobtn(PrefParam *pparam)
+{
+ PrefsUIData *ui_data;
+ GtkRadioButton *radiobtn;
+ GSList *group;
+
+ ui_data = (PrefsUIData *)pparam->ui_data;
+ g_return_if_fail(ui_data != NULL);
+ g_return_if_fail(*ui_data->widget != NULL);
+
+ radiobtn = GTK_RADIO_BUTTON(*ui_data->widget);
+ group = gtk_radio_button_get_group(radiobtn);
+ while (group != NULL) {
+ GtkToggleButton *btn = GTK_TOGGLE_BUTTON(group->data);
+
+ if (gtk_toggle_button_get_active(btn)) {
+ prefs_common.attach_toolbutton_pos =
+ GPOINTER_TO_INT(g_object_get_data(G_OBJECT(btn), MENU_VAL_ID));
+ break;
+ }
+ group = group->next;
+ }
+}
+
+static void prefs_common_attach_toolbtn_pos_set_radiobtn(PrefParam *pparam)
+{
+ PrefsUIData *ui_data;
+ GtkRadioButton *radiobtn;
+ GSList *group;
+
+ ui_data = (PrefsUIData *)pparam->ui_data;
+ g_return_if_fail(ui_data != NULL);
+ g_return_if_fail(*ui_data->widget != NULL);
+
+ radiobtn = GTK_RADIO_BUTTON(*ui_data->widget);
+ group = gtk_radio_button_get_group(radiobtn);
+ while (group != NULL) {
+ GtkToggleButton *btn = GTK_TOGGLE_BUTTON(group->data);
+ gint data;
+
+ data = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(btn),
+ MENU_VAL_ID));
+ if (data == prefs_common.attach_toolbutton_pos) {
+ gtk_toggle_button_set_active(btn, TRUE);
+ break;
+ }
+ group = group->next;
+ }
+}
+
static void prefs_common_dispitem_clicked(void)
{
prefs_summary_column_open(FOLDER_ITEM_IS_SENT_FOLDER