diff options
author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2015-01-24 11:03:07 +0100 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2015-01-24 11:03:07 +0100 |
commit | 4b7a48bda37da6ac1c08822c7c888be6bf7cb751 (patch) | |
tree | 919bbd1c7eeca956a4cb20c8e3b88c9a2e27f821 /src/gui/newSliceWindow.vala | |
parent | 751a72bc2d2f54e27206a32cd4b7b17e9837228e (diff) | |
parent | b683ce2789d95b2e9f221e75adc30efd91cfb901 (diff) |
Merge tag 'upstream/0.5.7'
Upstream version 0.5.7
Diffstat (limited to 'src/gui/newSliceWindow.vala')
-rw-r--r-- | src/gui/newSliceWindow.vala | 178 |
1 files changed, 89 insertions, 89 deletions
diff --git a/src/gui/newSliceWindow.vala b/src/gui/newSliceWindow.vala index ade6432..92c7701 100644 --- a/src/gui/newSliceWindow.vala +++ b/src/gui/newSliceWindow.vala @@ -1,4 +1,4 @@ -/* +/* Copyright (c) 2011 by Simon Schneegans This program is free software: you can redistribute it and/or modify it @@ -12,12 +12,12 @@ 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/>. +this program. If not, see <http://www.gnu.org/licenses/>. */ namespace GnomePie { -///////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////// /// A window which allows selection of a new Slice which is about to be /// added to a Pie. It can be also used to edit an existing Slice ///////////////////////////////////////////////////////////////////////// @@ -28,7 +28,7 @@ public class NewSliceWindow : GLib.Object { /// This signal gets emitted when the user confirms his selection. ///////////////////////////////////////////////////////////////////// - public signal void on_select(ActionGroup action, bool as_new_slice, int at_position); + public signal void on_select(ActionGroup action, bool as_new_slice, int at_position); ///////////////////////////////////////////////////////////////////// /// The contained list of slice types. It contains both: Groups and @@ -36,78 +36,78 @@ public class NewSliceWindow : GLib.Object { ///////////////////////////////////////////////////////////////////// private SliceTypeList slice_type_list = null; - + ///////////////////////////////////////////////////////////////////// /// The IconSelectWindow used for icon selection for a Slice. ///////////////////////////////////////////////////////////////////// - + private IconSelectWindow? icon_window = null; - + ///////////////////////////////////////////////////////////////////// /// Some widgets of this window. Loaded by a ui-builder and stored /// for later access. ///////////////////////////////////////////////////////////////////// - + private Gtk.Dialog window = null; - private Gtk.HBox name_box = null; - private Gtk.HBox command_box = null; + private Gtk.Box name_box = null; + private Gtk.Box command_box = null; private Gtk.Button icon_button = null; - private Gtk.VBox no_options_box = null; - private Gtk.HBox pie_box = null; - private Gtk.HBox hotkey_box = null; - private Gtk.HBox uri_box = null; - private Gtk.HBox quickaction_box = null; + private Gtk.Box no_options_box = null; + private Gtk.Box pie_box = null; + private Gtk.Box hotkey_box = null; + private Gtk.Box uri_box = null; + private Gtk.Box quickaction_box = null; private Gtk.Image icon = null; private Gtk.Entry name_entry = null; private Gtk.Entry command_entry = null; private Gtk.Entry uri_entry = null; private Gtk.CheckButton quickaction_checkbutton = null; - + ///////////////////////////////////////////////////////////////////// /// Two custom widgets. For Pie and hotkey selection respectively. ///////////////////////////////////////////////////////////////////// - + private PieComboList pie_select = null; private TriggerSelectButton key_select = null; - + ///////////////////////////////////////////////////////////////////// /// These members store information on the currently selected Slice. ///////////////////////////////////////////////////////////////////// - + private string current_type = ""; private string current_icon = ""; private string current_id = ""; private string current_custom_icon = ""; private string current_hotkey = ""; private string current_pie_to_open = ""; - + ///////////////////////////////////////////////////////////////////// /// The position of the edited Slice in its parent Pie. ///////////////////////////////////////////////////////////////////// - + private int slice_position = 0; - + ///////////////////////////////////////////////////////////////////// /// True, if the Slice i going to be added as a new Slice. Else it /// will edit the Slice at slice_position in its parent Pie. ///////////////////////////////////////////////////////////////////// - + private bool add_as_new_slice = true; - + ///////////////////////////////////////////////////////////////////// /// C'tor creates a new window. ///////////////////////////////////////////////////////////////////// - + public NewSliceWindow() { try { - + Gtk.Builder builder = new Gtk.Builder(); builder.add_from_file (Paths.ui_files + "/slice_select.ui"); - + this.slice_type_list = new SliceTypeList(); this.slice_type_list.on_select.connect((type, icon) => { - + this.name_box.hide(); this.command_box.hide(); this.icon_button.sensitive = false; @@ -116,9 +116,9 @@ public class NewSliceWindow : GLib.Object { this.hotkey_box.hide(); this.uri_box.hide(); this.quickaction_box.hide(); - + this.current_type = type; - + switch (type) { case "bookmarks": case "clipboard": case "devices": case "menu": case "session": case "window_list": @@ -156,101 +156,101 @@ public class NewSliceWindow : GLib.Object { break; } }); - - this.name_box = builder.get_object("name-box") as Gtk.HBox; - this.command_box = builder.get_object("command-box") as Gtk.HBox; + + this.name_box = builder.get_object("name-box") as Gtk.Box; + this.command_box = builder.get_object("command-box") as Gtk.Box; this.icon_button = builder.get_object("icon-button") as Gtk.Button; - this.no_options_box = builder.get_object("no-options-box") as Gtk.VBox; - this.pie_box = builder.get_object("pie-box") as Gtk.HBox; + this.no_options_box = builder.get_object("no-options-box") as Gtk.Box; + this.pie_box = builder.get_object("pie-box") as Gtk.Box; this.pie_select = new PieComboList(); this.pie_select.on_select.connect((id) => { this.current_pie_to_open = id; this.set_icon(PieManager.all_pies[id].icon); }); - + this.pie_box.pack_start(this.pie_select, true, true); - - this.hotkey_box = builder.get_object("hotkey-box") as Gtk.HBox; + + this.hotkey_box = builder.get_object("hotkey-box") as Gtk.Box; this.key_select = new TriggerSelectButton(false); this.hotkey_box.pack_start(this.key_select, false, true); this.key_select.on_select.connect((trigger) => { this.current_hotkey = trigger.name; }); - - this.uri_box = builder.get_object("uri-box") as Gtk.HBox; - + + this.uri_box = builder.get_object("uri-box") as Gtk.Box; + this.name_entry = builder.get_object("name-entry") as Gtk.Entry; this.uri_entry = builder.get_object("uri-entry") as Gtk.Entry; this.command_entry = builder.get_object("command-entry") as Gtk.Entry; this.quickaction_checkbutton = builder.get_object("quick-action-checkbutton") as Gtk.CheckButton; - - this.quickaction_box = builder.get_object("quickaction-box") as Gtk.HBox; - this.icon = builder.get_object("icon") as Gtk.Image; - + + this.quickaction_box = builder.get_object("quickaction-box") as Gtk.Box; + this.icon = builder.get_object("icon") as Gtk.Image; + this.icon_button.clicked.connect(on_icon_button_clicked); - + var scroll_area = builder.get_object("slice-scrolledwindow") as Gtk.ScrolledWindow; scroll_area.add(this.slice_type_list); this.window = builder.get_object("window") as Gtk.Dialog; - + (builder.get_object("ok-button") as Gtk.Button).clicked.connect(on_ok_button_clicked); (builder.get_object("cancel-button") as Gtk.Button).clicked.connect(on_cancel_button_clicked); - + this.window.delete_event.connect(this.window.hide_on_delete); - + } catch (GLib.Error e) { error("Could not load UI: %s\n", e.message); } } - + ///////////////////////////////////////////////////////////////////// /// Sets the parent window, in order to make this window stay in /// front. ///////////////////////////////////////////////////////////////////// - + public void set_parent(Gtk.Window parent) { this.window.set_transient_for(parent); } - + ///////////////////////////////////////////////////////////////////// /// Sows the window on the screen. ///////////////////////////////////////////////////////////////////// - + public void show() { this.slice_type_list.select_first(); this.pie_select.select_first(); this.key_select.set_trigger(new Trigger()); this.window.show_all(); } - + ///////////////////////////////////////////////////////////////////// /// Reloads the window. ///////////////////////////////////////////////////////////////////// - + public void reload() { this.pie_select.reload(); } - + ///////////////////////////////////////////////////////////////////// /// Makes all widgets display stuff according to the given action. ///////////////////////////////////////////////////////////////////// - + public void set_action(ActionGroup group, int position) { this.set_default(group.parent_id, position); - + this.add_as_new_slice = false; string type = ""; - + if (group.get_type().depth() == 2) { var action = group.actions[0]; type = ActionRegistry.descriptions[action.get_type().name()].id; this.select_type(type); - + this.set_icon(action.icon); this.quickaction_checkbutton.active = action.is_quickaction; this.name_entry.text = action.name; - + switch (type) { case "app": this.current_custom_icon = action.icon; @@ -269,17 +269,17 @@ public class NewSliceWindow : GLib.Object { this.uri_entry.text = action.real_command; break; } - + } else { type = GroupRegistry.descriptions[group.get_type().name()].id; this.select_type(type); } } - + ///////////////////////////////////////////////////////////////////// /// Selects a default action. ///////////////////////////////////////////////////////////////////// - + public void set_default(string pie_id, int position) { this.slice_position = position; this.add_as_new_slice = true; @@ -292,25 +292,25 @@ public class NewSliceWindow : GLib.Object { this.command_entry.text = ""; this.uri_entry.text = ""; } - + ///////////////////////////////////////////////////////////////////// /// Selects a specific action type. ///////////////////////////////////////////////////////////////////// - + private void select_type(string type) { this.current_type = type; this.slice_type_list.select(type); } - + ///////////////////////////////////////////////////////////////////// /// Called, when the user presses the ok button. ///////////////////////////////////////////////////////////////////// - + private void on_ok_button_clicked() { this.window.hide(); - + ActionGroup group = null; - + switch (this.current_type) { case "bookmarks": group = new BookmarkGroup(this.current_id); break; case "clipboard": group = new ClipboardGroup(this.current_id); break; @@ -321,44 +321,44 @@ public class NewSliceWindow : GLib.Object { case "app": group = new ActionGroup(this.current_id); - group.add_action(new AppAction(this.name_entry.text, this.current_icon, - this.command_entry.text, + group.add_action(new AppAction(this.name_entry.text, this.current_icon, + this.command_entry.text, this.quickaction_checkbutton.active)); break; case "key": group = new ActionGroup(this.current_id); - group.add_action(new KeyAction(this.name_entry.text, this.current_icon, - this.current_hotkey, + group.add_action(new KeyAction(this.name_entry.text, this.current_icon, + this.current_hotkey, this.quickaction_checkbutton.active)); break; case "pie": group = new ActionGroup(this.current_id); - group.add_action(new PieAction(this.current_pie_to_open, + group.add_action(new PieAction(this.current_pie_to_open, this.quickaction_checkbutton.active)); break; case "uri": group = new ActionGroup(this.current_id); - group.add_action(new UriAction(this.name_entry.text, this.current_icon, - this.uri_entry.text, + group.add_action(new UriAction(this.name_entry.text, this.current_icon, + this.uri_entry.text, this.quickaction_checkbutton.active)); break; } - + this.on_select(group, this.add_as_new_slice, this.slice_position); } - + ///////////////////////////////////////////////////////////////////// /// Called when the user presses the cancel button. ///////////////////////////////////////////////////////////////////// - + private void on_cancel_button_clicked() { this.window.hide(); - } - + } + ///////////////////////////////////////////////////////////////////// /// Called when the user presses the icon select button. ///////////////////////////////////////////////////////////////////// - + private void on_icon_button_clicked(Gtk.Button button) { if (this.icon_window == null) { this.icon_window = new IconSelectWindow(this.window); @@ -367,30 +367,30 @@ public class NewSliceWindow : GLib.Object { this.set_icon(icon); }); } - + this.icon_window.show(); this.icon_window.set_icon(this.current_icon); } - + ///////////////////////////////////////////////////////////////////// /// Helper method which sets the icon of the icon select button. /// It assures that both can be displayed: A customly chosen image /// from or an icon from the current theme. ///////////////////////////////////////////////////////////////////// - + private void set_icon(string icon) { if (icon.contains("/")) try { - this.icon.pixbuf = new Gdk.Pixbuf.from_file_at_scale(icon, this.icon.get_pixel_size(), + this.icon.pixbuf = new Gdk.Pixbuf.from_file_at_scale(icon, this.icon.get_pixel_size(), this.icon.get_pixel_size(), true); } catch (GLib.Error error) { warning(error.message); } else this.icon.icon_name = icon; - + this.current_icon = icon; - } + } } } |