📄 window.c
字号:
bg->red = settings->bg[0]; bg->green = settings->bg[1]; bg->blue = settings->bg[2]; fg = &style->text[0]; fg->red = settings->fg[0]; fg->green = settings->fg[1]; fg->blue = settings->fg[2]; for (n = 0; n < g_list_length (mdi->children); n++) { nth_doc = GEDIT_DOCUMENT (g_list_nth_data (mdi->children, n)); for (m = 0; m < g_list_length (nth_doc->views); m++) { mth_view = GEDIT_VIEW (g_list_nth_data (nth_doc->views, m)); if (tab_size_changed) gedit_view_set_tab_size (mth_view, settings->tab_size); if (mdi_mode_changed) { gtk_widget_grab_focus (GTK_WIDGET (mth_view->text)); mth_view->app = gedit_window_active_app(); gedit_view_load_widgets (mth_view); } gedit_view_set_undo (mth_view, GEDIT_UNDO_STATE_REFRESH, GEDIT_UNDO_STATE_REFRESH); gtk_widget_set_style (GTK_WIDGET (mth_view->text), style); gedit_view_set_font (mth_view, settings->font); } } }voidgedit_window_set_widgets_sensitivity_ro (GnomeApp *app, gint unsensitive){ GnomeUIInfo *ui_info; GnomeUIInfo *sub_ui_info; GtkWidget *widget; gint count, sub_count; PluginData *pd; GnomeDockItem *dock_item; GtkWidget *menu_bar; GList* children; gchar* path; gint menu_pos; gedit_debug (DEBUG_WINDOW, ""); g_return_if_fail (GNOME_IS_APP (app)); ui_info = gnome_mdi_get_toolbar_info (app); g_return_if_fail (ui_info != NULL); /* Set the toolbar tems */ count = 0; while (ui_info[count].type != GNOME_APP_UI_ENDOFINFO) { if (ui_info [count].moreinfo == file_save_cb || ui_info [count].moreinfo == edit_cut_cb || ui_info [count].moreinfo == edit_paste_cb || ui_info [count].moreinfo == gedit_replace_cb) { widget = ui_info [count].widget; if (GTK_IS_WIDGET (widget)) gtk_widget_set_sensitive (widget, !unsensitive); } count++; } /* get the UI_info structures */ ui_info = gnome_mdi_get_menubar_info (app); /* Set the menus and submenus */ count = 0; while (ui_info[count].type != GNOME_APP_UI_ENDOFINFO) { if (ui_info[count].type == GNOME_APP_UI_SUBTREE_STOCK || ui_info[count].type == GNOME_APP_UI_SUBTREE) { sub_count = 0; sub_ui_info = ui_info [count].moreinfo; while (sub_ui_info[sub_count].type != GNOME_APP_UI_ENDOFINFO) { if (sub_ui_info [sub_count].moreinfo == file_save_cb || sub_ui_info [sub_count].moreinfo == edit_cut_cb || sub_ui_info [sub_count].moreinfo == edit_paste_cb || sub_ui_info [sub_count].moreinfo == gedit_replace_cb) { widget = sub_ui_info [sub_count].widget; if (GTK_IS_WIDGET (widget)) gtk_widget_set_sensitive (widget, !unsensitive); } if (sub_ui_info [sub_count].moreinfo == file_revert_cb) { /* We need to check if there are more than 2 views opened */ /* The only info we have is *app, and we can't use view_active. */ GeditDocument *doc; doc = gedit_document_current(); widget = sub_ui_info [sub_count].widget; if (GTK_IS_WIDGET (widget) && doc != NULL) gtk_widget_set_sensitive (widget, (doc->filename!=NULL) && !unsensitive); } sub_count++; } } count++; } /* Set popup menu sensitivity*/ count = 0; while (popup_menu[count].type != GNOME_APP_UI_ENDOFINFO) { if (popup_menu [count].moreinfo == file_save_cb || popup_menu [count].moreinfo == edit_cut_cb || popup_menu [count].moreinfo == edit_paste_cb || popup_menu [count].moreinfo == gedit_replace_cb) { widget = popup_menu [count].widget; if ((widget != NULL) && GTK_IS_WIDGET (widget) /*&& (GTK_OBJECT(widget)->ref_count > 0)*/) { gtk_widget_set_sensitive (widget, !unsensitive); /* g_print("%d %s\n", count, !unsensitive ? "sensitive" : "not sensitive");*/ } } count++; } /* Set plugins menu sensitivity*/ dock_item = gnome_app_get_dock_item_by_name (app, GNOME_APP_MENUBAR_NAME); g_return_if_fail (GNOME_IS_DOCK_ITEM (dock_item)); menu_bar = gnome_dock_item_get_child (dock_item); for (count = 0; count < g_list_length (plugins_list); count++) { pd = g_list_nth_data (plugins_list, count); if (pd->installed && pd->needs_a_document) { path = g_strdup_printf ("%s/%s", _("_Plugins"), pd->name); children = gtk_container_children (GTK_CONTAINER ( gnome_app_find_menu_pos (menu_bar, path, &menu_pos))); widget = GTK_WIDGET (g_list_nth_data (children, menu_pos - 1)); if (GTK_IS_WIDGET (widget)) { if(pd->modifies_an_existing_doc) { gtk_widget_set_sensitive (widget, !unsensitive); } else { gtk_widget_set_sensitive (widget, TRUE); } } g_free (path); } } return; }/** * gedit_window_set_widgets_sensitivity: * @sensitive: * * for sensitive = FALSE * this rutine is called when a document is closed and it there aren't any documents * opened it sets the menu items and toolbar items sensitivity. * * for sensitive = TRUE * is called whenever a new document is created, and will set menu/toolbar items * sensitivity to SENSITIVE * **/voidgedit_window_set_widgets_sensitivity (gint sensitive){ GnomeApp *app = NULL; GnomeUIInfo *ui_info; GnomeUIInfo *sub_ui_info; GtkWidget *widget; gint count = 0, sub_count = 0; gedit_debug (DEBUG_WINDOW, ""); if (!sensitive && g_list_length (mdi->children) > 0) return; if (sensitive && g_list_length (mdi->children) == 0) return; app = GNOME_APP (g_list_nth_data (mdi->windows, 0)); g_return_if_fail (GNOME_IS_APP (app)); /* get the UI_info structures */ ui_info = gnome_mdi_get_toolbar_info (app); g_return_if_fail (ui_info != NULL); /* Set the toolbar tems */ while (ui_info[count].type != GNOME_APP_UI_ENDOFINFO) { if (ui_info [count].moreinfo == file_save_as_cb || ui_info [count].moreinfo == file_close_cb || ui_info [count].moreinfo == gedit_print_cb || ui_info [count].moreinfo == file_save_cb || (ui_info [count].moreinfo == gedit_undo_undo && !sensitive)|| (ui_info [count].moreinfo == gedit_undo_redo && !sensitive) || ui_info [count].moreinfo == edit_cut_cb || ui_info [count].moreinfo == edit_copy_cb || ui_info [count].moreinfo == edit_paste_cb || ui_info [count].moreinfo == gedit_find_cb || ui_info [count].moreinfo == gedit_file_info_cb ) { widget = ui_info [count].widget; if (GTK_IS_WIDGET (widget)) gtk_widget_set_sensitive (widget, sensitive); } count++; } ui_info = gnome_mdi_get_menubar_info (app); g_return_if_fail (ui_info != NULL); /* Set the menus and submenus */ count = 0; while (ui_info[count].type != GNOME_APP_UI_ENDOFINFO) { if (ui_info[count].type == GNOME_APP_UI_SUBTREE_STOCK || ui_info[count].type == GNOME_APP_UI_SUBTREE) { sub_count = 0; sub_ui_info = ui_info [count].moreinfo; while (sub_ui_info[sub_count].type != GNOME_APP_UI_ENDOFINFO) { if (sub_ui_info [sub_count].moreinfo == file_save_as_cb || sub_ui_info [sub_count].moreinfo == file_save_cb || sub_ui_info [sub_count].moreinfo == file_save_all_cb || sub_ui_info [sub_count].moreinfo == file_close_cb || sub_ui_info [sub_count].moreinfo == file_close_all_cb || sub_ui_info [sub_count].moreinfo == file_revert_cb || sub_ui_info [sub_count].moreinfo == gedit_print_cb || sub_ui_info [sub_count].moreinfo == gedit_print_preview_cb || (sub_ui_info [sub_count].moreinfo == gedit_undo_undo && !sensitive)|| (sub_ui_info [sub_count].moreinfo == gedit_undo_redo && !sensitive)|| sub_ui_info [sub_count].moreinfo == edit_cut_cb || sub_ui_info [sub_count].moreinfo == edit_copy_cb || sub_ui_info [sub_count].moreinfo == edit_paste_cb || sub_ui_info [sub_count].moreinfo == gedit_find_cb || sub_ui_info [sub_count].moreinfo == edit_select_all_cb || sub_ui_info [sub_count].moreinfo == gedit_find_again_cb || sub_ui_info [sub_count].moreinfo == gedit_replace_cb || sub_ui_info [sub_count].moreinfo == gedit_goto_line_cb || sub_ui_info [sub_count].moreinfo == gedit_view_add_cb|| sub_ui_info [sub_count].moreinfo == gedit_view_remove_cb || sub_ui_info [sub_count].moreinfo == gedit_file_info_cb ) { widget = sub_ui_info [sub_count].widget; if (GTK_IS_WIDGET (widget)) gtk_widget_set_sensitive (widget, sensitive); } sub_count++; } } count++; } if (sensitive) gedit_window_set_view_menu_sensitivity (app); gedit_window_set_plugins_menu_sensitivity (sensitive); return;}/** * gedit_window_set_plugins_menu_sensitivity: * @sensitive: * * Set plugins menu sensitivity **/voidgedit_window_set_plugins_menu_sensitivity (gint sensitive){ GnomeApp *app; PluginData *pd; GnomeDockItem *dock_item; GtkWidget *menu_bar, *widget; gint count; GList* children; gchar* path; gint menu_pos; app = GNOME_APP (g_list_nth_data (mdi->windows, 0)); g_return_if_fail (GNOME_IS_APP (app)); dock_item = gnome_app_get_dock_item_by_name (app, GNOME_APP_MENUBAR_NAME); g_return_if_fail (GNOME_IS_DOCK_ITEM (dock_item)); menu_bar = gnome_dock_item_get_child (dock_item); for (count = 0; count < g_list_length (plugins_list); count++) { pd = g_list_nth_data (plugins_list, count); if (pd->installed && pd->needs_a_document) { path = g_strdup_printf ("%s/%s", _("_Plugins"), pd->name); children = gtk_container_children (GTK_CONTAINER ( gnome_app_find_menu_pos (menu_bar, path, &menu_pos))); widget = GTK_WIDGET (g_list_nth_data (children, menu_pos - 1)); if (GTK_IS_WIDGET (widget)) gtk_widget_set_sensitive (widget, sensitive); g_free (path); } } return; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -