📄 dialog-plugins.c
字号:
{ gint row, rows, new_row; gchar *name; gchar *name_array[2]; gpointer item_data; gedit_debug (DEBUG_PLUGINS, ""); gedit_plugin_manager_lists_freeze(); rows = GTK_CLIST(available_list)->rows; for (row = 0; row < rows; row++) {#ifdef OLD_CLEAR gtk_clist_get_text (GTK_CLIST (available_list), 0, 0, &name); item_data = gtk_clist_get_row_data (GTK_CLIST(available_list), 0);#else gtk_clist_get_text (GTK_CLIST (available_list), row, 0, &name); item_data = gtk_clist_get_row_data (GTK_CLIST(available_list), row);#endif name_array[0] = g_strdup(name); name_array[1] = NULL;#ifdef OLD_CLEAR gtk_clist_remove (GTK_CLIST (available_list), 0);#endif new_row = gtk_clist_append (GTK_CLIST (installed_list), name_array); gtk_clist_set_row_data (GTK_CLIST (installed_list), new_row, item_data); if (name_array[0] != NULL) g_free (name_array[0]); }#ifndef OLD_CLEAR gtk_clist_clear (GTK_CLIST (available_list));#endif gedit_plugin_manager_lists_thaw (GTK_WIDGET(data));}static voidgedit_plugin_manager_item_remove_all (GtkWidget *widget, gpointer data){ gint row, rows, new_row; gchar *name; gchar *name_array [2]; gpointer item_data; gedit_debug (DEBUG_PLUGINS, ""); gedit_plugin_manager_lists_freeze(); rows = GTK_CLIST(installed_list)->rows; for (row = 0; row < rows; row++) {#ifdef OLD_CLEAR gtk_clist_get_text (GTK_CLIST (installed_list), 0, 0, &name); item_data = gtk_clist_get_row_data (GTK_CLIST(installed_list), 0);#else gtk_clist_get_text (GTK_CLIST (installed_list), row, 0, &name); item_data = gtk_clist_get_row_data (GTK_CLIST(installed_list), row);#endif name_array[0] = g_strdup(name); name_array[1] = NULL;#ifdef OLD_CLEAR gtk_clist_remove (GTK_CLIST (installed_list), 0);#endif new_row = gtk_clist_append (GTK_CLIST (available_list), name_array); gtk_clist_set_row_data (GTK_CLIST (available_list), new_row, item_data); if (name_array[0] != NULL) g_free (name_array[0]); }#ifndef OLD_CLEAR gtk_clist_clear (GTK_CLIST (installed_list));#endif gedit_plugin_manager_lists_thaw (GTK_WIDGET(data));}static voidgedit_plugin_manager_destroy (GtkWidget *widget, gpointer data){ gedit_debug (DEBUG_PLUGINS, ""); gnome_dialog_close (GNOME_DIALOG (widget));}/*static gbooleangtk_clist_row_selected (GtkCList *clist, gint row){ gint selection_length; gint n; selection_length = g_list_length (clist->selection); for (n=0; n < selection_length; n++) if ((gint) g_list_nth_data (clist->selection, n) == row) return TRUE; return FALSE;}*/static voidgedit_plugin_manager_item_clicked (GtkCList *clist, GdkEventButton *event, gpointer data){ gint row; gint column; PluginData *plugin; gint dummy_pos; gchar *plugin_description; GtkWidget *plugin_info_local; /* GtkWidget *plugin_info_window_local; */ gedit_debug (DEBUG_PLUGINS, ""); if (event->button != 1) return; /* if this is a double click, do nothing */ if (event->type != GDK_BUTTON_PRESS) return; if (!gtk_clist_get_selection_info (clist, event->x, event->y, &row, &column)) return; plugin_info_local = GTK_WIDGET (data); gedit_plugin_manager_info_clear (plugin_info_local); plugin = gtk_clist_get_row_data (clist, row); plugin_description = g_strdup_printf (_("Plugin Name: %s\n" "Author: %s\n" "Description: %s\n"), plugin->name, plugin->author, plugin->long_desc); text_length = strlen (plugin_description); dummy_pos = 0; gtk_editable_insert_text (GTK_EDITABLE(plugin_info_local), plugin_description, text_length, &dummy_pos); dummy_pos = 0; gtk_editable_insert_text (GTK_EDITABLE(plugin_info_local), " ", 1, &dummy_pos); gtk_editable_delete_text (GTK_EDITABLE(plugin_info_local), 0, 1); g_free (plugin_description);}static voidgedit_plugin_manager_cancel_clicked (GtkWidget *widget, GtkWidget* data){ gnome_dialog_close (GNOME_DIALOG(data)); return;}static voidgedit_plugin_manager_help_clicked (GtkWidget *widget, GtkWidget* data){ static GnomeHelpMenuEntry help_entry = { "gedit", "plugins.html" }; gnome_help_display (NULL, &help_entry); return;}static voidgedit_plugin_manager_ok_clicked (GtkWidget *widget, GtkWidget* data){ gint n; gint row; gint rows; GnomeApp *nth_app; PluginData *plugin_data; gedit_debug (DEBUG_PLUGINS, ""); rows = GTK_CLIST (available_list)->rows; for (row = rows-1; row >= 0; row--) { plugin_data = gtk_clist_get_row_data (GTK_CLIST(available_list), row); plugin_data->installed = FALSE; } rows = GTK_CLIST (installed_list)->rows; for (row = rows-1; row >= 0; row--) { plugin_data = gtk_clist_get_row_data (GTK_CLIST(installed_list), row); plugin_data->installed = TRUE; } gnome_dialog_close (GNOME_DIALOG(data)); for (n = 0; n < g_list_length (mdi->windows); n++) { nth_app = g_list_nth_data (mdi->windows, n); gedit_plugins_menu_add (nth_app); } if(gedit_document_current () == NULL) gedit_window_set_plugins_menu_sensitivity (FALSE); return;}voidgedit_plugin_manager_create (GtkWidget *widget, gpointer data){ GladeXML *gui; GtkWidget *dialog; GtkWidget *add_button; GtkWidget *remove_button; GtkWidget *add_all_button; GtkWidget *remove_all_button; GtkWidget *plugin_info; GtkWidget *plugin_info_window; GtkWidget *ok_button; GtkWidget *cancel_button; GtkWidget *help_button; gedit_debug (DEBUG_PLUGINS, ""); if (!g_file_exists (GEDIT_GLADEDIR GEDIT_PLUGIN_MANAGER_GLADE_FILE)) { g_warning ("Could not find %s", GEDIT_GLADEDIR GEDIT_PLUGIN_MANAGER_GLADE_FILE); return; } gui = glade_xml_new (GEDIT_GLADEDIR GEDIT_PLUGIN_MANAGER_GLADE_FILE, NULL); if (!gui) { g_warning ("Could not find %s", GEDIT_GLADEDIR GEDIT_PLUGIN_MANAGER_GLADE_FILE); return; } dialog = glade_xml_get_widget (gui, "dialog"); add_button = glade_xml_get_widget (gui, "add_button"); remove_button = glade_xml_get_widget (gui, "remove_button"); add_all_button = glade_xml_get_widget (gui, "add_all_button"); remove_all_button = glade_xml_get_widget (gui, "remove_all_button"); available_list = glade_xml_get_widget (gui, "available_list"); installed_list = glade_xml_get_widget (gui, "installed_list"); plugin_info = glade_xml_get_widget (gui, "plugin_info"); plugin_info_window = glade_xml_get_widget (gui, "plugin_info_window"); ok_button = glade_xml_get_widget (gui, "ok_button"); cancel_button = glade_xml_get_widget (gui, "cancel_button"); help_button = glade_xml_get_widget (gui, "help_button"); g_return_if_fail (dialog != NULL); g_return_if_fail (add_button != NULL); g_return_if_fail (remove_button != NULL); g_return_if_fail (add_all_button != NULL); g_return_if_fail (remove_all_button != NULL); g_return_if_fail (available_list != NULL); g_return_if_fail (installed_list != NULL); g_return_if_fail (plugin_info != NULL); g_return_if_fail (plugin_info_window != NULL); g_return_if_fail (ok_button != NULL); g_return_if_fail (cancel_button != NULL); g_return_if_fail (help_button != NULL); /* gtk_object_set_data (GTK_OBJECT (plugin_info), "plugin_info_window", plugin_info_window); */ /* connect the signals */ gtk_signal_connect (GTK_OBJECT (dialog), "destroy", GTK_SIGNAL_FUNC (gedit_plugin_manager_destroy), NULL); gtk_signal_connect (GTK_OBJECT (ok_button), "clicked", GTK_SIGNAL_FUNC (gedit_plugin_manager_ok_clicked), dialog); gtk_signal_connect (GTK_OBJECT (cancel_button), "clicked", GTK_SIGNAL_FUNC (gedit_plugin_manager_cancel_clicked), dialog); gtk_signal_connect (GTK_OBJECT (help_button), "clicked", GTK_SIGNAL_FUNC (gedit_plugin_manager_help_clicked), NULL); /* now the buttons */ gtk_signal_connect (GTK_OBJECT (add_button), "clicked", GTK_SIGNAL_FUNC (gedit_plugin_manager_item_add), plugin_info); gtk_signal_connect (GTK_OBJECT (remove_button), "clicked", GTK_SIGNAL_FUNC (gedit_plugin_manager_item_remove), plugin_info); gtk_signal_connect (GTK_OBJECT (add_all_button), "clicked", GTK_SIGNAL_FUNC (gedit_plugin_manager_item_add_all), plugin_info); gtk_signal_connect (GTK_OBJECT (remove_all_button), "clicked", GTK_SIGNAL_FUNC (gedit_plugin_manager_item_remove_all), plugin_info); gtk_signal_connect (GTK_OBJECT (available_list), "button_press_event", GTK_SIGNAL_FUNC (gedit_plugin_manager_item_clicked), plugin_info); gtk_signal_connect (GTK_OBJECT (installed_list), "button_press_event", GTK_SIGNAL_FUNC (gedit_plugin_manager_item_clicked), plugin_info); gedit_plugin_manager_item_load (plugin_info); /* Set the dialog parent and modal type */ gnome_dialog_set_parent (GNOME_DIALOG (dialog), gedit_window_active()); gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); gnome_dialog_set_default (GNOME_DIALOG (dialog), 0); /* Show everything and free */ gtk_widget_show_all (dialog); gtk_object_unref (GTK_OBJECT (gui));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -