コード例 #1
0
ファイル: prefs.c プロジェクト: ptomato/gnome-inform7
void
populate_schemes_list(GtkListStore *list)
{
	I7App *theapp = i7_app_get();
	GSettings *prefs = i7_app_get_prefs(theapp);
	gtk_list_store_clear(list);
	i7_app_foreach_color_scheme(theapp, (GFunc)store_color_scheme, list);
	select_style_scheme(theapp->prefs->schemes_view, g_settings_get_string(prefs, PREFS_STYLE_SCHEME));
}
コード例 #2
0
ファイル: configfile.c プロジェクト: BartMassey/gnome-inform7
static void
on_config_style_scheme_changed(GSettings *settings, const char *key)
{
	I7App *theapp = i7_app_get();

	char *newvalue = g_settings_get_string(settings, key);
	/* TODO: validate new value? */

	/* update application to reflect new value */
	select_style_scheme(theapp->prefs->schemes_view, newvalue);
	update_style(GTK_SOURCE_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(theapp->prefs->source_example))));
	i7_app_foreach_document(theapp, (I7DocumentForeachFunc)i7_document_update_fonts, NULL);
	i7_app_foreach_document(theapp, (I7DocumentForeachFunc)i7_document_update_font_styles, NULL);

	g_free(newvalue);
}
コード例 #3
0
ファイル: prefs.c プロジェクト: ptomato/gnome-inform7
I7PrefsWidgets *
create_prefs_window(GSettings *prefs, GtkBuilder *builder)
{
	I7PrefsWidgets *self = g_slice_new0(I7PrefsWidgets);

	self->window = GTK_WIDGET(load_object(builder, "prefs_dialog"));
	self->prefs_notebook = GTK_WIDGET(load_object(builder, "prefs_notebook"));
	self->schemes_view = GTK_TREE_VIEW(load_object(builder, "schemes_view"));
	self->style_remove = GTK_WIDGET(load_object(builder, "style_remove"));
	self->tab_example = GTK_SOURCE_VIEW(load_object(builder, "tab_example"));
	self->source_example = GTK_SOURCE_VIEW(load_object(builder, "source_example"));
	self->extensions_view = GTK_TREE_VIEW(load_object(builder, "extensions_view"));
	self->extensions_add = GTK_WIDGET(load_object(builder, "extensions_add"));
	self->extensions_remove = GTK_WIDGET(load_object(builder, "extensions_remove"));
	self->auto_number = GTK_WIDGET(load_object(builder, "auto_number"));
	self->clean_index_files = GTK_WIDGET(load_object(builder, "clean_index_files"));
	self->schemes_list = GTK_LIST_STORE(load_object(builder, "schemes_list"));

	/* Bind widgets to GSettings */
#define BIND(key, obj, property) \
	g_settings_bind(prefs, key, load_object(builder, obj), property, \
		G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY)
#define BIND_COMBO_BOX(key, obj, enum_values) \
	g_settings_bind_with_mapping(prefs, key, \
		load_object(builder, obj), "active", \
		G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY, \
		(GSettingsBindGetMapping)settings_enum_get_mapping, \
		(GSettingsBindSetMapping)settings_enum_set_mapping, \
		enum_values, NULL)
	BIND(PREFS_AUTHOR_NAME, "author_name", "text");
	BIND(PREFS_CUSTOM_FONT, "custom_font", "font-name");
	BIND(PREFS_SYNTAX_HIGHLIGHTING, "enable_highlighting", "active");
	BIND(PREFS_AUTO_INDENT, "auto_indent", "active");
	BIND(PREFS_INDENT_WRAPPED, "indent_wrapped", "active");
	BIND(PREFS_INTELLIGENCE, "follow_symbols", "active");
	BIND(PREFS_INTELLIGENCE, "auto_number", "sensitive");
	BIND(PREFS_AUTO_NUMBER, "auto_number", "active");
	BIND(PREFS_CLEAN_BUILD_FILES, "clean_build_files", "active");
	BIND(PREFS_CLEAN_BUILD_FILES, "clean_index_files", "sensitive");
	BIND(PREFS_CLEAN_INDEX_FILES, "clean_index_files", "active");
	BIND(PREFS_SHOW_DEBUG_LOG, "show_debug_tabs", "active");
	BIND_COMBO_BOX(PREFS_FONT_SET, "font_set", font_set_enum);
	BIND_COMBO_BOX(PREFS_FONT_SIZE, "font_size", font_size_enum);
	BIND_COMBO_BOX(PREFS_INTERPRETER, "glulx_combo", interpreter_enum);
#undef BIND
#undef BIND_COMBO_BOX
	g_settings_bind(prefs, PREFS_TAB_WIDTH,
		gtk_range_get_adjustment(GTK_RANGE(load_object(builder, "tab_ruler"))), "value", G_SETTINGS_BIND_DEFAULT);

	/* Only select one extension at a time */
	GtkTreeSelection *select = gtk_tree_view_get_selection(self->extensions_view);
	gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);

	/* Connect the drag'n'drop stuff */
	gtk_drag_dest_set(GTK_WIDGET(self->extensions_view),
		GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT,
		NULL, 0, GDK_ACTION_COPY);
	/* For some reason GTK_DEST_DEFAULT_DROP causes two copies of every file to
	be sent to the widget when dropped, so we omit that. Also,
	GTK_DEST_DEFAULT_HIGHLIGHT seems to be broken. Including it anyway. */
	gtk_drag_dest_add_uri_targets(GTK_WIDGET(self->extensions_view));

	/* Do the style scheme list */
	gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(self->schemes_list), 0, GTK_SORT_ASCENDING);
	select = gtk_tree_view_get_selection(self->schemes_view);
	gtk_tree_selection_set_mode(select, GTK_SELECTION_BROWSE);
	select_style_scheme(self->schemes_view, g_settings_get_string(prefs, PREFS_STYLE_SCHEME));

	return self;
}