diff options
Diffstat (limited to 'services/console/lib/purk/windows.py')
-rw-r--r-- | services/console/lib/purk/windows.py | 298 |
1 files changed, 0 insertions, 298 deletions
diff --git a/services/console/lib/purk/windows.py b/services/console/lib/purk/windows.py deleted file mode 100644 index 22c783a..0000000 --- a/services/console/lib/purk/windows.py +++ /dev/null @@ -1,298 +0,0 @@ -import gtk - -import irc -from conf import conf -import widgets - -#manager = widgets.UrkUITabs() - -def append(window, manager): - manager.add(window) - -def remove(window, manager): - manager.remove(window) - - # i don't want to have to call this - window.destroy() - -def new(wclass, network, id, core): - if network is None: - network = irc.dummy_network - - w = get(wclass, network, id, core) - if not w: - w = wclass(network, id, core) - append(w, core.manager) - - return w - -def get(windowclass, network, id, core): - if network: - id = network.norm_case(id) - - for w in core.manager: - if (type(w), w.network, w.id) == (windowclass, network, id): - return w - -def get_with(manager, wclass=None, network=None, id=None): - if network and id: - id = network.norm_case(id) - - for w in list(manager): - for to_find, found in ((wclass, type(w)), (network, w.network), (id, w.id)): - # to_find might be False but not None (if it's a DummyNetwork) - if to_find is not None and to_find != found: - break - else: - yield w - -def get_default(network, manager): - - window = manager.get_active() - if window.network == network: - return window - - # There can be only one... - for window in get_with(network=network): - return window - -class Window(gtk.VBox): - need_vbox_init = True - - def mutate(self, newclass, network, id): - isactive = self == manager.get_active() - self.hide() - - for child in self.get_children(): - self.remove(child) - - self.__class__ = newclass - self.__init__(network, id) - self.update() - if isactive: - self.activate() - - def transfer_text(self, _widget, event): - if event.string and not self.input.is_focus(): - self.input.grab_focus() - self.input.set_position(-1) - self.input.event(event) - - def write(self, text, activity_type=widgets.EVENT, line_ending='\n', fg=None): - if self.manager.get_active() != self: - self.activity = activity_type - self.output.write(text, line_ending, fg) - - def get_id(self): - if self.network: - return self.network.norm_case(self.rawid) - else: - return self.rawid - - def set_id(self, id): - self.rawid = id - self.update() - - id = property(get_id, set_id) - - def get_toplevel_title(self): - return self.rawid - - def get_title(self): - return self.rawid - - def get_activity(self): - return self.__activity - - def set_activity(self, value): - if value: - self.__activity.add(value) - else: - self.__activity = set() - self.update() - - activity = property(get_activity, set_activity) - - def focus(self): - pass - - def activate(self): - self.manager.set_active(self) - self.focus() - - def close(self): - self.events.trigger("Close", window=self) - remove(self, self.manager) - - def update(self): - self.manager.update(self) - - def __init__(self, network, id, core): - self.manager = core.manager - self.events = core.events - - if self.need_vbox_init: - #make sure we don't call this an extra time when mutating - gtk.VBox.__init__(self, False) - self.need_vbox_init = False - - if hasattr(self, "buffer"): - self.output = widgets.TextOutput(core, self, self.buffer) - else: - self.output = widgets.TextOutput(core, self) - self.buffer = self.output.get_buffer() - - if hasattr(self, "input"): - if self.input.parent: - self.input.parent.remove(self.input) - else: - self.input = widgets.TextInput(self, core) - - self.network = network - self.rawid = id - - self.__activity = set() - -class SimpleWindow(Window): - def __init__(self, network, id, core): - Window.__init__(self, network, id) - - self.focus = self.input.grab_focus - self.connect("key-press-event", self.transfer_text) - - self.pack_end(self.input, expand=False) - - topbox = gtk.ScrolledWindow() - topbox.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) - topbox.add(self.output) - - self.pack_end(topbox) - - self.show_all() - -class StatusWindow(Window): - def get_toplevel_title(self): - return '%s - %s' % (self.network.me, self.get_title()) - - def get_title(self): - # Something about self.network.isupport - if self.network.status: - return "%s" % self.network.server - else: - return "[%s]" % self.network.server - - def __init__(self, network, id, core): - Window.__init__(self, network, id, core) - - self.nick_label = widgets.NickEditor(self, core) - - self.focus = self.input.grab_focus - self.connect("key-press-event", self.transfer_text) - self.manager = core.manager - botbox = gtk.HBox() - botbox.pack_start(self.input) - botbox.pack_end(self.nick_label, expand=False) - - self.pack_end(botbox, expand=False) - - topbox = gtk.ScrolledWindow() - topbox.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) - topbox.add(self.output) - - self.pack_end(topbox) - - self.show_all() - -class QueryWindow(Window): - def __init__(self, network, id, core): - Window.__init__(self, network, id, core) - - self.nick_label = widgets.NickEditor(self, core) - - self.focus = self.input.grab_focus - self.connect("key-press-event", self.transfer_text) - - botbox = gtk.HBox() - botbox.pack_start(self.input) - botbox.pack_end(self.nick_label, expand=False) - - self.pack_end(botbox, expand=False) - - topbox = gtk.ScrolledWindow() - topbox.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) - topbox.add(self.output) - - self.pack_end(topbox) - - self.show_all() - -def move_nicklist(paned, event): - paned._moving = ( - event.type == gtk.gdk._2BUTTON_PRESS, - paned.get_position() - ) - -def drop_nicklist(paned, event): - width = paned.allocation.width - pos = paned.get_position() - - double_click, nicklist_pos = paned._moving - - if double_click: - # if we're "hidden", then we want to unhide - if width - pos <= 10: - # get the normal nicklist width - conf_nicklist = conf.get("ui-gtk/nicklist-width", 200) - - # if the normal nicklist width is "hidden", then ignore it - if conf_nicklist <= 10: - paned.set_position(width - 200) - else: - paned.set_position(width - conf_nicklist) - - # else we hide - else: - paned.set_position(width) - - else: - if pos != nicklist_pos: - conf["ui-gtk/nicklist-width"] = width - pos - 6 - -class ChannelWindow(Window): - def __init__(self, network, id, core): - Window.__init__(self, network, id, core) - - self.nicklist = widgets.Nicklist(self, core) - self.nick_label = widgets.NickEditor(self, core) - - self.focus = self.input.grab_focus - self.connect("key-press-event", self.transfer_text) - - topbox = gtk.ScrolledWindow() - topbox.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) - topbox.add(self.output) - - nlbox = gtk.ScrolledWindow() - nlbox.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) - nlbox.add(self.nicklist) - - nlbox.set_size_request(conf.get("ui-gtk/nicklist-width", 112), -1) - - botbox = gtk.HBox() - botbox.pack_start(self.input) - botbox.pack_end(self.nick_label, expand=False) - - self.pack_end(botbox, expand=False) - - pane = gtk.HPaned() - pane.pack1(topbox, resize=True, shrink=False) - pane.pack2(nlbox, resize=False, shrink=True) - - self.nicklist.pos = None - - pane.connect("button-press-event", move_nicklist) - pane.connect("button-release-event", drop_nicklist) - - self.pack_end(pane) - - self.show_all() |