summaryrefslogtreecommitdiff
path: root/src/gui/preferences.vala
diff options
context:
space:
mode:
authorAlessandro Ghedini <al3xbio@gmail.com>2012-01-21 19:07:09 +0100
committerAlessandro Ghedini <al3xbio@gmail.com>2012-01-21 19:07:09 +0100
commit60560a030fda3c539ff9dc1563b9926414a193da (patch)
tree77590b395685a8d48d3615e45629a1610d08c071 /src/gui/preferences.vala
parentd6b2677825cbb423e2099563c16321c3e23d7899 (diff)
Imported Upstream version 0.4.0upstream/0.4.0
Diffstat (limited to 'src/gui/preferences.vala')
-rw-r--r--src/gui/preferences.vala325
1 files changed, 0 insertions, 325 deletions
diff --git a/src/gui/preferences.vala b/src/gui/preferences.vala
deleted file mode 100644
index 9444fac..0000000
--- a/src/gui/preferences.vala
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
-Copyright (c) 2011 by Simon Schneegans
-
-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 3 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, see <http://www.gnu.org/licenses/>.
-*/
-
-namespace GnomePie {
-
-/////////////////////////////////////////////////////////////////////////
-/// The Gtk settings menu of Gnome-Pie.
-/////////////////////////////////////////////////////////////////////////
-
-public class Preferences : Gtk.Window {
-
- /////////////////////////////////////////////////////////////////////
- /// C'tor, constructs the whole dialog. Many thanks to the
- /// synapse-project, since some of this code is taken from there!
- /////////////////////////////////////////////////////////////////////
-
- public Preferences() {
- this.title = _("Gnome-Pie - Settings");
- this.set_position(Gtk.WindowPosition.CENTER);
- this.set_size_request(550, 550);
- this.resizable = false;
- this.icon_name = "gnome-pie";
- this.delete_event.connect(hide_on_delete);
-
- // main container
- var main_vbox = new Gtk.VBox(false, 12);
- main_vbox.border_width = 12;
- add(main_vbox);
-
- // tab container
- var tabs = new Gtk.Notebook();
-
- // general tab
- var general_tab = new Gtk.VBox(false, 6);
- general_tab.border_width = 12;
-
- // behavior frame
- var behavior_frame = new Gtk.Frame(null);
- behavior_frame.set_shadow_type(Gtk.ShadowType.NONE);
- var behavior_frame_label = new Gtk.Label(null);
- behavior_frame_label.set_markup(Markup.printf_escaped ("<b>%s</b>", _("Behavior")));
- behavior_frame.set_label_widget(behavior_frame_label);
-
- var behavior_vbox = new Gtk.VBox (false, 6);
- var align = new Gtk.Alignment (0.5f, 0.5f, 1.0f, 1.0f);
- align.set_padding (6, 12, 12, 12);
- align.add (behavior_vbox);
- behavior_frame.add (align);
-
- // Autostart checkbox
- var autostart = new Gtk.CheckButton.with_label (_("Startup on Login"));
- autostart.tooltip_text = _("If checked, Gnome-Pie will start when you log in.");
- autostart.active = Config.global.auto_start;
- autostart.toggled.connect(autostart_toggled);
- behavior_vbox.pack_start(autostart, false);
-
- // Indicator icon
- var indicator = new Gtk.CheckButton.with_label (_("Show Indicator"));
- indicator.tooltip_text = _("If checked, an indicator for easy access of the settings menu is shown in your panel.");
- indicator.active = Config.global.show_indicator;
- indicator.toggled.connect(indicator_toggled);
- behavior_vbox.pack_start(indicator, false);
-
- // Open Pies at Mouse
- var open_at_mouse = new Gtk.CheckButton.with_label (_("Open Pies at Mouse"));
- open_at_mouse.tooltip_text = _("If checked, pies will open at your pointer. Otherwise they'll pop up in the middle of the screen.");
- open_at_mouse.active = Config.global.open_at_mouse;
- open_at_mouse.toggled.connect(open_at_mouse_toggled);
- behavior_vbox.pack_start(open_at_mouse, false);
-
- // Slider
- var slider_hbox = new Gtk.HBox (false, 6);
- behavior_vbox.pack_start(slider_hbox);
-
- var scale_label = new Gtk.Label(_("Global Scale"));
- slider_hbox.pack_start(scale_label, false, false);
-
- var scale_slider = new Gtk.HScale.with_range(0.5, 2.0, 0.05);
- scale_slider.set_value(Config.global.global_scale);
- scale_slider.value_pos = Gtk.PositionType.RIGHT;
-
- bool changing = false;
- bool changed_again = false;
-
- scale_slider.value_changed.connect(() => {
- if (!changing) {
- changing = true;
- Timeout.add(300, () => {
- if (changed_again) {
- changed_again = false;
- return true;
- }
-
- Config.global.global_scale = scale_slider.get_value();
- Config.global.load_themes(Config.global.theme.name);
- changing = false;
- return false;
- });
- } else {
- changed_again = true;
- }
- });
-
- slider_hbox.pack_end(scale_slider, true, true);
-
- general_tab.pack_start (behavior_frame, false);
-
- // theme frame
- var theme_frame = new Gtk.Frame(null);
- theme_frame.set_shadow_type(Gtk.ShadowType.NONE);
- var theme_frame_label = new Gtk.Label(null);
- theme_frame_label.set_markup(Markup.printf_escaped("<b>%s</b>", _("Themes")));
- theme_frame.set_label_widget(theme_frame_label);
-
- // scrollable frame
- var scroll = new Gtk.ScrolledWindow (null, null);
- align = new Gtk.Alignment(0.5f, 0.5f, 1.0f, 1.0f);
- align.set_padding(6, 12, 12, 12);
- align.add(scroll);
- theme_frame.add(align);
-
- scroll.set_policy (Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);
- scroll.set_shadow_type (Gtk.ShadowType.IN);
-
- // themes list
- var theme_list = new ThemeList();
- scroll.add(theme_list);
-
- general_tab.pack_start (theme_frame, true, true);
- tabs.append_page(general_tab, new Gtk.Label(_("General")));
-
- // pies tab
- var pies_tab = new Gtk.VBox(false, 6);
- pies_tab.border_width = 12;
- tabs.append_page(pies_tab, new Gtk.Label(_("Pies")));
-
- // scrollable frame
- scroll = new Gtk.ScrolledWindow (null, null);
- align = new Gtk.Alignment(0.5f, 0.5f, 1.0f, 1.0f);
- align.add(scroll);
- pies_tab.add(align);
-
- scroll.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
- scroll.set_shadow_type (Gtk.ShadowType.IN);
-
- // pies list
- var pie_list = new PieList();
- scroll.add(pie_list);
-
- // bottom box
- var info_box = new Gtk.HBox (false, 6);
-
- // info image
- var info_image = new Gtk.Image.from_stock (Gtk.Stock.INFO, Gtk.IconSize.MENU);
- info_box.pack_start (info_image, false);
-
- // info label
- var info_label = new TipViewer({
- _("You can right-click in the list for adding or removing entries."),
- _("You can reset Gnome-Pie to its default options with the terminal command \"gnome-pie --reset\"."),
- _("The radiobutton at the beginning of each slice-line indicates the QuickAction of the pie."),
- _("Pies can be opened with the terminal command \"gnome-pie --open=ID\"."),
- _("Feel free to visit Gnome-Pie's homepage at %s!").printf("<a href='http://gnome-pie.simonschneegans.de'>gnome-pie.simonschneegans.de</a>"),
- _("You can drag'n'drop applications from your main menu to the list above."),
- _("If you want to give some feedback, please write an e-mail to %s!").printf("<a href='mailto:code@simonschneegans.de'>code@simonschneegans.de</a>"),
- _("You may drag'n'drop URLs and bookmarks from your internet browser to the list above."),
- _("Bugs can be reported at %s!").printf("<a href='https://github.com/Simmesimme/Gnome-Pie'>Github</a>"),
- _("It's possible to drag'n'drop files and folders from your file browser to the list above."),
- _("It's recommended to keep your Pies small (at most 6-8 Slices). Else they will become hard to navigate."),
- _("In order to create a launcher for a Pie, drag the Pie from the list to your desktop!")
- });
- this.show.connect(info_label.start_slide_show);
- this.hide.connect(info_label.stop_slide_show);
-
- info_box.pack_start (info_label);
-
- // down Button
- var down_button = new Gtk.Button();
- down_button.tooltip_text = _("Moves the selected Slice down");
- down_button.sensitive = false;
- var down_image = new Gtk.Image.from_stock (Gtk.Stock.GO_DOWN, Gtk.IconSize.LARGE_TOOLBAR);
- down_button.add(down_image);
- down_button.clicked.connect (() => {
- pie_list.selection_down();
- });
-
- info_box.pack_end(down_button, false, false);
-
- // up Button
- var up_button = new Gtk.Button();
- up_button.tooltip_text = _("Moves the selected Slice up");
- up_button.sensitive = false;
- var up_image = new Gtk.Image.from_stock (Gtk.Stock.GO_UP, Gtk.IconSize.LARGE_TOOLBAR);
- up_button.add(up_image);
- up_button.clicked.connect (() => {
- pie_list.selection_up();
- });
-
- info_box.pack_end(up_button, false, false);
-
- pie_list.get_selection().changed.connect(() => {
- Gtk.TreeIter selected;
- if (pie_list.get_selection().get_selected(null, out selected)) {
- Gtk.TreePath path = pie_list.model.get_path(selected);
- if (path.get_depth() == 1) {
- up_button.sensitive = false;
- down_button.sensitive = false;
- } else {
- up_button.sensitive = true;
- down_button.sensitive = true;
-
- int child_pos = path.get_indices()[1];
-
- if (child_pos == 0)
- up_button.sensitive = false;
-
- path.up();
- Gtk.TreeIter parent_iter;
- pie_list.model.get_iter(out parent_iter, path);
- if (child_pos == pie_list.model.iter_n_children(parent_iter)-1)
- down_button.sensitive = false;
-
- }
- }
- });
-
- pies_tab.pack_start (info_box, false);
-
- main_vbox.pack_start(tabs);
-
- // close button
- var bbox = new Gtk.HButtonBox ();
- bbox.set_layout (Gtk.ButtonBoxStyle.END);
- var close_button = new Gtk.Button.from_stock(Gtk.Stock.CLOSE);
- close_button.clicked.connect (() => {
- hide();
- });
- bbox.pack_start (close_button);
-
- main_vbox.pack_start(bbox, false);
-
- main_vbox.show_all();
-
- this.hide.connect(() => {
- // save settings on close
- Config.global.save();
- Pies.save();
- });
- }
-
- /////////////////////////////////////////////////////////////////////
- /// Creates or deletes the autostart file. This code is inspired
- /// by project synapse as well.
- /////////////////////////////////////////////////////////////////////
-
- private void autostart_toggled(Gtk.ToggleButton check_box) {
- bool active = check_box.active;
- if (!active && FileUtils.test(Paths.autostart, FileTest.EXISTS)) {
- // delete the autostart file
- FileUtils.remove (Paths.autostart);
- }
- else if (active && !FileUtils.test(Paths.autostart, FileTest.EXISTS)) {
- string autostart_entry =
- "#!/usr/bin/env xdg-open\n" +
- "[Desktop Entry]\n" +
- "Name=Gnome-Pie\n" +
- "Exec=gnome-pie\n" +
- "Encoding=UTF-8\n" +
- "Type=Application\n" +
- "X-GNOME-Autostart-enabled=true\n" +
- "Icon=gnome-pie\n";
-
- // create the autostart file
- string autostart_dir = GLib.Path.get_dirname(Paths.autostart);
- if (!FileUtils.test(autostart_dir, FileTest.EXISTS | FileTest.IS_DIR)) {
- DirUtils.create_with_parents(autostart_dir, 0755);
- }
-
- try {
- FileUtils.set_contents(Paths.autostart, autostart_entry);
- FileUtils.chmod(Paths.autostart, 0755);
- } catch (Error e) {
- var d = new Gtk.MessageDialog (this, 0, Gtk.MessageType.ERROR, Gtk.ButtonsType.CLOSE,
- "%s", e.message);
- d.run ();
- d.destroy ();
- }
- }
- }
-
- /////////////////////////////////////////////////////////////////////
- /// Shows or hides the indicator.
- /////////////////////////////////////////////////////////////////////
-
- private void indicator_toggled(Gtk.ToggleButton check_box) {
- var check = check_box as Gtk.CheckButton;
- Config.global.show_indicator = check.active;
- }
-
- /////////////////////////////////////////////////////////////////////
- /// Toggles whether the Pies are shown at the mouse or in the middle
- /// of the screen.
- /////////////////////////////////////////////////////////////////////
-
- private void open_at_mouse_toggled(Gtk.ToggleButton check_box) {
- var check = check_box as Gtk.CheckButton;
- Config.global.open_at_mouse = check.active;
- }
-}
-
-}