Make Ctrl+Click on group button automatically create groups

This commit is contained in:
nicbn 2022-12-06 18:08:01 -03:00
parent 1aa437d6e3
commit c84821e36a
3 changed files with 25 additions and 16 deletions

View File

@ -879,7 +879,13 @@ class Terminal(Gtk.VBox):
focused=self.get_toplevel().get_focussed_terminal() focused=self.get_toplevel().get_focussed_terminal()
if focused in targets: targets.remove(focused) if focused in targets: targets.remove(focused)
if self != focused: if self != focused:
if self.group == focused.group: if focused.group is None and self.group is None:
# Create a new group and assign currently focused
# terminal to this group
new_group = self.terminator.new_random_group()
focused.set_group(None, new_group)
focused.titlebar.update()
elif self.group == focused.group:
new_group = None new_group = None
else: else:
new_group = focused.group new_group = focused.group

View File

@ -8,6 +8,8 @@ import gi
gi.require_version('Vte', '2.91') gi.require_version('Vte', '2.91')
from gi.repository import Gtk, Gdk, Vte from gi.repository import Gtk, Gdk, Vte
from gi.repository.GLib import GError from gi.repository.GLib import GError
import itertools
import random
from . import borg from . import borg
from .borg import Borg from .borg import Borg
@ -16,6 +18,7 @@ from .keybindings import Keybindings
from .util import dbg, err, enumerate_descendants from .util import dbg, err, enumerate_descendants
from .factory import Factory from .factory import Factory
from .version import APP_NAME, APP_VERSION from .version import APP_NAME, APP_VERSION
from .translation import _
try: try:
from gi.repository import GdkX11 from gi.repository import GdkX11
@ -638,4 +641,18 @@ class Terminator(Borg):
def zoom_orig_all(self): def zoom_orig_all(self):
for term in self.terminals: for term in self.terminals:
term.zoom_orig() term.zoom_orig()
def new_random_group(self):
defaultmembers=[_('Alpha'),_('Beta'),_('Gamma'),_('Delta'),_('Epsilon'),_('Zeta'),_('Eta'),
_('Theta'),_('Iota'),_('Kappa'),_('Lambda'),_('Mu'),_('Nu'),_('Xi'),
_('Omicron'),_('Pi'),_('Rho'),_('Sigma'),_('Tau'),_('Upsilon'),_('Phi'),
_('Chi'),_('Psi'),_('Omega')]
currentgroups=set(self.groups)
for i in range(1,4):
defaultgroups=set(map(''.join, list(itertools.product(defaultmembers,repeat=i))))
freegroups = list(defaultgroups-currentgroups)
if freegroups:
return random.choice(freegroups)
return ''
# vim: set expandtab ts=4 sw=4: # vim: set expandtab ts=4 sw=4:

View File

@ -5,8 +5,6 @@
from gi.repository import Gtk, Gdk from gi.repository import Gtk, Gdk
from gi.repository import GObject from gi.repository import GObject
from gi.repository import Pango from gi.repository import Pango
import random
import itertools
from .version import APP_NAME from .version import APP_NAME
from .util import dbg from .util import dbg
@ -255,19 +253,7 @@ class Titlebar(Gtk.EventBox):
if self.terminal.group: if self.terminal.group:
self.groupentry.set_text(self.terminal.group) self.groupentry.set_text(self.terminal.group)
else: else:
defaultmembers=[_('Alpha'),_('Beta'),_('Gamma'),_('Delta'),_('Epsilon'),_('Zeta'),_('Eta'), self.groupentry.set_text(self.terminator.new_random_group())
_('Theta'),_('Iota'),_('Kappa'),_('Lambda'),_('Mu'),_('Nu'),_('Xi'),
_('Omicron'),_('Pi'),_('Rho'),_('Sigma'),_('Tau'),_('Upsilon'),_('Phi'),
_('Chi'),_('Psi'),_('Omega')]
currentgroups=set(self.terminator.groups)
for i in range(1,4):
defaultgroups=set(map(''.join, list(itertools.product(defaultmembers,repeat=i))))
freegroups = list(defaultgroups-currentgroups)
if freegroups:
self.groupentry.set_text(random.choice(freegroups))
break
else:
self.groupentry.set_text('')
self.groupentry.show() self.groupentry.show()
self.grouplabel.hide() self.grouplabel.hide()
self.groupentry.grab_focus() self.groupentry.grab_focus()