Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/services/console/lib/purk/scripts/clicks.py
diff options
context:
space:
mode:
Diffstat (limited to 'services/console/lib/purk/scripts/clicks.py')
-rw-r--r--services/console/lib/purk/scripts/clicks.py146
1 files changed, 0 insertions, 146 deletions
diff --git a/services/console/lib/purk/scripts/clicks.py b/services/console/lib/purk/scripts/clicks.py
deleted file mode 100644
index b2f3f82..0000000
--- a/services/console/lib/purk/scripts/clicks.py
+++ /dev/null
@@ -1,146 +0,0 @@
-import ui
-import windows
-import chaninfo
-from conf import conf
-
-def set_target(e):
- target_l = e.target.lstrip('@+%.(<')
- e._target_fr = e.target_fr + len(e.target) - len(target_l)
-
- target_r = e.target.rstrip('>:,')
- e._target_to = e.target_to - len(e.target) + len(target_r)
-
- if target_r.endswith(')'):
- e._target = e.text[e._target_fr:e._target_to]
- open_parens = e._target.count('(') - e._target.count(')')
- while open_parens < 0 and e.text[e._target_to-1] == ')':
- e._target_to -= 1
- open_parens += 1
-
- e._target = e.text[e._target_fr:e._target_to]
-
-def is_nick(e):
- return isinstance(e.window, windows.ChannelWindow) and \
- chaninfo.ison(e.window.network, e.window.id, e._target)
-
-def is_url(e):
- def starts(prefix, mindots=1):
- def prefix_url(target):
- return target.startswith(prefix) and target.count('.') >= mindots
-
- return prefix_url
-
- to_check = [starts(*x) for x in [
- ('http://', 1),
- ('https://', 1),
- ('ftp://', 1),
- ('www', 2),
- ]]
-
- for check_url in to_check:
- if check_url(e._target):
- return True
-
- return False
-
-def is_chan(e):
- # click on a #channel
- return e.window.network and e._target and \
- e._target[0] in e.window.network.isupport.get('CHANTYPES', '&#$+')
-
-def get_autojoin_list(network):
- perform = conf.get('networks',{}).get(network.name,{}).get('perform',())
- channels = set()
- for line in perform:
- if line.startswith('join ') and ' ' not in line[5:]:
- channels.update(line[5:].split(','))
- return channels
-
-def add_autojoin(network, channel):
- if 'networks' not in conf:
- conf['networks'] = {}
- if network.name not in conf['networks']:
- conf['networks'][network.name] = {'server': network.server}
- conf['start_networks'] = conf.get('start_networks',[]) + [network.name]
- if 'perform' in conf['networks'][network.name]:
- perform = conf['networks'][network.name]['perform']
- else:
- perform = conf['networks'][network.name]['perform'] = []
-
- for n, line in enumerate(perform):
- if line.startswith('join ') and ' ' not in line[5:]:
- perform[n] = "%s,%s" % (line, channel)
- break
- else:
- perform.append('join %s' % channel)
-
-def make_nick_menu(e, target):
- def query():
- core.events.run('query %s' % target, e.window, e.window.network)
-
- def whois():
- core.events.run('whois %s' % target, e.window, e.window.network)
-
- e.menu += [
- ('Query', query),
- ('Whois', whois),
- (),
- ]
-
-def onHover(e):
- set_target(e)
-
- for is_check in (is_nick, is_url, is_chan):
- if is_check(e):
- e.tolink.add((e._target_fr, e._target_to))
- break
-
-def onClick(e):
- set_target(e)
-
- if is_nick(e):
- core.events.run('query %s' % e._target, e.window, e.window.network)
-
- # url of the form http://xxx.xxx or www.xxx.xxx
- elif is_url(e):
- if e._target.startswith('www'):
- e._target = 'http://%s' % e._target
- ui.open_file(e._target)
-
- # click on a #channel
- elif is_chan(e):
- if not chaninfo.ischan(e.window.network, e._target):
- e.window.network.join(e._target)
- window = windows.get(windows.ChannelWindow, e.window.network, e._target)
- if window:
- window.activate()
-
-def onRightClick(e):
- set_target(e)
-
- # nick on this channel
- if is_nick(e):
- make_nick_menu(e, e._target)
-
- elif is_url(e):
- if e._target.startswith('www'):
- e._target = 'http://%s' % e._target
-
- def copy_to():
- # copy to clipboard
- ui.set_clipboard(e._target)
-
- e.menu += [('Copy', copy_to)]
-
- elif is_chan(e):
- e.channel = e._target
- e.network = e.window.network
- core.events.trigger('ChannelMenu', e)
-
-def onListRightClick(e):
- if isinstance(e.window, windows.ChannelWindow):
- make_nick_menu(e, e.nick)
-
-def onListDoubleClick(e):
- if isinstance(e.window, windows.ChannelWindow):
- core.events.run("query %s" % e.target, e.window, e.window.network)