1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
import irc
import ui
import windows
import irc_script
from conf import conf
# FIXME: meh still might want rid of these, I'm not sure yet
def onActive(e):
e.window.activity = None
ui.register_idle(windows.manager.set_title)
def setupNick(e):
if e.source == e.network.me:
for w in windows.get_with(core.manager, network=e.network):
try:
w.nick_label.update(e.target)
except AttributeError:
pass
def onExit(e):
for n in set(w.network for w in windows.manager):
if n:
n.quit()
def setupJoin(e):
if e.source == e.network.me:
window = windows.new(windows.ChannelWindow, e.network, e.target, core)
if e.requested:
window.activate()
e.window = windows.get(windows.ChannelWindow, e.network, e.target, core) or e.window
def setupText(e):
if e.target == e.network.me:
e.window = windows.new(windows.QueryWindow, e.network, e.source, core)
else:
e.window = \
windows.get(windows.ChannelWindow, e.network, e.target, core) or \
windows.get(windows.QueryWindow, e.network, e.source, core) or \
e.window
setupAction = setupText
def setupNotice(e):
if e.target != e.network.me:
e.window = \
windows.get(windows.ChannelWindow, e.network, e.target, core) or e.window
def setupOwnText(e):
e.window = \
windows.get(windows.ChannelWindow, e.network, e.target, core) or \
windows.get(windows.QueryWindow, e.network, e.target, core) or \
e.window
setupOwnAction = setupOwnText
def setdownPart(e):
if e.source == e.network.me:
window = windows.get(windows.ChannelWindow, e.network, e.target, core)
if window:
cwindows = list(windows.get_with(
network=window.network,
wclass=windows.ChannelWindow
))
if len(cwindows) == 1 and not list(windows.get_with(network=window.network, wclass=windows.StatusWindow)):
window.mutate(windows.StatusWindow, e.network, 'status')
if e.requested:
window.activate()
elif e.requested:
window.close()
def onClose(e):
nwindows = list(windows.get_with(core.manager, network=e.window.network))
if isinstance(e.window, windows.ChannelWindow):
cwindows = list(windows.get_with(core.manager,
network=e.window.network,
wclass=windows.ChannelWindow
))
#if we only have one window for the network, don't bother to part as
# we'll soon be quitting anyway
if len(nwindows) != 1 and irc_script.ischan(e.window.network, e.window.id):
e.window.network.part(e.window.id)
if len(nwindows) == 1:
core.events.trigger("CloseNetwork", window=e.window, network=e.window.network)
elif isinstance(e.window, windows.StatusWindow) and conf.get('status'):
core.events.trigger("CloseNetwork", window=e.window, network=e.window.network)
for window in nwindows:
if window != e.window:
window.close()
if len(core.manager) == 1:
windows.new(windows.StatusWindow, irc.Network(), "status", core)
def onConnecting(e):
return
window = windows.get_default(e.network)
if window:
window.update()
onDisconnect = onConnecting
def setupPart(e):
e.window = windows.get(windows.ChannelWindow, e.network, e.target, core) or e.window
setupTopic = setupPart
def setupKick(e):
e.window = windows.get(windows.ChannelWindow, e.network, e.channel, core) or e.window
def setupMode(e):
if e.target != e.network.me:
e.window = windows.get(windows.ChannelWindow, e.network, e.target, core) or e.window
def onWindowMenu(e):
if isinstance(e.window, windows.ChannelWindow):
e.channel = e.window.id
e.network = e.window.network
core.events.trigger('ChannelMenu', e)
|