⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interface.c

📁 这个项目里有两个关于收、发GSM 手机短信的C语言程序
💻 C
📖 第 1 页 / 共 3 页
字号:
    {     GNOME_APP_UI_ITEM, N_("_Go to SmsSend home page for more scripts"),     NULL,     on_goto_smssend_activate, NULL, NULL,     GNOME_APP_PIXMAP_DATA, home_icon,     0, 0, NULL},    {     GNOME_APP_UI_ITEM, N_("_Execute SmsSend for delayed connections"),     NULL,     on_sendnow_activate, NULL, NULL,     GNOME_APP_PIXMAP_DATA, send_icon,     0, 0, NULL},    GNOMEUIINFO_SEPARATOR,    GNOMEUIINFO_MENU_CLOSE_ITEM(on_close_activate, NULL),    GNOMEUIINFO_MENU_EXIT_ITEM(on_exit_activate, NULL),    GNOMEUIINFO_END};static GnomeUIInfo settings_menu_uiinfo[] = {    {     GNOME_APP_UI_ITEM, N_("Manage _aliases"),     NULL,     on_manage_alias_activate, NULL, NULL,     GNOME_APP_PIXMAP_DATA, alias_icon,     0, 0, NULL},    {     GNOME_APP_UI_ITEM, N_("Manage _scripts"),     NULL,     on_manage_scripts_activate, NULL, NULL,     GNOME_APP_PIXMAP_DATA, scripts_icon,     0, 0, NULL},    {     GNOME_APP_UI_ITEM, N_("Check for _updates"),     NULL,     on_check_updates_activate, NULL, NULL,     GNOME_APP_PIXMAP_DATA, updates_icon,     0, 0, NULL},    GNOMEUIINFO_SEPARATOR,    GNOMEUIINFO_MENU_PREFERENCES_ITEM(on_preferences_activate, NULL),    GNOMEUIINFO_END};static GnomeUIInfo help_menu_uiinfo[] = {#ifndef DEVEL    GNOMEUIINFO_HELP(PACKAGE),    GNOMEUIINFO_SEPARATOR,#endif    GNOMEUIINFO_MENU_ABOUT_ITEM(on_about_activate, NULL),    GNOMEUIINFO_END};static GnomeUIInfo menubar_uiinfo[] = {    GNOMEUIINFO_MENU_FILE_TREE(file_menu_uiinfo),    GNOMEUIINFO_MENU_SETTINGS_TREE(settings_menu_uiinfo),    GNOMEUIINFO_MENU_HELP_TREE(help_menu_uiinfo),    GNOMEUIINFO_END};GtkWidget *create_gnome_smssend(){    /* create the application main window */    GtkWidget *smssend;    GtkWidget *dock;    Tooltips = gtk_tooltips_new();    smssend = gnome_app_new(PACKAGE, PACKAGE " - " VERSION);    gtk_window_set_wmclass(GTK_WINDOW(smssend), "Smssend", "SmsSend");    dock = GNOME_APP(smssend)->dock;    gtk_widget_show(dock);    gnome_app_create_menus(GNOME_APP(smssend), menubar_uiinfo);    Notebook = gtk_notebook_new();    gtk_widget_show(Notebook);    gnome_app_set_contents(GNOME_APP(smssend), Notebook);    gtk_notebook_set_scrollable (GTK_NOTEBOOK (Notebook), TRUE);    gtk_container_set_border_width(GTK_CONTAINER(Notebook), 2);    gtk_notebook_set_tab_hborder (GTK_NOTEBOOK (Notebook), 2);    gtk_notebook_set_tab_vborder (GTK_NOTEBOOK (Notebook), 2);    Appbar = gnome_appbar_new(TRUE, TRUE, GNOME_PREFERENCES_NEVER);    gtk_widget_show(Appbar);    gnome_app_set_statusbar(GNOME_APP(smssend), Appbar);    gtk_signal_connect (GTK_OBJECT (smssend), "destroy",                        GTK_SIGNAL_FUNC (on_exit_activate),                        NULL);    return smssend;}PProvider_t create_provider(const char filename[]){    /* create a provider tab in the notebook */    PProvider_t Pv;    /* read provider script */    Pv = CreateProviderFromFile(filename);    if (Pv == NULL)	return (NULL);    /* update provider's list */    g_hash_table_insert(ProviderHash,(gpointer) filename, (gpointer) Pv);    NumProvider++;    if ( (SavedProviderHash) && (g_hash_table_lookup (SavedProviderHash, (gconstpointer) filename) == NULL) )	/* if not saved don't display it but keep it for further use */	return (NULL);    show_provider((gchar *)filename,Pv);    return (Pv);}void show_provider(gchar *filename,PProvider_t Pv){    /* create a provider tab in the notebook */    GtkWidget *provider_box;    GtkWidget *param_frame;    GtkWidget *table_params;    GtkWidget *rightbox;    GtkWidget *remaining;    GtkWidget *send_button;    GtkWidget *provider_label;    GtkWidget *message=(GtkWidget *)NULL;    gchar *label, *dot;    int i, msgindex = -1;    /* filename is to be shown */    label = g_strdup(g_basename(filename));    dot   = (gchar *)g_extension_pointer (label);    *--dot = '\000';    /* use provider name only as the label */    provider_label = gtk_label_new(label);    /* update shown provider's list */    g_hash_table_insert(ShownProviderHash,(gpointer) filename, (gpointer) Pv);    /* save filename and label in structure for DoSms() */    Pv->Label    = label;    Pv->Filename = g_strdup(filename);    provider_box = gtk_hbox_new(FALSE, 2);    gtk_widget_show(provider_box);    gtk_container_add(GTK_CONTAINER(Notebook), provider_box);    gtk_container_set_border_width(GTK_CONTAINER(provider_box), 2);    /* save provider_box in structure */    Pv->PageWidget = provider_box;    param_frame = gtk_frame_new(_("Parameters"));    gtk_widget_show(param_frame);    gtk_box_pack_start(GTK_BOX(provider_box), param_frame, TRUE, TRUE, 0);    gtk_container_set_border_width(GTK_CONTAINER(param_frame), 2);    gtk_frame_set_label_align(GTK_FRAME(param_frame), 0.02, 0.5);    table_params = gtk_table_new(Pv->NbParams, 2, FALSE);    gtk_widget_show(table_params);    gtk_container_add(GTK_CONTAINER(param_frame), table_params);    gtk_container_set_border_width(GTK_CONTAINER(table_params), 2);    gtk_table_set_row_spacings(GTK_TABLE(table_params), 2);    gtk_table_set_col_spacings(GTK_TABLE(table_params), 2);    /* create entries for the parameters */    for (i = 0; i < Pv->NbParams; i++)    {	GtkWidget *param_label;	GtkWidget *param_value;	if (g_strncasecmp(Pv->Params[i].Name, "Message",9) == 0)	{	  /* message parameter is treated below */	  msgindex = i;	  goto end_for;	}	param_label = gtk_label_new(Pv->Params[i].Name);	gtk_widget_show(param_label);	gtk_table_attach(GTK_TABLE(table_params), param_label, 0, 1, i, i + 1,			 (GtkAttachOptions) (0), (GtkAttachOptions) (0), 2, 2);	gtk_label_set_justify(GTK_LABEL(param_label), GTK_JUSTIFY_LEFT);	gtk_misc_set_padding(GTK_MISC(param_label), 2, 2);	if (Pv->Params[i].Size)	    param_value = gtk_entry_new_with_max_length(Pv->Params[i].Size);	else	    param_value = gtk_entry_new();	gtk_widget_show(param_value);	if (Pv->Params[i].Hidden)	    gtk_entry_set_visibility(GTK_ENTRY(param_value), FALSE);	else	{            /* Attach events to check for aliases */    	    gtk_signal_connect(GTK_OBJECT(param_value), "focus-out-event",                       GTK_SIGNAL_FUNC(on_value_check), (gpointer) &Pv->Params[i]);    	    gtk_signal_connect(GTK_OBJECT(param_value), "activate",                       GTK_SIGNAL_FUNC(on_value_check), (gpointer) &Pv->Params[i]);	}	gtk_table_attach(GTK_TABLE(table_params), param_value, 1, 2, i, i + 1,			 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 2, 2);	Pv->Params[i].Widget = param_value;	if (Pv->Params[i].Help)	    gtk_tooltips_set_tip(Tooltips, param_value, Pv->Params[i].Help, NULL);	if (KeepPass && g_strncasecmp(Pv->Params[i].Name, "Password",10) == 0)	{	  gchar *config_file;	  gchar *path;	  gchar *password;	  /* password is perhaps in preference file */	  config_file=gnome_util_prepend_user_home(".smssend/smssendrc");	  path = g_strdup_printf("=%s=/Passwords/%s",config_file,label);	  password  = gnome_config_get_string_with_default(path,NULL);	  if (password && strlen(password))	  {		crypt_password(password);		Pv->Params[i].Value = password;	  }	  g_free(path);	  g_free(config_file);		}	if (Pv->Params[i].Value)	    gtk_entry_set_text(GTK_ENTRY(param_value), Pv->Params[i].Value);end_for:    }    rightbox = gtk_vbox_new(FALSE, 2);    gtk_widget_show(rightbox);    gtk_box_pack_start(GTK_BOX(provider_box), rightbox, TRUE, TRUE, 0);    gtk_container_set_border_width(GTK_CONTAINER(rightbox), 2);    /* message widget and remaining widget value */    if (msgindex != -1)    {    	GtkWidget *remainbox;	GtkWidget *remainlabl;	char remain[4];	message = gtk_text_new(NULL, NULL);	gtk_widget_show(message);	gtk_box_pack_start(GTK_BOX(rightbox), message, TRUE, FALSE, 0);	gtk_text_set_editable(GTK_TEXT(message), TRUE);	remainbox = gtk_hbox_new(TRUE, 2);	gtk_widget_show(remainbox);	gtk_box_pack_start(GTK_BOX(rightbox), remainbox, FALSE, TRUE, 0);	gtk_container_set_border_width(GTK_CONTAINER(remainbox), 2);	remainlabl = gtk_label_new(_("Remaining characters"));	gtk_widget_show(remainlabl);	gtk_box_pack_start(GTK_BOX(remainbox), remainlabl, FALSE, FALSE, 0);	gtk_label_set_justify(GTK_LABEL(remainlabl), GTK_JUSTIFY_RIGHT);	remaining = gtk_entry_new_with_max_length(3); 	gtk_widget_show(remaining);	gtk_box_pack_start(GTK_BOX(remainbox), remaining, FALSE, FALSE, 2);	gtk_entry_set_editable(GTK_ENTRY(remaining), FALSE);	gtk_tooltips_set_tip(Tooltips, message, Pv->Params[msgindex].Help, NULL);	g_snprintf(remain, 5, "%d", Pv->Params[msgindex].Size);	gtk_entry_set_text(GTK_ENTRY(remaining), remain);	Pv->Params[msgindex].Widget = message;        gtk_signal_connect(GTK_OBJECT(message), "changed",		       GTK_SIGNAL_FUNC(on_message_changed), (gpointer) Pv->Params[msgindex].Size);	gtk_object_set_data(GTK_OBJECT(message), "remain", remaining);    }    /* send button */    send_button = gnome_stock_button(GNOME_STOCK_BUTTON_APPLY);    gtk_widget_show(send_button);    gtk_tooltips_set_tip(Tooltips, send_button, _("Send SMS !"), NULL);    gtk_box_pack_start(GTK_BOX(rightbox), send_button, FALSE, FALSE, 0);    gtk_container_set_border_width(GTK_CONTAINER(send_button), 2);    gtk_widget_set_name(send_button,"send_button");    gtk_signal_connect(GTK_OBJECT(send_button), "pressed", GTK_SIGNAL_FUNC(on_send_pressed), (gpointer) Pv);    /* modify notebook's label */    gtk_widget_show(provider_label);    gtk_notebook_set_tab_label(GTK_NOTEBOOK(Notebook), provider_box, provider_label);    /* cross save Pv and widget */    Pv->MessageWidget = message;    gtk_object_set_data(GTK_OBJECT(provider_box), "provider", Pv);}static void scan_dir(gchar *dirname){    DIR           *dir;    struct dirent *dirent;    gchar         *ext;    PProvider_t   Pv = NULL;    dir = opendir(dirname);    if (!dir)	return;    while ((dirent = readdir(dir)))    {	/* Search for SMSSEND extension */	ext = (gchar *)g_extension_pointer(dirent->d_name);	if ((strlen(ext) == strlen(SMSSEND_SUF)) && (g_strncasecmp(ext,SMSSEND_SUF,3) == 0))	{    	    Pv = create_provider(g_strconcat(dirname,"/",dirent->d_name,NULL));	}    }            closedir(dir);}void create_notebook(){    /* Create all notebook's tabs */    gchar *dirname;    gchar *status;    if (ScriptFilename)    {    	gchar         *ext;    	PProvider_t   Pv = NULL;	/* Search for SMSSEND extension */	ext = (gchar *)g_extension_pointer(ScriptFilename);	if ((strlen(ext) == strlen(SMSSEND_SUF)) && (g_strncasecmp(ext,SMSSEND_SUF,3) == 0))	{    	    Pv = create_provider(ScriptFilename);	}    }    else    {    	if (ScriptPath) /* shouldn't be set together with 'only-user' option */    	{    		scan_dir(ScriptPath);    	}     	/* First try to load local .sms script */    	scan_dir(g_get_current_dir());    	/* Then try to load user's scripts */    	scan_dir(gnome_util_prepend_user_home(".smssend/"));	if (!MyScripts)	{    	    /* Then try to load global shared scripts */    	    scan_dir(SMSSEND_SHAREPATH);    	    /* Use an environment variable */    	    if ( (dirname = getenv("SMSSEND_SCRIPTPATH")) != NULL)        	    {        	    scan_dir(dirname);    	    }	}    }        if (NumProvider == 0)    {	g_printerr(_("No provider file found!\n"));    	gtk_exit(-1);    }    status = g_strdup_printf(_("%s : %d provider(s) found"),PACKAGE,NumProvider);    gnome_appbar_set_status(GNOME_APPBAR(Appbar), status);    g_free(status);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -