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

📄 dialog-prefs.c

📁 一个简单的文本编辑器
💻 C
📖 第 1 页 / 共 2 页
字号:
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- *//* * gedit * * Copyright (C) 1998, 1999, 2000 Alex Roberts, Evan Lawrence, Jason Leach, Jose Celorio * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Prefs glade-ized and rewritten by Jason Leach <leach@wam.umd.edu> */#include <config.h>#include <glib.h>#include <gtk/gtkwidget.h>#include <libgnome/libgnome.h>#include <libgnomeui/gnome-font-picker.h>#include <libgnomeui/gnome-paper-selector.h>#include <libgnomeui/gnome-color-picker.h>#include <libgnomeui/gnome-propertybox.h>#include <glade/glade.h>#include <string.h> /* For strcmp */#include "prefs.h"#include "view.h"#include "dialogs.h"#include "utils.h"#include "commands.h"#include "window.h"#include "print.h"static GtkWidget *propertybox;static GtkWidget *statusbar;#ifdef ENABLE_SPLIT_SCREENstatic GtkWidget *splitscreen;#endifstatic GtkWidget *autoindent;static GtkWidget *toolbar_radio_button_1;static GtkWidget *toolbar_radio_button_2;static GtkWidget *toolbar_radio_button_3;static GtkWidget *mdimode;static GtkWidget *tabsize;static GtkWidget *tabpos;static GtkWidget *foreground;static GtkWidget *background;static GtkWidget *defaultfont;static GtkWidget *print_wrap;static GtkWidget *print_header;static GtkWidget *print_lines;static GtkWidget *print_orientation_portrait_radio_button;static GtkWidget *print_lines_spin_button;static GtkWidget *lines_label;static GtkWidget *paperselector;static GtkWidget *undo_levels;static GtkWidget *undo_levels_spin_button;static GtkWidget *undo_levels_label;static gintgtk_option_menu_get_active_index (GtkWidget *omenu){	GtkMenu *menu;	GtkWidget *active;	GtkWidget *child;	GList *children;	gint i = 0;	gedit_debug(DEBUG_PREFS, "");	menu = GTK_MENU (gtk_option_menu_get_menu (GTK_OPTION_MENU (omenu)));	active = gtk_menu_get_active (menu);		child = NULL;	children = GTK_MENU_SHELL (menu)->children;	while (children)	{		child = children->data;		children = children->next;		if (child == active)			return i;		else			i++;	}	return 0;}static voiddestroy_cb (void){	gedit_debug (DEBUG_PREFS, "");	gtk_widget_destroy (GTK_WIDGET (propertybox));	propertybox = NULL;}static voidapply_cb (GnomePropertyBox *pbox, gint page, gpointer data){	GtkStyle *style;	GdkColor *c;	gint temp_mdi_mode;	gint temp;	gboolean tab_size_changed = FALSE;		gedit_debug (DEBUG_PREFS, "");		if (page == -1)		return;	settings->auto_indent = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (autoindent));	settings->show_status = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (statusbar));	temp = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (tabsize));	if (settings->tab_size != temp)		tab_size_changed = TRUE;	settings->tab_size = temp;	switch (gtk_radio_group_get_selected (GTK_RADIO_BUTTON(toolbar_radio_button_1)->group))	{	case 0:		settings->toolbar_labels = GEDIT_TOOLBAR_SYSTEM;		break;	case 1:		settings->toolbar_labels = GEDIT_TOOLBAR_ICONS;		break;	case 2:		settings->toolbar_labels = GEDIT_TOOLBAR_ICONS_AND_TEXT;		break;	default:		g_return_if_fail (FALSE);		break;			}	if (settings->font)		g_free (settings->font);		settings->font = g_strdup (gnome_font_picker_get_font_name (GNOME_FONT_PICKER (defaultfont)));	if (gtk_radio_group_get_selected (GTK_RADIO_BUTTON(print_orientation_portrait_radio_button)->group)==0)		settings->print_orientation = PRINT_ORIENT_PORTRAIT;	else		settings->print_orientation = PRINT_ORIENT_LANDSCAPE;					settings->print_header = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (print_header));	settings->print_wrap_lines = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (print_wrap));	g_free (settings->papersize);	if (strcmp( "custom", gnome_paper_selector_get_name( GNOME_PAPER_SELECTOR (paperselector)))==0)	{		g_warning ("Custom paper sizes not yet supported. Setting paper size to default\n");		settings->papersize = g_strdup (gnome_paper_name_default());	}	else		settings->papersize = g_strdup (gnome_paper_selector_get_name( GNOME_PAPER_SELECTOR (paperselector)));	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (print_lines))) {		settings->print_lines = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (print_lines_spin_button));	}	else	{		settings->print_lines = 0;	}	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (undo_levels)))		settings->undo_levels = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (undo_levels_spin_button));	else		settings->undo_levels = 0;	        style = gtk_style_new ();                c = &style->base[0];                gnome_color_picker_get_i16 (GNOME_COLOR_PICKER (background),                                    &c->red, &c->green, &c->blue, 0);        settings->bg[0] = c->red;        settings->bg[1] = c->green;        settings->bg[2] = c->blue;                c = &style->text[0];                gnome_color_picker_get_i16 (GNOME_COLOR_PICKER (foreground),                                    &c->red, &c->green, &c->blue, 0);        settings->fg[0] = c->red;        settings->fg[1] = c->green;        settings->fg[2] = c->blue;	gtk_style_unref (style);	settings->tab_pos = gtk_option_menu_get_active_index (tabpos);	temp_mdi_mode = gtk_option_menu_get_active_index (mdimode);	temp_mdi_mode = temp_mdi_mode != 3 ? temp_mdi_mode : GNOME_MDI_DEFAULT_MODE;	if (settings->mdi_mode != temp_mdi_mode)	{		settings->mdi_mode = temp_mdi_mode;		gedit_window_refresh_all (TRUE, tab_size_changed);	}	else	{		gedit_window_refresh_all (FALSE, tab_size_changed);	}		gedit_prefs_save_settings ();}static voidgtk_toggle_button_update_label_sensitivity (GtkWidget *widget, gboolean sens){	GList *children;	GList *l;	GtkContainer *container;	g_return_if_fail (widget != NULL);	g_return_if_fail (GTK_IS_CONTAINER (widget));	container = GTK_CONTAINER (widget);	children = gtk_container_children (container);	l = children;	while (l)	{		GtkWidget *child = (GtkWidget*)l->data;		if (GTK_IS_LABEL (child))			gtk_widget_set_sensitive (child, sens);		l = l->next;	}	g_list_free (children);}static voidprefs_changed (GtkWidget *widget, gpointer data){	gedit_debug (DEBUG_PREFS, "");	gnome_property_box_changed (GNOME_PROPERTY_BOX (propertybox));}static voidprepare_general_page (GladeXML *gui){	gedit_debug (DEBUG_PREFS, "");	statusbar = glade_xml_get_widget (gui, "statusbar");#ifdef ENABLE_SPLIT_SCREEN	splitscreen = glade_xml_get_widget (gui, "splitscreen");#endif		autoindent = glade_xml_get_widget (gui, "autoindent");	tabsize = glade_xml_get_widget (gui, "tabwidthspin");	toolbar_radio_button_1 = glade_xml_get_widget (gui, "toolbar_radio_button_1");	toolbar_radio_button_2 = glade_xml_get_widget (gui, "toolbar_radio_button_2");	toolbar_radio_button_3 = glade_xml_get_widget (gui, "toolbar_radio_button_3");	if ( !statusbar ||#ifdef ENABLE_SPLIT_SCREEN	     !splitscreen ||#endif	     !autoindent ||	     !tabsize ||	     !toolbar_radio_button_1 ||	     !toolbar_radio_button_2 ||	     !toolbar_radio_button_3 )	{		g_warning ("Could not load widgets from prefs.glade\n");		return;	}	     	/* set initial button status */	gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (statusbar),				     settings->show_status);#ifdef ENABLE_SPLIT_SCREEN	gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (splitscreen),				     settings->splitscreen);#endif	gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (autoindent),				     settings->auto_indent);	gtk_spin_button_set_value (GTK_SPIN_BUTTON (tabsize),				   (guint) settings->tab_size);			switch (settings->toolbar_labels)	{	case GEDIT_TOOLBAR_SYSTEM:		gtk_radio_button_select (GTK_RADIO_BUTTON(toolbar_radio_button_1)->group, 0);		break;	case GEDIT_TOOLBAR_ICONS:		gtk_radio_button_select (GTK_RADIO_BUTTON(toolbar_radio_button_1)->group, 1);		break;	case GEDIT_TOOLBAR_ICONS_AND_TEXT:		gtk_radio_button_select (GTK_RADIO_BUTTON(toolbar_radio_button_1)->group, 2);		break;	}	/* connect signals */	gtk_signal_connect (GTK_OBJECT (statusbar), "toggled",			    GTK_SIGNAL_FUNC (prefs_changed), NULL);#ifdef ENABLE_SPLIT_SCREEN	gtk_signal_connect (GTK_OBJECT (splitscreen), "toggled",

⌨️ 快捷键说明

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