📄 dialog-pref.c
字号:
GtkWidget *frame; gchar str[8]; frame = gtk_frame_new(_("SMTP - Settings")); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); table = gtk_table_new(2, 3, FALSE); gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 5); /* labels */ label = gtk_label_new(_("SMTP-Server")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_SHRINK, GTK_SHRINK, 5, 2); label = gtk_label_new(_("E-Mail Address")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_SHRINK, GTK_SHRINK, 5, 2); label = gtk_label_new(_("Hostname (optional)")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_SHRINK, GTK_SHRINK, 5, 2); /* server & port */ box = gtk_hbox_new(FALSE, 0); gtk_table_attach(GTK_TABLE(table), box, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 5, 2); pw.smtp_eserver = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(box), pw.smtp_eserver, TRUE, TRUE, 0); pw.smtp_eport = gtk_entry_new_with_max_length(6); gtk_widget_set_usize(pw.smtp_eport, 60, -2); gtk_box_pack_end(GTK_BOX(box), pw.smtp_eport, FALSE, FALSE, 0); label = gtk_label_new(_(" Port:")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_box_pack_end(GTK_BOX(box), label, FALSE, FALSE, 4); /* E-Mail */ pw.smtp_email = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), pw.smtp_email, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 5, 2); /* Hostname */ pw.smtp_ehostname = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), pw.smtp_ehostname, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 5, 2); /* load configuration data */ gtk_entry_set_text(GTK_ENTRY(pw.smtp_eserver), configuration.smtp_server); sprintf(str, "%d", (gint) configuration.smtp_port); gtk_entry_set_text(GTK_ENTRY(pw.smtp_eport), str); gtk_entry_set_text(GTK_ENTRY(pw.smtp_email), configuration.smtp_email); gtk_entry_set_text(GTK_ENTRY(pw.smtp_ehostname), configuration.smtp_host); /* connect to prefs_changed callback */ gtk_signal_connect(GTK_OBJECT(pw.smtp_eserver), "changed", GTK_SIGNAL_FUNC(prefs_changed_cb), NULL); gtk_signal_connect(GTK_OBJECT(pw.smtp_eport), "changed", GTK_SIGNAL_FUNC(prefs_changed_cb), NULL); gtk_signal_connect(GTK_OBJECT(pw.smtp_email), "changed", GTK_SIGNAL_FUNC(prefs_changed_cb), NULL); gtk_signal_connect(GTK_OBJECT(pw.smtp_ehostname), "changed", GTK_SIGNAL_FUNC(prefs_changed_cb), NULL); gtk_widget_show_all(vbox); return frame;}/*********************** receiving mail page ******************************//* returns the page to configure how e-mails are received */static GtkWidget *email_receive_page(void){ GtkWidget *vbox; GtkWidget *frame; GtkWidget *table; GtkWidget *notebook; GtkWidget *rb[3]; /* radio Button */ const gchar *receive_methods[] = { "pop3", "mbox", "none", NULL }; gint i; /* each sen method is a page in notebook */ pw.mail_receive_nb = notebook = gtk_notebook_new(); gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), FALSE); gtk_notebook_set_show_border(GTK_NOTEBOOK(notebook), FALSE); gtk_notebook_append_page( GTK_NOTEBOOK(notebook), pref_mail_pop3(), NULL ); gtk_notebook_append_page( GTK_NOTEBOOK(notebook), gtk_label_new("not implemented"), NULL); gtk_notebook_append_page( GTK_NOTEBOOK(notebook), gtk_label_new("can't receive mails"), NULL); table = gtk_table_new(1, 2, FALSE); frame = gtk_frame_new(_("Receive-Method")); gtk_table_attach(GTK_TABLE(table), frame, 0, 1, 0, 1, GTK_SHRINK | GTK_FILL, GTK_EXPAND | GTK_FILL, 5, 0); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_table_attach(GTK_TABLE(table), notebook, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 5, 5); rb[0] = gtk_radio_button_new_with_label_from_widget(NULL, _("POP3")); gtk_box_pack_start(GTK_BOX(vbox), rb[0], FALSE, FALSE, 2); gtk_signal_connect(GTK_OBJECT(rb[0]), "toggled", GTK_SIGNAL_FUNC(email_receive_method_cb), GINT_TO_POINTER(0)); /* data is the pagenum of the notebook */ rb[1] = gtk_radio_button_new_with_label_from_widget( GTK_RADIO_BUTTON(rb[0]), _("MBOX")); gtk_box_pack_start(GTK_BOX(vbox), rb[1], FALSE, FALSE, 2); gtk_signal_connect(GTK_OBJECT(rb[1]), "toggled", GTK_SIGNAL_FUNC(email_receive_method_cb), GINT_TO_POINTER(1)); rb[2] = gtk_radio_button_new_with_label_from_widget( GTK_RADIO_BUTTON(rb[1]), _("none")); gtk_box_pack_start(GTK_BOX(vbox), rb[2], FALSE, FALSE, 2); gtk_signal_connect(GTK_OBJECT(rb[2]), "toggled", GTK_SIGNAL_FUNC(email_receive_method_cb), GINT_TO_POINTER(2)); for(i = 0; receive_methods[i] != NULL; i++) if(strcmp(receive_methods[i], configuration.mail_receive_method) == 0) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rb[i]), TRUE); break; } gtk_widget_show_all(table); gtk_notebook_set_page(GTK_NOTEBOOK(notebook),i); return table;}/****************************** set_font page ********************************//* returns the page to configure the textfont */static GtkWidget *set_font_page(void){ GtkWidget *hbox, *vbox; GtkWidget *label; GtkWidget *button; GtkWidget *frame; frame = gtk_frame_new(_("Font - Settings")); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); label = gtk_label_new("Textfont:"); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); pw.font_entry = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(pw.font_entry), configuration.fontname); gtk_box_pack_start(GTK_BOX(hbox), pw.font_entry, FALSE, FALSE, 5); button = gtk_button_new_with_label("Browse"); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (font_sel_open_cb), NULL); gtk_widget_show_all(frame); return frame;}/* preferences frame for POP3 in the receive configuration */static GtkWidget *pref_mail_pop3(void){ GtkWidget *vbox, *box; GtkWidget *table; GtkWidget *label; GtkAdjustment *adj; GtkWidget * frame; gchar str[8]; frame = gtk_frame_new(_("POP3 - Settings")); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(frame), vbox); table = gtk_table_new(2, 3, FALSE); gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 5); /* labels */ label = gtk_label_new(_("Server")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_SHRINK, GTK_SHRINK, 5, 2); label = gtk_label_new(_("Username")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_SHRINK, GTK_SHRINK, 5, 2); label = gtk_label_new(_("Password")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_SHRINK, GTK_SHRINK, 5, 2); /* server & port */ box = gtk_hbox_new(FALSE, 0); gtk_table_attach(GTK_TABLE(table), box, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 5, 2); pw.pop3_eserver = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(box), pw.pop3_eserver, TRUE, TRUE, 0); pw.pop3_eport = gtk_entry_new_with_max_length(6); /* why do i have to do this ? */ gtk_widget_set_usize(pw.pop3_eport, 60, -2); gtk_box_pack_end(GTK_BOX(box), pw.pop3_eport, FALSE, FALSE, 0); label = gtk_label_new(_(" Port:")); gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); gtk_box_pack_end(GTK_BOX(box), label, FALSE, FALSE, 4); /* Username */ pw.pop3_euser = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), pw.pop3_euser, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 5, 2); /* Password */ pw.pop3_epasswd = gtk_entry_new(); gtk_entry_set_visibility(GTK_ENTRY(pw.pop3_epasswd), FALSE); gtk_table_attach(GTK_TABLE(table), pw.pop3_epasswd, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 5, 2); /* Some Flags */ box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 0); pw.pop3_cbcheck=gtk_check_button_new_with_label(_("check mail every")); gtk_box_pack_start(GTK_BOX(box), pw.pop3_cbcheck, FALSE, FALSE, 0); adj = (GtkAdjustment *) gtk_adjustment_new(2, 1, 60, 1, 1, 0); pw.pop3_sbcheck_period = gtk_spin_button_new(adj, 0.0, 0); gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(pw.pop3_sbcheck_period), TRUE); gtk_box_pack_start(GTK_BOX(box), pw.pop3_sbcheck_period, FALSE, TRUE, 0); label = gtk_label_new(_("minutes")); gtk_box_pack_start(GTK_BOX(box), label, FALSE, TRUE, 0); pw.pop3_cbstore_passwd = gtk_check_button_new_with_label(_("Store Password")); gtk_box_pack_start(GTK_BOX(vbox), pw.pop3_cbstore_passwd, FALSE, FALSE, 0); pw.pop3_cbdelete = gtk_check_button_new_with_label( _("delete messages from gsms")); gtk_box_pack_start(GTK_BOX(vbox), pw.pop3_cbdelete, FALSE, FALSE, 0); /* load configuration data */ gtk_entry_set_text(GTK_ENTRY(pw.pop3_eserver), configuration.pop3_server); sprintf(str, "%d", (gint) configuration.pop3_port); gtk_entry_set_text(GTK_ENTRY(pw.pop3_eport), str); gtk_entry_set_text(GTK_ENTRY(pw.pop3_euser), configuration.pop3_user); gtk_entry_set_text(GTK_ENTRY(pw.pop3_epasswd), configuration.pop3_passwd); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pw.pop3_cbcheck), configuration.pop3_check > 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(pw.pop3_sbcheck_period), (gfloat) ABS(configuration.pop3_check)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pw.pop3_cbstore_passwd), configuration.pop3_store); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pw.pop3_cbdelete), configuration.pop3_delete); /* connect to prefs_changed callback */ gtk_signal_connect(GTK_OBJECT(pw.pop3_eserver), "changed", GTK_SIGNAL_FUNC(prefs_changed_cb), NULL); gtk_signal_connect(GTK_OBJECT(pw.pop3_eport), "changed", GTK_SIGNAL_FUNC(prefs_changed_cb), NULL); gtk_signal_connect(GTK_OBJECT(pw.pop3_euser), "changed", GTK_SIGNAL_FUNC(prefs_changed_cb), NULL); gtk_signal_connect(GTK_OBJECT(pw.pop3_epasswd), "changed", GTK_SIGNAL_FUNC(prefs_changed_cb), NULL); gtk_signal_connect(GTK_OBJECT(pw.pop3_cbcheck), "toggled", GTK_SIGNAL_FUNC(prefs_changed_cb), NULL); gtk_signal_connect (GTK_OBJECT (adj), "value_changed", GTK_SIGNAL_FUNC (prefs_changed_cb), NULL); gtk_signal_connect(GTK_OBJECT(pw.pop3_cbstore_passwd), "toggled", GTK_SIGNAL_FUNC(prefs_changed_cb), NULL); gtk_signal_connect(GTK_OBJECT(pw.pop3_cbdelete), "toggled", GTK_SIGNAL_FUNC(prefs_changed_cb), NULL); gtk_widget_show_all(vbox); return frame;}/*************************** callbacks ***********************************/static voidnetwork_proxy_enable_cb(GtkToggleButton * togglebutton, gpointer user_data){ if (gtk_toggle_button_get_active(togglebutton)) { gtk_widget_set_sensitive(GTK_WIDGET(pw.net_ehttp_proxy), TRUE); gtk_widget_set_sensitive(GTK_WIDGET(pw.net_ehttp_proxy_port), TRUE); } else { gtk_widget_set_sensitive(GTK_WIDGET(pw.net_ehttp_proxy),FALSE); gtk_widget_set_sensitive(GTK_WIDGET(pw.net_ehttp_proxy_port), FALSE); } prefs_changed_cb(NULL, NULL);}/* callback: if one of the radiobuttons in sennd mail is pressed */static voidemail_send_method_cb(GtkToggleButton * togglebutton, gpointer user_data){ if (gtk_toggle_button_get_active(togglebutton)) gtk_notebook_set_page(GTK_NOTEBOOK(pw.mail_send_nb), GPOINTER_TO_INT(user_data)); prefs_changed_cb(NULL, NULL);}/* callback: if one of the radiobuttons in receive mail is pressed */static voidemail_receive_method_cb(GtkToggleButton * togglebutton, gpointer user_data){ if (gtk_toggle_button_get_active(togglebutton)) gtk_notebook_set_page(GTK_NOTEBOOK(pw.mail_receive_nb), GPOINTER_TO_INT(user_data)); prefs_changed_cb(NULL, NULL);}/* this event is called if something in the preferences gets changed */static voidprefs_changed_cb (GtkWidget *widget, gpointer data){ if(pw.propertybox != NULL) gnome_property_box_changed( GNOME_PROPERTY_BOX (pw.propertybox));}static voidapply_cb (GnomePropertyBox *pbox, gint page, gpointer data){ if(page == -1) { save_to_configuration(); pref_save(); }}static voidfont_sel_open_cb (GtkWidget *button, gpointer user_data){ pw.fontsel = gtk_font_selection_dialog_new ("Select text font"); gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(pw.fontsel), configuration.fontname); gtk_signal_connect (GTK_OBJECT (GTK_FONT_SELECTION_DIALOG(pw.fontsel)-> ok_button), "clicked", GTK_SIGNAL_FUNC (set_font_cb), NULL); /* Ensure that the dialog box is destroyed when the user clicks a button. */ gtk_signal_connect_object (GTK_OBJECT (GTK_FONT_SELECTION_DIALOG(pw.fontsel) ->ok_button), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), (gpointer) pw.fontsel); gtk_signal_connect_object (GTK_OBJECT (GTK_FONT_SELECTION_DIALOG(pw.fontsel) ->cancel_button), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), (gpointer) pw.fontsel); gtk_window_set_modal( GTK_WINDOW(pw.fontsel), TRUE); gtk_widget_show(pw.fontsel);}static voidset_font_cb(GtkFontSelectionDialog *selector, gpointer user_data){ gchar *fontname; fontname = gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG (pw.fontsel)); gtk_entry_set_text(GTK_ENTRY(pw.font_entry),fontname); prefs_changed_cb(NULL, NULL);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -