Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

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

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

# -*- coding: utf-8 -*- 

# 

# Copyright (C) 2009 Andrew Resch <andrewresch@gmail.com> 

# 

# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with 

# the additional special exception to link portions of this program with the OpenSSL library. 

# See LICENSE for more details. 

# 

 

""" 

Event module. 

 

This module describes the types of events that can be generated by the daemon 

and subsequently emitted to the clients. 

 

""" 

 

known_events = {} 

 

 

class DelugeEventMetaClass(type): 

    """ 

    This metaclass simply keeps a list of all events classes created. 

    """ 

    def __init__(self, name, bases, dct): 

        super(DelugeEventMetaClass, self).__init__(name, bases, dct) 

        if name != "DelugeEvent": 

            known_events[name] = self 

 

 

class DelugeEvent(object): 

    """ 

    The base class for all events. 

 

    :prop name: this is the name of the class which is in-turn the event name 

    :type name: string 

    :prop args: a list of the attribute values 

    :type args: list 

 

    """ 

    __metaclass__ = DelugeEventMetaClass 

 

    def _get_name(self): 

        return self.__class__.__name__ 

 

    def _get_args(self): 

48        if not hasattr(self, "_args"): 

            return [] 

        return self._args 

 

    name = property(fget=_get_name) 

    args = property(fget=_get_args) 

 

 

class TorrentAddedEvent(DelugeEvent): 

    """ 

    Emitted when a new torrent is successfully added to the session. 

    """ 

    def __init__(self, torrent_id, from_state): 

        """ 

        :param torrent_id: the torrent_id of the torrent that was added 

        :type torrent_id: string 

        :param from_state: was the torrent loaded from state? Or is it a new torrent. 

        :type from_state: bool 

        """ 

        self._args = [torrent_id, from_state] 

 

 

class TorrentRemovedEvent(DelugeEvent): 

    """ 

    Emitted when a torrent has been removed from the session. 

    """ 

    def __init__(self, torrent_id): 

        """ 

        :param torrent_id: the torrent_id 

        :type torrent_id: string 

        """ 

        self._args = [torrent_id] 

 

 

class PreTorrentRemovedEvent(DelugeEvent): 

    """ 

    Emitted when a torrent is about to be removed from the session. 

    """ 

    def __init__(self, torrent_id): 

        """ 

        :param torrent_id: the torrent_id 

        :type torrent_id: string 

        """ 

        self._args = [torrent_id] 

 

 

class TorrentStateChangedEvent(DelugeEvent): 

    """ 

    Emitted when a torrent changes state. 

    """ 

    def __init__(self, torrent_id, state): 

        """ 

        :param torrent_id: the torrent_id 

        :type torrent_id: string 

        :param state: the new state 

        :type state: string 

        """ 

        self._args = [torrent_id, state] 

 

 

class TorrentQueueChangedEvent(DelugeEvent): 

    """ 

    Emitted when the queue order has changed. 

    """ 

    pass 

 

 

class TorrentFolderRenamedEvent(DelugeEvent): 

    """ 

    Emitted when a folder within a torrent has been renamed. 

    """ 

    def __init__(self, torrent_id, old, new): 

        """ 

        :param torrent_id: the torrent_id 

        :type torrent_id: string 

        :param old: the old folder name 

        :type old: string 

        :param new: the new folder name 

        :type new: string 

        """ 

        self._args = [torrent_id, old, new] 

 

 

class TorrentFileRenamedEvent(DelugeEvent): 

    """ 

    Emitted when a file within a torrent has been renamed. 

    """ 

    def __init__(self, torrent_id, index, name): 

        """ 

        :param torrent_id: the torrent_id 

        :type torrent_id: string 

        :param index: the index of the file 

        :type index: int 

        :param name: the new filename 

        :type name: string 

        """ 

        self._args = [torrent_id, index, name] 

 

 

class TorrentFinishedEvent(DelugeEvent): 

    """ 

    Emitted when a torrent finishes downloading. 

    """ 

    def __init__(self, torrent_id): 

        """ 

        :param torrent_id: the torrent_id 

        :type torrent_id: string 

        """ 

        self._args = [torrent_id] 

 

 

class TorrentResumedEvent(DelugeEvent): 

    """ 

    Emitted when a torrent resumes from a paused state. 

    """ 

    def __init__(self, torrent_id): 

        """ 

        :param torrent_id: the torrent_id 

        :type torrent_id: string 

        """ 

        self._args = [torrent_id] 

 

 

class TorrentFileCompletedEvent(DelugeEvent): 

    """ 

    Emitted when a file completes. 

    """ 

    def __init__(self, torrent_id, index): 

        """ 

        :param torrent_id: the torrent_id 

        :type torrent_id: string 

        :param index: the file index 

        :type index: int 

        """ 

        self._args = [torrent_id, index] 

 

 

class TorrentStorageMovedEvent(DelugeEvent): 

    """ 

    Emitted when the storage location for a torrent has been moved. 

    """ 

    def __init__(self, torrent_id, path): 

        """ 

        :param torrent_id: the torrent_id 

        :type torrent_id: string 

        :param path: the new location 

        :type path: string 

        """ 

        self._args = [torrent_id, path] 

 

 

class CreateTorrentProgressEvent(DelugeEvent): 

    """ 

    Emitted when creating a torrent file remotely. 

    """ 

    def __init__(self, piece_count, num_pieces): 

        self._args = [piece_count, num_pieces] 

 

 

class NewVersionAvailableEvent(DelugeEvent): 

    """ 

    Emitted when a more recent version of Deluge is available. 

    """ 

    def __init__(self, new_release): 

        """ 

        :param new_release: the new version that is available 

        :type new_release: string 

        """ 

        self._args = [new_release] 

 

 

class SessionStartedEvent(DelugeEvent): 

    """ 

    Emitted when a session has started.  This typically only happens once when 

    the daemon is initially started. 

    """ 

    pass 

 

 

class SessionPausedEvent(DelugeEvent): 

    """ 

    Emitted when the session has been paused. 

    """ 

    pass 

 

 

class SessionResumedEvent(DelugeEvent): 

    """ 

    Emitted when the session has been resumed. 

    """ 

    pass 

 

 

class ConfigValueChangedEvent(DelugeEvent): 

    """ 

    Emitted when a config value changes in the Core. 

    """ 

    def __init__(self, key, value): 

        """ 

        :param key: the key that changed 

        :type key: string 

        :param value: the new value of the `:param:key` 

        """ 

        self._args = [key, value] 

 

 

class PluginEnabledEvent(DelugeEvent): 

    """ 

    Emitted when a plugin is enabled in the Core. 

    """ 

    def __init__(self, plugin_name): 

        self._args = [plugin_name] 

 

 

class PluginDisabledEvent(DelugeEvent): 

    """ 

    Emitted when a plugin is disabled in the Core. 

    """ 

    def __init__(self, plugin_name): 

        self._args = [plugin_name]