diff --git a/terminatorlib/terminatorterm.py b/terminatorlib/terminatorterm.py
index ac87ade6..2065468a 100755
--- a/terminatorlib/terminatorterm.py
+++ b/terminatorlib/terminatorterm.py
@@ -1244,35 +1244,125 @@ text/plain
return (widget_x, menu_y, 1)
def create_group (self, item):
+ self.groupingscope = 0
+ grplist=self.terminator.groupings[:]
+ grplist.sort()
+
win = gtk.Window ()
- vbox = gtk.VBox ()
- hbox = gtk.HBox ()
- entrybox = gtk.HBox ()
+ vbox = gtk.VBox (False, 6)
+ vbox.set_border_width(5)
win.add (vbox)
- label = gtk.Label (_("Group name:"))
- entry = gtk.Entry ()
+
+ # Populate the "Assign..." Section
+ contentvbox = gtk.VBox (False, 6)
+ selframe = gtk.Frame()
+ selframe_label = gtk.Label()
+ selframe_label.set_markup(_("Assign..."))
+ selframe.set_shadow_type(gtk.SHADOW_NONE)
+ selframe.set_label_widget(selframe_label)
+ selframe_align = gtk.Alignment(0, 0, 1, 1)
+ selframe_align.set_padding(0, 0, 12, 0)
+ selframevbox = gtk.VBox ()
+ selframehbox = gtk.HBox ()
+
+ # Populate the Combo with existing group names (None at the top)
+ sel_combo = gtk.combo_box_new_text()
+ sel_combo.append_text("*No Group*")
+ for grp in grplist:
+ sel_combo.append_text(grp)
+ sel_combo.set_sensitive(False)
+
+ # Here are the radio buttons
+ groupitem = None
+
+ groupitem = gtk.RadioButton (groupitem, _("Terminal"))
+ groupitem.set_active (True)
+ groupitem.connect ("toggled", self.set_groupingscope, 0, sel_combo)
+ selframehbox.pack_start (groupitem)
+
+ groupitem = gtk.RadioButton (groupitem, _("Group"))
+ groupitem.connect ("toggled", self.set_groupingscope, 1, sel_combo)
+ selframehbox.pack_start (groupitem)
+
+ groupitem = gtk.RadioButton (groupitem, _("All"))
+ groupitem.connect ("toggled", self.set_groupingscope, 2, sel_combo)
+ selframehbox.pack_start (groupitem)
+
+ selframevbox.pack_start(selframehbox, True, True)
+ selframevbox.pack_start(sel_combo, True, True)
+ selframe_align.add(selframevbox)
+ selframe.add(selframe_align)
+ contentvbox.pack_start(selframe)
+
+ # Populate the "To..." Section
+ tgtframe = gtk.Frame()
+ tgtframe_label = gtk.Label()
+ tgtframe_label.set_markup(_("To..."))
+ tgtframe.set_shadow_type(gtk.SHADOW_NONE)
+ tgtframe.set_label_widget(tgtframe_label)
+ tgtframe_align = gtk.Alignment(0, 0, 1, 1)
+ tgtframe_align.set_padding(0, 0, 12, 0)
+ tgtframevbox = gtk.VBox ()
+
+ # Populate the Combo with existing group names (None not needed)
+ tgt_comboentry = gtk.combo_box_entry_new_text()
+ for grp in grplist:
+ tgt_comboentry.append_text(grp)
+
+ tgtframevbox.pack_start(tgt_comboentry, True, True)
+
+ tgtframe_align.add(tgtframevbox)
+ tgtframe.add(tgtframe_align)
+ contentvbox.pack_start(tgtframe)
+
okbut = gtk.Button (stock=gtk.STOCK_OK)
canbut = gtk.Button (stock=gtk.STOCK_CANCEL)
-
- entrybox.pack_start (label, False, True)
- entrybox.pack_start (entry, True, True)
- hbox.pack_end (okbut, False, False)
- hbox.pack_end (canbut, False, False)
- vbox.pack_start (entrybox, False, True)
- vbox.pack_start (hbox, False, True)
-
+ hbuttonbox = gtk.HButtonBox()
+ hbuttonbox.set_layout(gtk.BUTTONBOX_END)
+ hbuttonbox.pack_start (canbut, True, True)
+ hbuttonbox.pack_start (okbut, True, True)
+
+ vbox.pack_start (contentvbox, False, True)
+ vbox.pack_end (hbuttonbox, False, True)
+
canbut.connect ("clicked", lambda kill: win.destroy())
- okbut.connect ("clicked", self.do_create_group, win, entry)
- entry.connect ("activate", self.do_create_group, win, entry)
-
+ okbut.connect ("clicked", self.do_create_group, win, sel_combo, tgt_comboentry)
+ tgt_comboentry.child.connect ("activate", self.do_create_group, win, sel_combo, tgt_comboentry)
+
+ tgt_comboentry.grab_focus()
win.show_all ()
- def do_create_group (self, widget, window, entry):
- name = entry.get_text ()
- if name not in self.terminator.groupings:
- self.terminator.groupings.append (name)
- self.set_group (None, name)
+ def set_groupingscope(self, widget, scope=None, sel_combo=None):
+ if widget.get_active():
+ self.groupingscope = scope
+ if self.groupingscope == 1:
+ sel_combo.set_sensitive(True)
+ else:
+ sel_combo.set_sensitive(False)
+ def do_create_group (self, widget, window, src, tgt):
+ tgt_name = tgt.child.get_text()
+ try:
+ src_name = src.get_active_text()
+ except:
+ src_name = None
+
+ if tgt_name == "" or (self.groupingscope == 1 and src_name == None):
+ return False
+
+ if tgt_name not in self.terminator.groupings:
+ self.terminator.groupings.append (tgt_name)
+
+ if self.groupingscope == 2:
+ for term in self.terminator.term_list:
+ term.set_group (None, tgt_name)
+ elif self.groupingscope == 1:
+ for term in self.terminator.term_list:
+ if term._group == src_name or (src_name == "*No Group*" and term._group == None):
+ term.set_group (None, tgt_name)
+ else:
+ self.set_group (None, tgt_name)
+
window.destroy ()
def set_group (self, item, data):