diff --git a/plugins/Scheduler/__init__.py b/plugins/Scheduler/__init__.py deleted file mode 100644 index b294c8e8f..000000000 --- a/plugins/Scheduler/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -# An example plugin for use with Deluge - -plugin_name = _("Scheduler") # The name of the plugin -plugin_author = "Lazka - updated by markybob" # The author's Name -plugin_version = "0.5.2" # The plugin's version number -plugin_description = _("Scheduler") # A description of the plugin - -def deluge_init(deluge_path): - global path - path = deluge_path - - -from Scheduler.plugin import plugin_Scheduler - -def enable(core, interface): - global path - return plugin_Scheduler(path, core, interface) diff --git a/plugins/Scheduler/plugin.py b/plugins/Scheduler/plugin.py deleted file mode 100644 index 6bf34cd26..000000000 --- a/plugins/Scheduler/plugin.py +++ /dev/null @@ -1,256 +0,0 @@ -import deluge.common, deluge.pref, gtk, copy, pickle, time - -class plugin_Scheduler: - def __init__(self, path, deluge_core, deluge_interface): - self.path = path - self.core = deluge_core - self.interface = deluge_interface - - self.days = [_("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun")] - self.conf_file = deluge.common.CONFIG_DIR + "/scheduler.conf" - self.config = deluge.pref.Preferences() - self.button_state_temp = [[0] * 7 for dummy in xrange(24)] - self.status = -1 - - self.toolbutton_image = gtk.Image() - filename = self.path + "/scheduler.png" - self.toolbutton_image.set_from_file(filename) - - self.toolbutton = gtk.ToolButton(self.toolbutton_image, _("Scheduler")) - self.toolbutton_tip = gtk.Tooltips() - self.toolbutton.set_tooltip(self.toolbutton_tip, _("Scheduler")) - self.toolbutton.connect("clicked", self.configure) - self.interface.toolbar.insert(self.toolbutton, -1) - self.toolbutton.show_all() - - #Load config - try: - reader = open(self.conf_file, "rb") - data = pickle.load(reader) - self.button_state = data[0] - self.dllimit = float(data[1][0]) - self.ullimit = float(data[1][1]) - reader.close() - except: - self.button_state = [[0] * 7 for dummy in xrange(24)] - self.dllimit = float(-1) - self.ullimit = float(-1) - - def unload(self): - self.interface.toolbar.remove(self.toolbutton) - self.resume() - self.unlimit() - - def update(self): - time_now = time.localtime(time.time()) - - if self.status is not self.button_state[time_now[3]][time_now[6]]: - self.status = self.button_state[time_now[3]][time_now[6]] - - if self.status == 0: - self.resume() - self.unlimit() - elif self.status == 1: - self.resume() - elif self.status == 2: - self.pause() - - if self.status == 1: - self.limit() - - def pause(self): - self.config.set("max_active_torrents", 0) - self.core.apply_queue() - - def resume(self): - self.config.set("max_active_torrents", -1) - self.core.apply_queue() - - def limit(self): - self.config.set("max_download_speed", float(self.dllimit)) - self.config.set("max_upload_speed", float(self.ullimit)) - - def unlimit(self): - self.interface.apply_prefs() - - #Configuration dialog - def configure(self, widget=None, data=None): - global scheduler_select - - self.button_state_temp = copy.deepcopy(self.button_state) - - #dialog - dialog = gtk.Dialog(_("Scheduler Settings")) - dialog.set_default_size(600, 270) - - #buttons - cancel_button = dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) - ok_button = dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK) - - #text - hover_text = gtk.Label() - - dllimit_label = gtk.Label(_("Limit download to:")) - ullimit_label = gtk.Label(_("Limit upload to:")) - - #Select Widget - drawing = scheduler_select(self.button_state_temp, hover_text, self.days) - - #boxes - vbox_main = gtk.VBox() - hbox_main = gtk.HBox() - vbox_sub = gtk.VBox() - hbox_limit = gtk.HBox() - - #seperator - sep = gtk.HSeparator() - - #spinbuttons - - dlinput = gtk.SpinButton() - dlinput.set_numeric(True) - dlinput.set_range(-1, 2048) - dlinput.set_increments(1, 10) - dlinput.set_value(float(self.dllimit)) - - ulinput = gtk.SpinButton() - ulinput.set_numeric(True) - ulinput.set_range(-1, 1024) - ulinput.set_increments(1, 10) - ulinput.set_value(float(self.ullimit)) - - #pack - dialog.vbox.pack_start(vbox_main) - - vbox_main.pack_start(hbox_main) - vbox_main.pack_start(hover_text, False, True, 5) - vbox_main.pack_start(sep, False, True) - vbox_main.pack_start(hbox_limit, False, True, 5) - - hbox_main.pack_start(vbox_sub, False, True, 5) - hbox_main.pack_start(drawing) - - hbox_limit.pack_start(dllimit_label, True, False) - hbox_limit.pack_start(dlinput, True, False) - hbox_limit.pack_start(ullimit_label, True, False) - hbox_limit.pack_start(ulinput, True, False) - - for index in xrange(len(self.days)): - vbox_sub.pack_start(gtk.Label(self.days[index])) - - #show - dialog.show_all() - - #Save config - if dialog.run() == -5: - self.status = -1 - self.button_state = copy.deepcopy(drawing.button_state) - self.dllimit = float(dlinput.get_value()) - self.ullimit = float(ulinput.get_value()) - self.interface.apply_prefs() - - writer = open(self.conf_file, "wb") - pickle.dump([drawing.button_state,[self.dllimit,self.ullimit]], writer) - writer.close() - - dialog.destroy() - -class scheduler_select(gtk.DrawingArea): - - #connect signals - varaibles - def __init__(self, data, label, days): - gtk.DrawingArea.__init__(self) - self.set_events(gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.LEAVE_NOTIFY_MASK) - - self.connect("expose_event", self.expose) - self.connect("button_press_event", self.mouse_down) - self.connect("button_release_event", self.mouse_up) - self.connect("motion_notify_event", self.mouse_hover) - self.connect("leave_notify_event", self.mouse_leave) - - self.colors = [[115.0/255, 210.0/255, 22.0/255], [237.0/255, 212.0/255, 0.0/255], [204.0/255, 0.0/255, 0.0/255]] - self.button_state = data - self.button_state_temp = [[0] * 7 for dummy in xrange(24)] - self.start_point = [0,0] - self.hover_point = [-1,-1] - self.hover_label = label - self.hover_days = days - self.mouse_press = False - - #redraw the whole thing - def expose(self, widget, event): - self.context = self.window.cairo_create() - self.context.rectangle(event.area.x, event.area.y, event.area.width, event.area.height) - self.context.clip() - - width = self.window.get_size()[0] - height = self.window.get_size()[1] - - for y in xrange(7): - for x in xrange(24): - self.context.set_source_rgba(self.colors[self.button_state[x][y]][0], self.colors[self.button_state[x][y]][1], self.colors[self.button_state[x][y]][2], 0.7) - self.context.rectangle(width*(6*x/145.0+1/145.0), height*(6*y/43.0+1/43.0), 5*width/145.0, 5*height/43.0) - self.context.fill_preserve() - self.context.set_source_rgba(0.5, 0.5, 0.5, 0.5) - self.context.stroke() - - #coordinates --> which box - def get_point(self, event): - size = self.window.get_size() - x = int((event.x-size[0]*0.5/145.0)/(6*size[0]/145.0)) - y = int((event.y-size[1]*0.5/43.0)/(6*size[1]/43.0)) - - if x > 23: x = 23 - elif x < 0: x = 0 - if y > 6: y = 6 - elif y < 0: y = 0 - - return [x,y] - - #mouse down - def mouse_down(self, widget, event): - self.mouse_press = True - self.start_point = self.get_point(event) - self.button_state_temp = copy.deepcopy(self.button_state) - - #if the same box -> change it - def mouse_up(self, widget, event): - self.mouse_press = False - end_point = self.get_point(event) - - #change color on mouseclick depending on the button - if end_point[0] is self.start_point[0] and end_point[1] is self.start_point[1]: - if event.button == 1: - self.button_state[end_point[0]][end_point[1]] += 1 - if self.button_state[end_point[0]][end_point[1]] > 2: - self.button_state[end_point[0]][end_point[1]] = 0 - elif event.button == 3: - self.button_state[end_point[0]][end_point[1]] -= 1 - if self.button_state[end_point[0]][end_point[1]] < 0: - self.button_state[end_point[0]][end_point[1]] = 2 - self.queue_draw() - - #if box changed and mouse is pressed draw all boxes from start point to end point - #set hover text etc.. - def mouse_hover(self, widget, event): - if self.get_point(event) != self.hover_point: - self.hover_point = self.get_point(event) - - self.hover_label.set_text(self.hover_days[self.hover_point[1]] + " " + str(self.hover_point[0]) + ":00 - " + str(self.hover_point[0]) + ":59") - - if self.mouse_press == True: - self.button_state = copy.deepcopy(self.button_state_temp) - - points = [[self.hover_point[0], self.start_point[0]], [self.hover_point[1], self.start_point[1]]] - - for x in xrange(min(points[0]), max(points[0])+1): - for y in xrange(min(points[1]), max(points[1])+1): - self.button_state[x][y] = self.button_state[self.start_point[0]][self.start_point[1]] - - self.queue_draw() - - #clear hover text on mouse leave - def mouse_leave(self, widget, event): - self.hover_label.set_text("") - self.hover_point = [-1,-1] - diff --git a/plugins/Scheduler/scheduler.png b/plugins/Scheduler/scheduler.png deleted file mode 100644 index d676ffd46..000000000 Binary files a/plugins/Scheduler/scheduler.png and /dev/null differ