Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/services/console/lib/purk/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'services/console/lib/purk/__init__.py')
-rw-r--r--services/console/lib/purk/__init__.py94
1 files changed, 94 insertions, 0 deletions
diff --git a/services/console/lib/purk/__init__.py b/services/console/lib/purk/__init__.py
new file mode 100644
index 0000000..35d93ad
--- /dev/null
+++ b/services/console/lib/purk/__init__.py
@@ -0,0 +1,94 @@
+import os
+import sys
+import traceback
+import events
+import windows
+
+urkpath = os.path.abspath(os.path.dirname(__file__))
+
+if os.path.abspath(os.curdir) != os.path.join(urkpath):
+ sys.path[0] = os.path.join(urkpath)
+
+sys.path = [
+ os.path.join(urkpath, "scripts"),
+ ] + sys.path
+
+script_path = urkpath+"/scripts"
+
+from ui import *
+
+# Here I'm trying to handle the original URL IRC Client, urk don't use
+# normal classes . Let's try to get a urk widget:
+class Trigger(object):
+ def __init__(self):
+ self._mods = []
+ self.events = events
+ self._load_scripts()
+
+ def _load_scripts(self):
+ script_path = urkpath + "/scripts"
+ try:
+ suffix = os.extsep+"py"
+ for script in os.listdir(script_path):
+ if script.endswith(suffix):
+ try:
+ mod = self.events.load(script)
+ self._mods.append(mod)
+ except:
+ traceback.print_exc()
+ print "Failed loading script %s." % script
+ except OSError:
+ pass
+
+ def get_modules(self):
+ return self._mods
+
+class Core(object):
+ def __init__(self):
+ self.window = None
+ self.trigger = Trigger()
+ self.events = self.trigger.events
+ self.manager = widgets.UrkUITabs(self)
+
+ mods = self.trigger.get_modules()
+ for m in mods:
+ m.core = self
+ m.manager = self.manager
+
+ if not self.window:
+ self.window = windows.new(windows.StatusWindow, irc.Network(self), "status", self)
+ self.window.activate()
+
+ register_idle(self.trigger_start)
+ gtk.gdk.threads_enter()
+
+ def run_command(self, command):
+ offset = 0
+ if command[0] == '/':
+ offset = 1
+
+ self.events.run(command[offset:], self.manager.get_active(), self.window.network)
+
+ def trigger_start(self):
+ self.events.trigger("Start")
+
+ def _add_script(self, module):
+ return
+
+class Client(object):
+ def __init__(self):
+ self.core = Core()
+ self.widget = self.core.manager.box
+ def run_command(self, command):
+ self.core.run_command(command)
+
+ def join_server(self, network_name, port=6667):
+ command = 'server '+ network_name + ' ' + str(port)
+ self.run_command(command)
+
+ def get_widget(self):
+ return self.widget
+
+ def show(self):
+ self.widget.show_all()
+