def on_remove_task_button_clicked(self,*arg): def is_current_selection_null(): if not self.current_selection or not self.current_selection[1] : dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "Attention.......") dialog.format_secondary_text("NO File is selected.!") dialog.run() dialog.destroy() return True else: return False def after_delete_task(data,error): self.info_label.set_text("Deletion is done") self.init_view(self.bdstoken) self.spinn.destroy() if is_current_selection_null(): return store,treepaths = self.current_selection for tpath in treepaths: task = () for i in store[tpath]: task = task + (i,) task_id = task[5] self.spinn = SpinnerDialog(self) self.spinn.show() self.info_label.set_text("Deleting task %s "%task[1]) utils.async_call(cloudapi.delete_task, self.bdstoken,task_id , callback=after_delete_task)
def on_start_task_button_clicked(self, *arg): if self.is_current_selection_null(): return self.spinn = SpinnerDialog(self) self.spinn.show() store, treepaths = self.current_selection self.q = queue.LifoQueue() for tpath in treepaths: print(store[tpath][2], store[tpath][4]) row = store[tpath] num = row[0] filename = row[2] path = row[4] isdir = row[5] fsid = row[6] spath = row[8] if not self.in_list(row, self.downlink): print(filename, fsid) npath = os.path.join(path, filename) utils.async_call(cloudapi.get_dlink, self.tokens, fsid, npath, num, callback=self.get_down_link) self.downlink.append((filename, None, spath, fsid)) print('0000sync888', self.downlink)
def __init__(self, parent, url): Gtk.Dialog.__init__( self, "Verification Code", parent, 0, ) self.file_list = [] #self.downlink = [] #self.tokens = tokens self.url = url #self.bdstoken,sign1,sign3,timestamp = self.tokens self.vcodefile = "image/vcode.jpeg" self.set_default_size(300, 200) self.set_border_width(10) label = Gtk.Label("Please input verification code above to proceed.") self.spinn = SpinnerDialog(self) self.spinn.show() self.vcodeimg = Gtk.Image.new() self.box = self.get_content_area() self.entry = Gtk.Entry() self.entry.connect("activate", self.on_enter_entry) self.entry.set_can_focus(True) self.entry.grab_focus() self.liststore = Gtk.ListStore(GdkPixbuf.Pixbuf) pix = GdkPixbuf.Pixbuf.new_from_file("image/loading.gif") self.liststore.append([pix]) iconview = Gtk.IconView.new() iconview.set_model(self.liststore) iconview.set_pixbuf_column(0) #self.liststore.append([pix]) self.show_vcode("image/loading.gif", None) #"image/loading.gif", self.box.add(iconview) #pix = GdkPixbuf.Pixbuf.new_from_file("image/loading.gif") #Gtk.Image.new_from_pixbuf(pix) button = Gtk.Button("Refresh Code") button.connect("clicked", self.on_click_refresh_clicked) self.on_click_refresh_clicked(button) #self.entry.set_text("Input vcode above") self.okbtn = self.add_button("OK", 22) self.okbtn.connect("clicked", self.on_click_OK_clicked) self.box.set_child_packing(button, False, False, 1, Gtk.PackType.START) self.box.set_spacing(8) self.box.add(label) self.box.add(self.entry) self.box.add(button) #self.box.add(okbtn) self.box.show_all()
def on_click_login(self, button): self.username = self.uentry.get_text() self.password = self.pentry.get_text() if not self.username or not self.password: self.info_label.set_text("Username or Password is blank.") return self.info_label.set_text("Going to index") logger.info("Username|Password %s %s" % (self.username, self.password)) self.spinn = SpinnerDialog(self) self.spinn.show() utils.async_call(auth.index, callback=self.after_goto_index) #bdstoken,sign1,sign3,timestamp = auth.index() print("click")
def init_view(self, path): self.current_selection = None self.current_path = path logger.debug("Current Path: %s" % self.current_path) #list_json = cloudapi.list_path(self.current_path,500, # settings.DRY,self.bdstoken) utils.async_call(cloudapi.list_path, self.current_path, 500, settings.DRY, self.bdstoken, callback=self.populate_view) #logger.debug("Size of list json: %s"%str(len(list_json))) #file_list = cloudapi.get_list(list_json) #logger.debug("Size of file_list: %s"%str(len(file_list))) #self.liststore.clear() #self.fill_liststore(file_list) #self.loading_spin.start() #self.loading_spin.show_all() self.spinn = SpinnerDialog(self) self.spinn.show() file_list = [] pix_list = self.get_pix_list(file_list) self.fill_liststore(pix_list)
def __init__(self,parent,tokens,save_path): Gtk.Dialog.__init__(self, "Download Task", parent, 0) self.file_list = [] #self.downlink = [] self.tokens = tokens self.bdstoken,sign1,sign3,timestamp = self.tokens #self.file_list = nlist #self.remove_list = file_list self.current_selection = None self.save_path = save_path #self.draw_widget(file_list) #def draw_widget(self,file_list): self.set_default_size(800, 500) self.set_border_width(10) box = self.get_content_area() ## num,filename,size,status,path, # 0 1 2 3 4 self.liststore = Gtk.ListStore(int,str, str, str,str,str) #self.liststore.connect("row-changed",self.row_changed) self.spinn = SpinnerDialog(self) self.spinn.show() self.init_view(self.bdstoken) #creating the treeview, making it use the filter as a model, and adding the columns self.treeview = Gtk.TreeView(model=self.liststore) for i, column_title in enumerate(["Num","File", "Size","Status", "Path"]): renderer = Gtk.CellRendererText() column = Gtk.TreeViewColumn(column_title, renderer,text=i) self.treeview.append_column(column) self.treeview.props.activate_on_single_click = False self.treeview.connect("row-activated",self.on_row_double_click) self.selection = self.treeview.get_selection() self.selection.connect("changed", self.on_tree_selection_changed) self.selection.set_mode(Gtk.SelectionMode.MULTIPLE) self.buttons = list() for act in ["Add Magnet or Ed2k Link File","Select All","Unselect All", "Remove Task"]: button = Gtk.Button(act) self.buttons.append(button) funcname = "on_%s_button_clicked"%act.lower().replace(" ","_") func = getattr(self, funcname) button.connect("clicked", func) self.scrollable_treelist = Gtk.ScrolledWindow() self.scrollable_treelist.set_vexpand(True) box.pack_start(self.scrollable_treelist, True, True, 0) for i, button in enumerate(self.buttons): #box.pack_start(self.buttons[i], False,False, 0) self.add_action_widget(self.buttons[i],i+1) self.scrollable_treelist.add(self.treeview) self.infobar = Gtk.InfoBar() self.infobar.set_message_type(Gtk.MessageType.ERROR) #box.pack_end(self.infobar, False, False, 0) #grid.attach_next_to(self.infobar,lbutton,Gtk.PositionType.BOTTOM,13,1) box.add(self.infobar) info_content = self.infobar.get_content_area() self.info_label = Gtk.Label.new("Add magnet/ed2k file to add offline download task") info_content.pack_start(self.info_label, False, False, 0) self.infobar.hide() box.show_all()
def on_add_magnet_or_ed2k_link_file_button_clicked(self,*arg): dialog = Gtk.FileChooserDialog("Please choose a file", self, Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.OK)) response = dialog.run() if response == Gtk.ResponseType.OK: #linkfile = dialog.get_file().read() filename = dialog.get_filename() print("Open clicked") print("File selected: " + dialog.get_filename()) elif response == Gtk.ResponseType.CANCEL: return dialog.destroy() link_list = open(filename).read() task_list = [] invalid_list = [] for line in link_list.split("\n"): line = line.strip() if line and ( line.startswith("magnet:?xt=urn") or \ line.startswith("ed2k://") ): task_list.append(line) elif line: invalid_list.append(line) if invalid_list: dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.OK, "Attention") dialog.format_secondary_text( "Only magnet or ed2k protocal is support! Invalid lines :%s"%str(invalid_list)) response = dialog.run() dialog.destroy() return print(self.save_path) maglist = [ i['source_url'] for i in self.task_list if "magnet:?xt=urn:" in i['source_url'] ] logger.debug("maglist: %s "%str(maglist)) for i,l in enumerate(task_list): mag = re.search('(&.*$)',l).group(1) task_name = dict(urllib.parse.parse_qsl(mag))['dn'] txt = "%s out of %s | %s is running."%(str(i),len(task_list),str(task_name)) logger.info(txt) self.info_label.set_text(txt) maglink = re.search("(magnet[^&]*)",l).group(1) logger.debug("maglink: %s "%maglink) self.spinn = SpinnerDialog(self) self.spinn.show() if maglink not in maglist: self.info_label.set_text("Adding task: %s "%task_name) taskjson = cloudapi.add_task(self.bdstoken, l,self.save_path,self) self.init_view(self.bdstoken) self.spinn.destroy() #taskjson = cloudapi.add_task(l,self.save_path) logger.debug("taskjson: %s "%taskjson) if 'task_id' in taskjson.keys(): self.spinn = SpinnerDialog(self) self.spinn.show() self.info_label.set_text("Querying task: %s "%task_name) task_id = str(taskjson['task_id']) utils.async_call(cloudapi.query_task, self.bdstoken,task_id, callback=self.after_query_task) self.spinn.destroy() else: error = taskjson['error_msg'] logger.info(error) self.info_label.set_text(error) #self.spinn.destroy() else: info = "Already existed,pass" logger.info(info) self.info_label.set_text(info) self.spinn.destroy()