3
GtkBuilder = imports.gtkbuilder;
5
ThemeLoader = imports.ThemeLoader;
6
GnomeGamesSupport = imports.gi.GnomeGamesSupport;
8
_ = imports.gettext.gettext;
11
var theme, colors, zealous, size;
12
var default_theme = _("Shapes and Colors");
14
var default_colors = 3;
15
var default_zealous = true;
17
// Map theme names to themes
18
var themes = ThemeLoader.load_themes();
19
var sizes = [{name: _("Small"), columns: 6, rows: 5},
20
{name: _("Normal"), columns: 15, rows: 10},
21
{name: _("Large"), columns: 20, rows: 15}];
23
settings = new Gio.Settings ({schema_id: "org.gnome.swell-foop"});
27
theme = themes[settings.get_string("theme")];
28
size = settings.get_int("size");
29
colors = settings.get_int("colors");
30
zealous = settings.get_boolean("zealous");
32
if(colors < 2 || colors > 4)
33
colors = default_colors;
36
theme = themes[default_theme];
40
print("Couldn't load settings: " + e.message);
41
theme = themes[default_theme];
43
colors = default_colors;
44
zealous = default_zealous;
47
// Settings Event Handler
49
SettingsWatcher = new GType({
50
parent: Gtk.Button.type, // TODO: Can I make something inherit directly from GObject?!
51
name: "SettingsWatcher",
52
signals: [{name: "theme_changed"}, {name: "size_changed"}, {name: "colors_changed"}],
59
var Watcher = new SettingsWatcher();
64
select_theme: function(selector, ud)
66
new_theme = themes[selector.get_active_text()];
68
if(new_theme == theme)
72
ThemeLoader.load_theme(main.stage, theme);
74
settings.set_string("theme", selector.get_active_text());
75
Watcher.signal.theme_changed.emit();
77
set_zealous_animation: function(widget, ud)
79
zealous = widget.active;
80
settings.set_boolean("zealous", zealous);
82
update_size: function(widget, ud)
84
new_size = widget.get_active();
91
settings.set_int("size", size);
92
Watcher.signal.size_changed.emit();
94
update_colors: function(widget, ud)
96
new_colors = widget.get_value();
98
if(new_colors == colors)
103
settings.set_int("colors", colors);
104
Watcher.signal.colors_changed.emit();
106
reset_defaults: function(widget, ud)
108
print("Not yet implemented.");
112
// Settings UI Helper Functions
114
function show_settings()
116
b = new Gtk.Builder();
117
b.add_from_file(imports.Path.file_prefix + "/settings.ui");
118
b.connect_signals(handlers);
120
populate_theme_selector(b.get_object("theme-selector"));
121
populate_size_selector(b.get_object("size-selector"));
123
// Set current values
124
b.get_object("size-selector").set_active(size);
125
b.get_object("colors-spinner").value = colors;
126
b.get_object("zealous-checkbox").active = zealous;
128
settings_dialog = b.get_object("dialog1");
129
settings_dialog.set_transient_for(main.window);
131
var result = settings_dialog.run();
133
settings_dialog.destroy();
136
function populate_size_selector(selector)
140
selector.append_text(sizes[i].name);
144
function populate_theme_selector(selector)
148
for(var th in themes)
150
selector.append_text(themes[th].name);
152
if(themes[th].name == theme.name)
153
selector.set_active(i);