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

📄 callbacks.c

📁 Remote Connection Manager是一个Gnome2 应用程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#ifdef HAVE_CONFIG_H#  include <config.h>#endif#include <gnome.h>#include <gconf/gconf-client.h>#include "callbacks.h"#include "interface.h"#include "support.h"#include "main.h"voidon_file_new_type_menu_activate (GtkMenuItem * menuitem, gpointer user_data){	rcm_show_ConnectionTypesWindow();}voidon_edit_delete_menu_activate (GtkMenuItem * menuitem, gpointer user_data){	GnomeIconList *icon_list;	gint i;	GList *l;	gchar *name;	Connection *connection;	GtkWidget *yes_no_dialog;	int ret;	gchar buff[MAX_BUFFER_LENGTH];	icon_list = GNOME_ICON_LIST (lookup_widget (MainWindow, "MainList"));	g_return_if_fail (icon_list != NULL);	l = gnome_icon_list_get_selection (icon_list);	if (l)	{		i = GPOINTER_TO_INT (l->data);		connection = g_slist_nth_data (ConnectionsSList, i);		g_return_if_fail (connection != NULL);		snprintf (buff, MAX_BUFFER_LENGTH,			  _("Are you sure you want to delete %s?"),			  connection->Name);		yes_no_dialog =			gnome_message_box_new (buff,					       GNOME_MESSAGE_BOX_QUESTION,					       GNOME_STOCK_BUTTON_YES,					       GNOME_STOCK_BUTTON_NO, NULL);		ret = gnome_dialog_run (GNOME_DIALOG (yes_no_dialog));		if (ret == 1)			return;		connection =			rcm_remove_connection_from_list_by_name (connection->								 Name,								 ConnectionsSList);		if (connection)			free (connection);		rcm_update_main_window ();	// causing assertion		rcm_save_connections_to_disk ();	}}voidon_help_help_menu_activate (GtkMenuItem * menuitem, gpointer user_data){	GtkWidget *dialog = create_AboutWindow ();	gnome_dialog_run_and_close (GNOME_DIALOG (dialog));}voidon_about_activate (GtkMenuItem * menuitem, gpointer user_data){	GtkWidget *AboutWindow = create_AboutWindow ();	//gtk_window_set_transient_for (GTK_WINDOW (AboutWindow),	//			      GTK_WINDOW (MainWindow));	//gtk_window_set_modal (GTK_WINDOW (AboutWindow), TRUE);	gtk_dialog_run (GTK_DIALOG (AboutWindow));	//gtk_widget_destroy(AboutWindow);}voidon_TbTypesBtn_clicked (GtkButton * button, gpointer user_data){	rcm_show_ConnectionTypesWindow();}voidon_TbConnectionBtn_clicked (GtkButton * button, gpointer user_data){	rcm_show_ConnectionsWindow();}gbooleanon_ConnectionsWindow_delete_event (GtkWidget * widget,				   GdkEvent * event, gpointer user_data){	GtkWidget *yes_no_dialog;	gint ret;	gint width, height;	GConfClient *gconf_client = NULL;	gconf_client = gconf_client_get_default ();	gtk_window_get_size (GTK_WINDOW (ConnectionsWindow), &width, &height);	gconf_client_set_int (gconf_client, GCONF_CONNECTIONS_WINDOW_WIDTH,			      width, NULL);	gconf_client_set_int (gconf_client, GCONF_CONNECTIONS_WINDOW_HEIGHT,			      height, NULL);	gconf_client_suggest_sync (gconf_client, NULL);	g_object_unref (gconf_client);	if (ConnectionsSListIsDirty)	{		yes_no_dialog =			gnome_message_box_new			(_("Do you want to save your changes?"),			 GNOME_MESSAGE_BOX_QUESTION,			 GNOME_STOCK_BUTTON_YES, GNOME_STOCK_BUTTON_NO, NULL);		ret = gnome_dialog_run (GNOME_DIALOG (yes_no_dialog));		switch (ret)		{		case 0:		{			if (!rcm_save_connections_to_disk ())				rcm_error					(_("There was a problem saving."),					 ConnectionsWindow);			gtk_widget_hide (ConnectionsWindow);			return;		}		case 1:		{			if (!rcm_load_connections_from_disk ())				rcm_error					(_("A serious error has occured."),					 ConnectionsWindow);			rcm_update_connections_window_list ();			gtk_widget_hide (GTK_WIDGET (ConnectionsWindow));			return;		}		}	}	rcm_update_main_window ();	gtk_widget_hide (GTK_WIDGET (ConnectionsWindow));	return TRUE;}gbooleanon_ConnectionTypesWindow_delete_event (GtkWidget * widget,				       GdkEvent * event, gpointer user_data){	GtkWidget *yes_no_dialog;	gint ret;	gint width, height;	GConfClient *gconf_client = NULL;	gconf_client = gconf_client_get_default ();	gtk_window_get_size (GTK_WINDOW (ConnectionTypesWindow), &width,			     &height);	gconf_client_set_int (gconf_client,			      GCONF_CONNECTION_TYPES_WINDOW_WIDTH, width,			      NULL);	gconf_client_set_int (gconf_client,			      GCONF_CONNECTION_TYPES_WINDOW_HEIGHT, height,			      NULL);	gconf_client_suggest_sync (gconf_client, NULL);	g_object_unref (gconf_client);	if (ConnectionTypesSListIsDirty)	{		yes_no_dialog =			gnome_message_box_new			(_("Do you want to save your changes?"),			 GNOME_MESSAGE_BOX_QUESTION,			 GNOME_STOCK_BUTTON_YES, GNOME_STOCK_BUTTON_NO, NULL);		ret = gnome_dialog_run (GNOME_DIALOG (yes_no_dialog));		switch (ret)		{		case 0:		{			if (!rcm_save_types_to_disk ())				rcm_error					(_("There was a problem saving."),					 ConnectionTypesWindow);			gtk_widget_hide (ConnectionTypesWindow);			return;		}		case 1:		{			if (!rcm_load_types_from_disk ())				rcm_error					(_("A serious error has occured."),					 ConnectionTypesWindow);			rcm_update_connectiontypes_window_list ();			gtk_widget_hide (ConnectionTypesWindow);			return;		}		}	}	rcm_update_main_window ();	gtk_widget_hide (GTK_WIDGET (ConnectionTypesWindow));	return TRUE;}voidon_ConnectionTypesClearBtn_clicked (GtkButton * button, gpointer user_data){	rcm_clear_types_window ();}voidon_ConnectionTypesSaveBtn_clicked (GtkButton * button, gpointer user_data){	GtkWidget *widget = NULL;	gchar *name = NULL;	gchar *command = NULL;	gchar* arguments = NULL;	gboolean terminal = FALSE;	gchar *icon = NULL;	ConnectionType type;	widget = NULL;	widget = lookup_widget (ConnectionTypesWindow,				"ConnectionTypesNameEntry");	g_return_if_fail (widget != NULL);	name = gtk_editable_get_chars (GTK_EDITABLE (widget), 0, -1);	if (strnlen (name,NAMELEN) == 0)	{		g_free (name);		rcm_warn (_("Conenction Type name is not set."),			  ConnectionTypesWindow);		return;	}	strncpy (type.Name, name, NAMELEN);	// need this below g_free (name);	widget = NULL;	widget = lookup_widget (ConnectionTypesWindow,				"ConnectionTypesCommandEntry");	g_return_if_fail (widget != NULL);	command = gtk_editable_get_chars (GTK_EDITABLE (widget), 0, -1);	if (strnlen (command,COMMANDLEN) == 0)	{		g_free (command);		rcm_warn (_("Conenction Type command is not set."),			  ConnectionTypesWindow);		return;	}	strncpy (type.Command, command, COMMANDLEN);	g_free (command);	widget = NULL;	widget = lookup_widget (ConnectionTypesWindow,				"ConnectionTypesArgumentsEntry");	g_return_if_fail (widget != NULL);	arguments = gtk_editable_get_chars (GTK_EDITABLE (widget), 0, -1);	if (strnlen (arguments,ARGUMENTSLEN) == 0)		strncpy (type.Arguments, "", ARGUMENTSLEN);		else		strncpy (type.Arguments, arguments, ARGUMENTSLEN);	g_free (arguments);		widget = NULL;	widget = lookup_widget (ConnectionTypesWindow,				"ConnectionTypesTerminalChkBox");	g_return_if_fail (widget != NULL);	type.Terminal =		gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));	widget = NULL;	widget = lookup_widget (ConnectionTypesWindow,				"ConnectionTypesIconEntry");	g_return_if_fail (widget != NULL);	icon = gnome_icon_entry_get_filename (GNOME_ICON_ENTRY (widget));	if (icon == NULL)	{		type.Icon[0] = '\0';	}	else	{		strncpy (type.Icon, icon, ICONLEN);		g_free (icon);	}	rcm_save_type (type);	rcm_update_connectiontypes_window_list ();	rcm_select_type_by_name (name);	rcm_clear_types_window ();	rcm_update_main_window();	g_free (name);}voidon_ConnectionTypesOkBtn_clicked (GtkButton * button, gpointer user_data){	gint width, height;	GConfClient *gconf_client = NULL;	gconf_client = gconf_client_get_default ();	gtk_window_get_size (GTK_WINDOW (ConnectionTypesWindow), &width,			     &height);	gconf_client_set_int (gconf_client,			      GCONF_CONNECTION_TYPES_WINDOW_WIDTH, width,			      NULL);	gconf_client_set_int (gconf_client,			      GCONF_CONNECTION_TYPES_WINDOW_HEIGHT, height,			      NULL);	gconf_client_suggest_sync (gconf_client, NULL);	g_object_unref (gconf_client);	if (!rcm_save_types_to_disk ())		rcm_error (_("There was a problem saving."),			   ConnectionTypesWindow);	rcm_update_main_window ();	gtk_widget_hide (ConnectionTypesWindow);}voidon_ConnectionTypesCancelBtn_clicked (GtkButton * button, gpointer user_data){	gint width, height;	GConfClient *gconf_client = NULL;	gconf_client = gconf_client_get_default ();	gtk_window_get_size (GTK_WINDOW (ConnectionTypesWindow), &width,			     &height);	gconf_client_set_int (gconf_client,			      GCONF_CONNECTION_TYPES_WINDOW_WIDTH, width,			      NULL);	gconf_client_set_int (gconf_client,			      GCONF_CONNECTION_TYPES_WINDOW_HEIGHT, height,			      NULL);	gconf_client_suggest_sync (gconf_client, NULL);	g_object_unref (gconf_client);	if (!rcm_load_types_from_disk ())		rcm_error (_("A serious error has occured."),			   ConnectionTypesWindow);	rcm_update_main_window ();	gtk_widget_hide (ConnectionTypesWindow);}voidon_ConnectionTypesDeleteBtn_clicked (GtkButton * button, gpointer user_data){	GtkWidget *widget;	GtkTreeIter iter;	GtkTreeModel *model;	GtkTreeSelection *select;	gchar *name;	GtkWidget *ConnectionTypesList =		lookup_widget (ConnectionTypesWindow, "ConnectionTypesList");	select = gtk_tree_view_get_selection (GTK_TREE_VIEW					      (ConnectionTypesList));	if (gtk_tree_selection_get_selected (select, &model, &iter))	{		gtk_tree_model_get (model, &iter, CONNECTION_TYPE_NAME_COLUMN,				    &name, -1);		rcm_remove_type_from_list_by_name (name,						   ConnectionTypesSList);		rcm_update_connectiontypes_window_list ();		rcm_clear_types_window ();	}	else	{		rcm_warn (_("You must select a type from the list first."),			  ConnectionTypesWindow);	}}voidon_ConnectionsList_selection_changed_cb (GtkTreeSelection * selection,					 gpointer data){	GtkWidget *widget;	GtkTreeIter iter;	GtkTreeModel *model;	GtkTreeSelection *select;	gchar *name;	Connection *connection;	ConnectionType *type;	GtkWidget *ConnectionsList =		lookup_widget (ConnectionsWindow, "ConnectionsList");	select = gtk_tree_view_get_selection (GTK_TREE_VIEW					      (ConnectionsList));	if (gtk_tree_selection_get_selected (select, &model, &iter))	{		gtk_tree_model_get (model, &iter, CONNECTION_NAME_COLUMN,				    &name, -1);		connection = rcm_find_connection_by_name_in_list (name,								  ConnectionsSList);		g_return_if_fail (connection != NULL);		widget = lookup_widget (ConnectionsWindow,					"ConnectionNameEntry");		g_return_if_fail (widget != NULL);		gtk_entry_set_text (GTK_ENTRY (widget), connection->Name);		widget = NULL;		widget = lookup_widget (ConnectionsWindow,					"ConnectionHostnameEntry");		g_return_if_fail (widget != NULL);		gtk_entry_set_text (GTK_ENTRY (widget), connection->Hostname);		type = g_slist_nth_data (ConnectionTypesSList,					 connection->Type);		widget = NULL;		widget = lookup_widget (ConnectionsWindow,					"ConnectionTypeCombo");		g_return_if_fail (widget != NULL);		gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (widget)->entry),				    type->Name);		widget = NULL;		widget = lookup_widget (ConnectionsWindow,					"ConnectionUsernameEntry");		g_return_if_fail (widget != NULL);		gtk_entry_set_text (GTK_ENTRY (widget), connection->Username);		widget = NULL;		widget = lookup_widget (ConnectionsWindow,					"ConnectionArgumentsEntry");		g_return_if_fail (widget != NULL);		gtk_entry_set_text (GTK_ENTRY (widget),				    connection->Arguments);	}}voidon_ConnectionTypesList_selection_changed_cb (GtkTreeSelection * selection,					     gpointer data){	GtkWidget *widget;	GtkTreeIter iter;	GtkTreeModel *model;	GtkTreeSelection *select;	gchar *name;	ConnectionType *type;	GtkWidget *ConnectionTypesList =		lookup_widget (ConnectionTypesWindow, "ConnectionTypesList");	select = gtk_tree_view_get_selection (GTK_TREE_VIEW					      (ConnectionTypesList));	if (gtk_tree_selection_get_selected (select, &model, &iter))	{		gtk_tree_model_get (model, &iter, CONNECTION_TYPE_NAME_COLUMN,				    &name, -1);		type = rcm_find_type_by_name_in_list (name,						      ConnectionTypesSList);		g_return_if_fail (type != NULL);		widget = lookup_widget (ConnectionTypesWindow,					"ConnectionTypesNameEntry");		g_return_if_fail (widget != NULL);		gtk_entry_set_text (GTK_ENTRY (widget), type->Name);		widget = NULL;		widget = lookup_widget (ConnectionTypesWindow,					"ConnectionTypesCommandEntry");		g_return_if_fail (widget != NULL);		gtk_entry_set_text (GTK_ENTRY (widget), type->Command);		widget = NULL;		widget = lookup_widget (ConnectionTypesWindow,					"ConnectionTypesArgumentsEntry");		g_return_if_fail (widget != NULL);		gtk_entry_set_text (GTK_ENTRY (widget), type->Arguments);				widget = NULL;		widget = lookup_widget (ConnectionTypesWindow,					"ConnectionTypesTerminalChkBox");		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget),					      type->Terminal);		widget = NULL;		widget = lookup_widget (ConnectionTypesWindow,					"ConnectionTypesIconEntry");		g_return_if_fail (widget != NULL);		gnome_icon_entry_set_filename (GNOME_ICON_ENTRY (widget),					       type->Icon);	}}gbooleanon_MainWindow_delete_event (GtkWidget * widget,			    GdkEvent * event, gpointer user_data){	rcm_quit ();	return FALSE;}voidon_file_new_connection_activate (GtkMenuItem * menuitem, gpointer user_data){	rcm_show_ConnectionsWindow();}voidon_edit_preferences_activate (GtkMenuItem * menuitem, gpointer user_data){	GtkWidget* ascchk;	GtkWidget* deschk;	GtkWidget* typchk;	GtkWidget* nonchk;	GtkWidget* terminal;	GtkWidget* arguments;	GtkWidget* usernames;		ascchk = lookup_widget(PropertiesDialog,"PropertyAscendingSort");	deschk = lookup_widget(PropertiesDialog,"PropertyDescendingSort");	typchk = lookup_widget(PropertiesDialog,"PropertyTypeSort");	nonchk = lookup_widget(PropertiesDialog,"PropertyNoneSort");	terminal = lookup_widget(PropertiesDialog,"PropertyTerminalEntry");	arguments = lookup_widget(PropertiesDialog,"PropertyTerminalArgumentsEntry");	usernames = lookup_widget(PropertiesDialog,"PropertyShowUserNames");		g_return_if_fail(ascchk != NULL || deschk != NULL || typchk != NULL || nonchk != NULL || arguments != NULL || arguments != NULL);		if(SortOption == SORT_ASCENDING)		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ascchk),TRUE);	else if(SortOption == SORT_DESCENDING)		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(deschk),TRUE);	else if(SortOption == SORT_TYPE)		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(typchk),TRUE);	else if(SortOption == SORT_NONE)		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(nonchk),TRUE);		gtk_entry_set_text(GTK_ENTRY(terminal),TerminalProgram);	gtk_entry_set_text(GTK_ENTRY(arguments),TerminalProgramOptions);		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(usernames),DisplayUsernameInMainWindow);		gtk_widget_show(PropertiesDialog);}voidon_edit_properties_activate (GtkMenuItem * menuitem, gpointer user_data){	GnomeIconList *icon_list;	gint i;	GList *l;

⌨️ 快捷键说明

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