summaryrefslogtreecommitdiff
path: root/src/pies/pie.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/pies/pie.vala')
-rw-r--r--src/pies/pie.vala38
1 files changed, 32 insertions, 6 deletions
diff --git a/src/pies/pie.vala b/src/pies/pie.vala
index 0f87d8f..fa205c7 100644
--- a/src/pies/pie.vala
+++ b/src/pies/pie.vala
@@ -29,14 +29,14 @@ public class Pie : GLib.Object {
/// The name of this Pie. It has not to be unique.
/////////////////////////////////////////////////////////////////////
- public string name { get; construct; }
+ public string name { get; set; }
/////////////////////////////////////////////////////////////////////
/// The name of the icon to be used for this Pie. It should exist in
/// the users current icon theme, else a standard icon will be used.
/////////////////////////////////////////////////////////////////////
- public string icon { get; construct; }
+ public string icon { get; set; }
/////////////////////////////////////////////////////////////////////
/// The ID of this Pie. It has to be unique among all Pies. This ID
@@ -77,18 +77,44 @@ public class Pie : GLib.Object {
/// Adds an Action to this Pie.
/////////////////////////////////////////////////////////////////////
- public void add_action(Action action) {
+ public void add_action(Action action, int at_position = -1) {
var group = new ActionGroup(this.id);
group.add_action(action);
- this.add_group(group);
+ this.add_group(group, at_position);
}
/////////////////////////////////////////////////////////////////////
/// Adds an ActionGroup to this Pie.
/////////////////////////////////////////////////////////////////////
- public void add_group(ActionGroup group) {
- this.action_groups.add(group);
+ public void add_group(ActionGroup group, int at_position = -1) {
+ if (group.has_quickaction()) {
+ foreach (var action_group in action_groups)
+ action_group.disable_quickactions();
+ }
+
+ if (at_position < 0 || at_position >= this.action_groups.size)
+ this.action_groups.add(group);
+ else
+ this.action_groups.insert(at_position, group);
+ }
+
+ public void remove_group(int index) {
+ if (this.action_groups.size > index)
+ this.action_groups.remove_at(index);
+ }
+
+ public void move_group(int from, int to) {
+ if (this.action_groups.size > from && this.action_groups.size > to) {
+ var tmp = this.action_groups[from];
+ this.remove_group(from);
+ this.add_group(tmp, to);
+ }
+ }
+
+ public void update_group(ActionGroup group, int index) {
+ if (this.action_groups.size > index)
+ this.action_groups.set(index, group);
}
}