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

📄 window.c

📁 一个简单的文本编辑器
💻 C
📖 第 1 页 / 共 2 页
字号:
	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 + -