📄 interface.c
字号:
/* interface.c --- creation of the UI objects *//* Copyright (c) E. Lassauge, 2000-2001. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation. * * This file is provided AS IS with no warranties of any kind. The author * shall have no liability with respect to the infringement of copyrights, * trade secrets or any patents by this file or any part thereof. In no * event will the author be liable for any lost revenue or profits or * other special, indirect and consequential damages. * * mailto:lassauge@mail.dotcom.fr * http://lassauge.free.fr/ * * REVISION HISTORY: see Changelog * */#ifdef HAVE_CONFIG_H# include <config.h>#endif#include <dirent.h>#include <sys/stat.h>#include <unistd.h>#include <gnome.h>#include "sms.h"#include "callbacks.h"#include "interface.h"#include "support.h"/* Common widgets */GtkWidget *About = (GtkWidget *)NULL;GtkWidget *Scripts_fs = (GtkWidget *)NULL;GtkWidget *Preference = (GtkWidget *)NULL;GtkWidget *Alias = (GtkWidget *)NULL;GtkWidget *Scripts = (GtkWidget *)NULL;GtkWidget *GnomeSmssend = (GtkWidget *)NULL;GtkWidget *Notebook = (GtkWidget *)NULL;GtkWidget *Appbar = (GtkWidget *)NULL;GtkTooltips *Tooltips = (GtkTooltips *)NULL;/* Local functions */static void scan_dir(gchar *dirname);static void update_clist(gpointer key, gpointer value, gpointer user_data);GtkWidget *create_about(){ /* The about box */ const gchar *authors[] = { "Eric Lassauge <lassauge@mail.dotcom.fr>", NULL }; GtkWidget *about; about = gnome_about_new("Gnome SmsSend", VERSION, _("Copyright 2000-2001"), authors, _("GNOME interface to SmsSend"), #ifndef DEVEL "gsmssend/gsms-about.png"#else "../pixmaps/gsms-about.png"#endif ); gtk_window_set_modal(GTK_WINDOW(about), TRUE); return about;}GtkWidget *create_scripts_file_selection(){ GtkWidget *scripts; /* create a script file selection dialog */ scripts = gtk_file_selection_new(_("Choose script")); gtk_signal_connect (GTK_OBJECT(scripts), "destroy", (GtkSignalFunc) gtk_widget_destroy, GTK_OBJECT (scripts)); gtk_signal_connect(GTK_OBJECT (GTK_FILE_SELECTION (scripts)->ok_button), "clicked", (GtkSignalFunc) on_script_ok_pressed, scripts); gtk_signal_connect_object(GTK_OBJECT (GTK_FILE_SELECTION (scripts)->cancel_button), "clicked", (GtkSignalFunc) gtk_widget_destroy, GTK_OBJECT (scripts)); return scripts;}GtkWidget *create_preferences(){ /* create the preference dialog box */ GtkWidget *preferences; GtkWidget *dialog_vbox; GtkWidget *main_vbox; GtkWidget *pref_proxy; GtkWidget *proxy_label; GtkWidget *use_proxy; GtkWidget *proxy_table; GtkWidget *proxyhost_label; GtkWidget *proxyport_label; GtkWidget *proxy_host; GtkWidget *proxy_port; GtkWidget *proxyuser_label; GtkWidget *proxypass_label; GtkWidget *proxy_user; GtkWidget *proxy_password; GtkWidget *config_vbox; GtkWidget *config_label; GtkWidget *config_hbox1; GtkWidget *config_hbox2; GtkWidget *debug_label; GtkObject *debug_level_adj; GtkWidget *debug_level; GtkWidget *timeout_label; GtkObject *timeout_level_adj; GtkWidget *timeout_level; GtkWidget *auto_check; GtkWidget *keep_pass; GtkWidget *header_table; GtkWidget *header_label; GtkWidget *fileentry; GtkWidget *header_file; GtkWidget *usage_label; GtkWidget *usage_hbox1; GtkWidget *delay_send; GtkWidget *retry_label; GtkObject *retries_level_adj; GtkWidget *retries_level; GtkWidget *dialog_action_area; GtkWidget *ok_button; GtkWidget *apply_button; GtkWidget *cancel_button; preferences = gnome_dialog_new(_("Preferences"), NULL); gnome_dialog_set_close(GNOME_DIALOG(preferences), TRUE); gtk_window_set_policy(GTK_WINDOW(preferences), FALSE, FALSE, FALSE); gtk_window_set_wmclass(GTK_WINDOW(preferences), PACKAGE, PACKAGE); dialog_vbox = GNOME_DIALOG(preferences)->vbox; gtk_widget_show(dialog_vbox); main_vbox = gtk_vbox_new(FALSE, 0); gtk_widget_show(main_vbox); gtk_box_pack_start(GTK_BOX(dialog_vbox), main_vbox, TRUE, TRUE, 0); proxy_label = gtk_frame_new(_("Proxy configuration")); gtk_widget_show(proxy_label); gtk_box_pack_start(GTK_BOX(main_vbox), proxy_label, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(proxy_label), 2); gtk_frame_set_label_align(GTK_FRAME(proxy_label), 0.02,0.5); pref_proxy = gtk_vbox_new(FALSE, 2); gtk_widget_set_name(pref_proxy, "pref_proxy"); gtk_object_set_data(GTK_OBJECT(preferences), "pref_proxy", pref_proxy); gtk_widget_show(pref_proxy); gtk_container_add(GTK_CONTAINER(proxy_label), pref_proxy); gtk_container_set_border_width(GTK_CONTAINER(pref_proxy), 2); use_proxy = gtk_check_button_new_with_label(_("Use proxy")); gtk_widget_set_name(use_proxy, "use_proxy"); gtk_object_set_data(GTK_OBJECT(preferences), "use_proxy", use_proxy); gtk_widget_show(use_proxy); gtk_box_pack_start(GTK_BOX(pref_proxy), use_proxy, FALSE, FALSE, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(use_proxy), UseProxy); gtk_tooltips_set_tip(Tooltips, use_proxy, _("Check if you need to use a proxy server"), NULL); proxy_table = gtk_table_new(4, 2, FALSE); gtk_widget_show(proxy_table); gtk_box_pack_end(GTK_BOX(pref_proxy), proxy_table, FALSE, FALSE, 0); gtk_table_set_row_spacings(GTK_TABLE(proxy_table), 1); gtk_table_set_col_spacings(GTK_TABLE(proxy_table), 2); proxyhost_label = gtk_label_new(_("Proxy Host")); gtk_widget_show(proxyhost_label); gtk_table_attach(GTK_TABLE(proxy_table), proxyhost_label, 0, 1, 0, 1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_label_set_justify(GTK_LABEL(proxyhost_label), GTK_JUSTIFY_RIGHT); proxyport_label = gtk_label_new(_("Proxy Port")); gtk_widget_show(proxyport_label); gtk_table_attach(GTK_TABLE(proxy_table), proxyport_label, 0, 1, 1, 2, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_label_set_justify(GTK_LABEL(proxyport_label), GTK_JUSTIFY_RIGHT); proxy_host = gtk_entry_new_with_max_length(P_LENGTH-1); gtk_widget_set_name(proxy_host, "proxy_host"); gtk_object_set_data(GTK_OBJECT(preferences), "proxy_host", proxy_host); gtk_widget_show(proxy_host); gtk_table_attach(GTK_TABLE(proxy_table), proxy_host, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip(Tooltips, proxy_host, _("Name or IP address of proxy server"), NULL); if (UseProxy) gtk_entry_set_text(GTK_ENTRY(proxy_host), ProxyHost); proxy_port = gtk_entry_new_with_max_length(4); gtk_widget_set_name(proxy_port, "proxy_port"); gtk_object_set_data(GTK_OBJECT(preferences), "proxy_port", proxy_port); gtk_widget_show(proxy_port); gtk_table_attach(GTK_TABLE(proxy_table), proxy_port, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip(Tooltips, proxy_port, _("Port number for the proxy (usually 80 or 8080)"), NULL); if (UseProxy) { char port[5]; g_snprintf(port, 5, "%d", ProxyPort); gtk_entry_set_text(GTK_ENTRY(proxy_port), port); } proxyuser_label = gtk_label_new(_("Proxy User")); gtk_widget_show(proxyuser_label); gtk_table_attach(GTK_TABLE(proxy_table), proxyuser_label, 0, 1, 2, 3, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_label_set_justify(GTK_LABEL(proxyuser_label), GTK_JUSTIFY_RIGHT); proxypass_label = gtk_label_new(_("Proxy Password")); gtk_widget_show(proxypass_label); gtk_table_attach(GTK_TABLE(proxy_table), proxypass_label, 0, 1, 3, 4, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_label_set_justify(GTK_LABEL(proxypass_label), GTK_JUSTIFY_RIGHT); proxy_user = gtk_entry_new_with_max_length(P_LENGTH-1); gtk_widget_set_name(proxy_user, "proxy_user"); gtk_object_set_data(GTK_OBJECT(preferences), "proxy_user", proxy_user); gtk_widget_show(proxy_user); gtk_table_attach(GTK_TABLE(proxy_table), proxy_user, 1, 2, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip(Tooltips, proxy_user, _("User name for proxy connection if needed"), NULL); if (UseProxy) gtk_entry_set_text(GTK_ENTRY(proxy_user), ProxyUser); proxy_password = gtk_entry_new_with_max_length(P_LENGTH-1); gtk_widget_set_name(proxy_password, "proxy_password"); gtk_object_set_data(GTK_OBJECT(preferences), "proxy_password", proxy_password); gtk_widget_show(proxy_password); gtk_table_attach(GTK_TABLE(proxy_table), proxy_password, 1, 2, 3, 4, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_entry_set_visibility(GTK_ENTRY(proxy_password), FALSE); gtk_tooltips_set_tip(Tooltips, proxy_password, _("Password for proxy connection if needed"), NULL); if (UseProxy) gtk_entry_set_text(GTK_ENTRY(proxy_password), ProxyPass); config_label = gtk_frame_new(_("SmsSend Configuration")); gtk_widget_show(config_label); gtk_box_pack_start(GTK_BOX(main_vbox), config_label, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(config_label), 2); gtk_frame_set_label_align(GTK_FRAME(config_label), 0.02,0.5); config_vbox = gtk_vbox_new(FALSE, 3); gtk_widget_show(config_vbox); gtk_container_add(GTK_CONTAINER(config_label), config_vbox); gtk_container_set_border_width(GTK_CONTAINER(config_vbox), 2); config_hbox1 = gtk_hbox_new(FALSE, 2); gtk_widget_show(config_hbox1); gtk_box_pack_start(GTK_BOX(config_vbox), config_hbox1, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(config_hbox1), 2); debug_label = gtk_label_new(_("Debug Level")); gtk_widget_show(debug_label); gtk_box_pack_start(GTK_BOX(config_hbox1), debug_label, FALSE, FALSE, 0); gtk_label_set_justify(GTK_LABEL(debug_label), GTK_JUSTIFY_RIGHT); debug_level_adj = gtk_adjustment_new(DebugLevel, 0, 15, 1, 5, 5); debug_level = gtk_spin_button_new(GTK_ADJUSTMENT(debug_level_adj), 1, 0); gtk_widget_set_name(debug_level, "debug_level"); gtk_object_set_data(GTK_OBJECT(preferences), "debug_level", debug_level); gtk_widget_show(debug_level); gtk_box_pack_start(GTK_BOX(config_hbox1), debug_level, FALSE, FALSE, 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(debug_level), TRUE); gtk_tooltips_set_tip(Tooltips, debug_level, _("Set debug level of smssend"), NULL); timeout_label = gtk_label_new(_("Timeout")); gtk_widget_show(timeout_label); gtk_box_pack_start(GTK_BOX(config_hbox1), timeout_label, FALSE, FALSE, 0); gtk_label_set_justify(GTK_LABEL(timeout_label), GTK_JUSTIFY_RIGHT); timeout_level_adj = gtk_adjustment_new(TimeOut, 0, 1000, 10, 100, 100); timeout_level = gtk_spin_button_new(GTK_ADJUSTMENT(timeout_level_adj), 1, 0); gtk_widget_set_name(timeout_level, "timeout"); gtk_object_set_data(GTK_OBJECT(preferences), "timeout", timeout_level); gtk_widget_show(timeout_level); gtk_box_pack_start(GTK_BOX(config_hbox1), timeout_level, FALSE, FALSE, 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(timeout_level), TRUE); gtk_tooltips_set_tip(Tooltips, timeout_level, _("Set timeout value for smssend"), NULL); config_hbox2 = gtk_hbox_new(FALSE, 2); gtk_widget_show(config_hbox2); gtk_box_pack_start(GTK_BOX(config_vbox), config_hbox2, FALSE, FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(config_hbox2), 2); auto_check = gtk_check_button_new_with_label(_("Auto check new version of scripts")); gtk_widget_set_name(auto_check, "auto_check"); gtk_object_set_data(GTK_OBJECT(preferences), "auto_check", auto_check); gtk_widget_show(auto_check); gtk_box_pack_start(GTK_BOX(config_hbox2), auto_check, FALSE, FALSE, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(auto_check), AutoCheck); keep_pass = gtk_check_button_new_with_label(_("Keep passwords")); gtk_widget_set_name(keep_pass, "keep_pass"); gtk_object_set_data(GTK_OBJECT(preferences), "keep_pass", keep_pass); gtk_widget_show(keep_pass); gtk_box_pack_start(GTK_BOX(config_hbox2), keep_pass, FALSE, FALSE, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(keep_pass), KeepPass); gtk_tooltips_set_tip(Tooltips, keep_pass, _("Check if you want to keep provider's password in the preferences file"), NULL); header_table = gtk_table_new(1, 2, FALSE); gtk_widget_show(header_table); gtk_box_pack_start(GTK_BOX(config_vbox), header_table, FALSE, FALSE, 0); gtk_table_set_row_spacings(GTK_TABLE(header_table), 1); gtk_table_set_col_spacings(GTK_TABLE(header_table), 2); header_label = gtk_label_new(_("Header file: ")); gtk_widget_show(header_label); gtk_table_attach(GTK_TABLE(header_table), header_label, 0, 1, 0, 1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); fileentry = gnome_file_entry_new (NULL, _("Header file: ")); gtk_widget_show (fileentry); gtk_container_set_border_width (GTK_CONTAINER (fileentry), 2); header_file = gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (fileentry)); gtk_widget_show (header_file); gtk_table_attach(GTK_TABLE(header_table), fileentry, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_object_set_data(GTK_OBJECT(preferences), "header_file", header_file); gtk_tooltips_set_tip(Tooltips, header_file, _("Header file for smssend"), NULL); usage_label = gtk_frame_new(_("GNOME SmsSend Configuration")); gtk_widget_show(usage_label); gtk_box_pack_start(GTK_BOX(main_vbox), usage_label, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(usage_label), 2); gtk_frame_set_label_align(GTK_FRAME(usage_label), 0.02,0.5); usage_hbox1 = gtk_hbox_new(FALSE, 0); gtk_widget_show(usage_hbox1); gtk_container_add(GTK_CONTAINER(usage_label), usage_hbox1); gtk_container_set_border_width(GTK_CONTAINER(usage_hbox1), 2); delay_send = gtk_check_button_new_with_label(_("Delay SmsSend calls")); gtk_widget_set_name(delay_send, "delay_send"); gtk_object_set_data(GTK_OBJECT(preferences), "delay_send", delay_send); gtk_widget_show(delay_send); gtk_box_pack_start(GTK_BOX(usage_hbox1), delay_send, FALSE, FALSE, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(delay_send), DelaySend); gtk_tooltips_set_tip(Tooltips, delay_send, _("Check if you want to postpone all SmsSend calls"), NULL); retry_label = gtk_label_new(_("Retries")); gtk_widget_show(retry_label); gtk_box_pack_start(GTK_BOX(usage_hbox1), retry_label, FALSE, FALSE, 0); gtk_label_set_justify(GTK_LABEL(retry_label), GTK_JUSTIFY_RIGHT); retries_level_adj = gtk_adjustment_new(Retries, 1, 10, 1, 10, 10); retries_level = gtk_spin_button_new(GTK_ADJUSTMENT(retries_level_adj), 1, 0); gtk_widget_set_name(retries_level, "retries");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -