def networkError(self): _ = LLocale()._ md = gtk.MessageDialog(self.window, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, _("Cannot connect to the server.")) md.set_title(_("Network Error")) md.run() md.destroy()
def runNext(self): _ = LLocale()._ self.activeTaskLock.acquire() self.activeTask = self.getNextTask() if self.activeTask != None: self.mainWindow.statusBar.push(0, _("Downloading ")+self.tasksList[self.activeTask[1]][1]+"...") self.activeTask[0].start() self.activeTaskLock.release()
def onBookmark(self, isSave): _ = LLocale()._ if isSave: self.bookmarks.add(self.selectedManga) self.statusBar.push(0, _("Bookmark saved.")) else: self.bookmarks.delete(self.selectedManga) self.statusBar.push(0, _("Bookmark removed.")) self.onBookmarkPopulate()
def __init__(self, mainw): _ = LLocale()._ self.mainWindow = mainw SecondaryWindow.__init__(self, _("Edenget - Download Queue")) self.window.set_default_size(400, 500) self.window.set_modal(False) mainBox = gtk.VBox() self.window.add(mainBox) sw = gtk.ScrolledWindow() sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) mainBox.pack_start(sw, True, True, 0) self.tasksList = gtk.ListStore(int, str, int) self.tasksListView = gtk.TreeView(self.tasksList) self.tasksListView.get_selection().set_mode(gtk.SELECTION_MULTIPLE) rendererText = gtk.CellRendererText() column = gtk.TreeViewColumn("", rendererText, text=0) column.set_sort_column_id(0) self.tasksListView.append_column(column) rendererText = gtk.CellRendererText() column = gtk.TreeViewColumn(_("File"), rendererText, text=1) column.set_sort_column_id(1) self.tasksListView.append_column(column) column = gtk.TreeViewColumn(_("Progress"), gtk.CellRendererProgress(), value=2) column.set_sort_column_id(2) self.tasksListView.append_column(column) selection = self.tasksListView.get_selection() selection.set_mode(gtk.SELECTION_MULTIPLE) selection.connect("changed", self.onSelectedTasks) sw.add(self.tasksListView) # Toolbar toolbar = gtk.Toolbar() toolbar.set_style(gtk.TOOLBAR_BOTH_HORIZ) #iconw = gtk.Image() #iconw.set_from_stock(gtk.STOCK_DELETE, gtk.ICON_SIZE_LARGE_TOOLBAR) #toolbar.append_item(_("Delete"), "", "Private", iconw, self.onDeleteTask) iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_LARGE_TOOLBAR) toolbar.append_item(_("Close"), "", "Private", iconw, lambda w: self.changeVisibility()) mainBox.pack_start(toolbar, False, False, 0)
def onAbout(self, window): _ = LLocale()._ d = gtk.AboutDialog() d.set_authors(["Davide Gessa ([email protected])"]) d.set_license(license) d.set_comments(_("A multiplatform batch downloader for mangaeden.com")) d.set_wrap_license(True) d.set_logo( window.render_icon(gtk.STOCK_DIALOG_INFO, gtk.ICON_SIZE_DIALOG)) d.set_name("EdenGet") d.run() d.destroy()
def onDownloadAll(self, window): if self.mangaInfo == None: _ = LLocale()._ md = gtk.MessageDialog(self.window, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING, gtk.BUTTONS_CLOSE, _("You should select a manga.")) md.set_title(_("No manga selected")) md.run() md.destroy() return if self.preferencesWindow.folderUri == None: self.preferencesWindow.onChooseDestination(window) for x in self.mangaEden.getMangaChaptersList(self.selectedManga[1]): self.queueWindow.add(self.mangaEden, self.selectedManga[1], x[0], self.preferencesWindow.folderUri, self.formatCombo.get_active_text())
def run(self): _ = LLocale()._ fname = None try: fname = self.mangaEden.getMangaChapter(self.mangaCode, self.chapterNumber, self.destination, self.formatType, self.stopEvent, self.progressFunc) except Exception as e: er = e.args[0] self.progressFunc("Failed") #print er self.qw.tasksLock.acquire() self.qw.tasks[self.i] = None self.qw.tasksLock.release() self.qw.runNext() #print "Download of", fname, "completed" self.qw.mainWindow.statusBar.push(0, _("Download of ")+fname+_(" completed."))
def add(self, mangaEden, mangaCode, chapterNumber, destination, formatType="pdf"): _ = LLocale()._ t = self.DownloadThread(self.n, mangaEden, mangaCode, chapterNumber, destination, formatType, self) self.n+=1 self.tasksListLock.acquire() it = self.tasksList.append([int(t.i), str(t.fileName), 0]) self.tasksListLock.release() t.progressFunc = (lambda progress: self.setRowProgress(it,progress)) self.tasksLock.acquire() self.tasks.append([t, it]) self.tasksLock.release() self.activeTaskLock.acquire() if self.activeTask == None: self.activeTaskLock.release() self.runNext() return self.activeTaskLock.release()
def __init__(self): _ = LLocale()._ self.queueWindow = QueueWindow.QueueWindow(self) self.preferencesWindow = PreferencesWindow.PreferencesWindow(self) self.preferencesWindow.loadPrefs() # Gtk stuffs self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.connect("destroy", self.destroy) self.window.set_title("EdenGet") self.window.set_default_size(400, 500) mainBox = gtk.VBox() self.window.add(mainBox) # Menu menubar = gtk.MenuBar() mainBox.pack_start(menubar, False, False, 0) # File menu menu_item = gtk.MenuItem(_("File")) menubar.append(menu_item) menu = gtk.Menu() menu_item.set_submenu(menu) it = gtk.ImageMenuItem(gtk.STOCK_QUIT) it.connect('activate', self.destroy) menu.append(it) # Edit menu menu_item = gtk.MenuItem(_("Edit")) menubar.append(menu_item) menu = gtk.Menu() menu_item.set_submenu(menu) it = gtk.MenuItem(_("Destination folder")) #it = gtk.ImageMenuItem(gtk.STOCK_HARDDISK) it.connect('activate', lambda w: self.preferencesWindow.onChooseDestination(w)) menu.append(it) it = gtk.ImageMenuItem(gtk.STOCK_PREFERENCES) it.connect('activate', lambda w: self.preferencesWindow.changeVisibility()) menu.append(it) # Help menu menu_item = gtk.MenuItem(_("Help")) menubar.append(menu_item) menu = gtk.Menu() menu_item.set_submenu(menu) it = gtk.ImageMenuItem(gtk.STOCK_ABOUT) it.connect('activate', self.onAbout) menu.append(it) # Button toolbar toolbar = gtk.Toolbar() iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_EXECUTE, 16) toolbar.append_item(_("Download Queue"), "", "Private", iconw, lambda w: self.queueWindow.changeVisibility()) iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_DIRECTORY, 16) toolbar.append_item(_("Destination Folder"), "", "Private", iconw, self.preferencesWindow.onChooseDestination) self.languageCombo = gtk.combo_box_new_text() self.languageCombo.insert_text(1, "Italiano") self.languageCombo.insert_text(0, "English") self.languageCombo.set_active(1) self.languageCombo.connect( 'changed', lambda w: th.Thread(target=self.onLanguageComboChanged, args=(w)).start()) toolbar.append_element(gtk.TOOLBAR_CHILD_WIDGET, self.languageCombo, None, None, None, None, None, None) self.formatCombo = gtk.combo_box_new_text() for x in MangaEden().formatTypes: self.formatCombo.insert_text(x, MangaEden().formatTypes[x]) self.formatCombo.set_active(1) self.formatCombo.set_state(gtk.STATE_INSENSITIVE) toolbar.append_element(gtk.TOOLBAR_CHILD_WIDGET, self.formatCombo, None, None, None, None, None, None) mainBox.pack_start(toolbar, False, False, 0) # Box hbox = gtk.HBox() mainBox.add(hbox) # VBox for mangalist vbox = gtk.VBox() hbox.add(vbox) notebook = gtk.Notebook() notebook.set_tab_pos(gtk.POS_TOP) vbox.add(notebook) # Search tab searchbox = gtk.VBox() notebook.prepend_page(searchbox, gtk.Label(_("Search"))) self.searchEntry = gtk.Entry() self.searchEntry.connect('changed', self.onSearchTextModified) searchbox.pack_start(self.searchEntry, False, False, 0) sw = gtk.ScrolledWindow() sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) searchbox.pack_start(sw, True, True, 0) self.searchList = gtk.ListStore(str, str) self.searchListView = gtk.TreeView(self.searchList) self.searchListView.connect( 'cursor-changed', lambda w, l: th.Thread( target=self.onSelectedManga, args=(w, l)).start(), self.searchListView) self.searchListView.connect('button_press_event', self.onMangaListContextMenu) rendererText = gtk.CellRendererText() column = gtk.TreeViewColumn(_("Name"), rendererText, text=1) column.set_sort_column_id(1) self.searchListView.append_column(column) sw.add(self.searchListView) # Bookmarks tab sw = gtk.ScrolledWindow() sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) #vbox.pack_start(sw, True, True, 0) notebook.prepend_page(sw, gtk.Label(_("Bookmarks"))) self.marksList = gtk.ListStore(str, str) self.marksListView = gtk.TreeView(self.marksList) self.marksListView.connect( 'cursor-changed', lambda w, l: th.Thread( target=self.onSelectedManga, args=(w, l)).start(), self.marksListView) self.marksListView.connect('button_press_event', self.onMangaListContextMenu) rendererText = gtk.CellRendererText() column = gtk.TreeViewColumn(_("Name"), rendererText, text=1) column.set_sort_column_id(1) self.marksListView.append_column(column) sw.add(self.marksListView) # List tab sw = gtk.ScrolledWindow() sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) #vbox.pack_start(sw, True, True, 0) notebook.prepend_page(sw, gtk.Label(_("Full List"))) self.mangaList = gtk.ListStore(str, str) self.mangaListView = gtk.TreeView(self.mangaList) self.mangaListView.connect( 'cursor-changed', lambda w, l: th.Thread( target=self.onSelectedManga, args=(w, l)).start(), self.mangaListView) self.mangaListView.connect('button_press_event', self.onMangaListContextMenu) rendererText = gtk.CellRendererText() column = gtk.TreeViewColumn(_("Name"), rendererText, text=1) column.set_sort_column_id(1) self.mangaListView.append_column(column) sw.add(self.mangaListView) # VBox for chapter list vbox = gtk.VBox() hbox.add(vbox) self.mangaImage = gtk.Image() vbox.pack_start(self.mangaImage, False, False, 0) sw = gtk.ScrolledWindow() sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) vbox.pack_start(sw, True, True, 0) self.chapterList = gtk.ListStore(str, str, str) self.chapterListView = gtk.TreeView(self.chapterList) self.chapterListView.get_selection().set_mode(gtk.SELECTION_MULTIPLE) #self.chapterListView.connect('cursor-changed', self.onSelectedChapter) selection = self.chapterListView.get_selection() selection.set_mode(gtk.SELECTION_MULTIPLE) selection.connect( "changed", lambda w, d=None: th.Thread(target=self.onSelectedChapter, args=(w, d)).start()) rendererText = gtk.CellRendererText() column = gtk.TreeViewColumn("", rendererText, text=0) column.set_sort_column_id(0) self.chapterListView.append_column(column) rendererText = gtk.CellRendererText() column = gtk.TreeViewColumn(_("Title"), rendererText, text=1) column.set_sort_column_id(1) self.chapterListView.append_column(column) sw.add(self.chapterListView) toolbar = gtk.Toolbar() iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_FLOPPY, 16) toolbar.append_item(_("Download"), "", "Private", iconw, self.onDownload) iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_FLOPPY, 16) toolbar.append_item(_("Download All"), "", "Private", iconw, self.onDownloadAll) vbox.pack_start(toolbar, False, False, 0) self.statusBar = gtk.Statusbar() self.statusBar.push(0, _("Ready.")) mainBox.pack_start(self.statusBar, False, False, 0) self.window.show_all() self.mangaEden = MangaEden("", "") th.Thread(target=self.onLanguageComboChanged, args=(self.window)).start() self.addBookmarkPopup = gtk.Menu() it = gtk.ImageMenuItem(gtk.STOCK_ADD) it.connect('activate', lambda w: self.onBookmark(True)) #save = gtk.MenuItem(_("Save as bookmark") #save.connect('activate', lambda w: pass) self.addBookmarkPopup.append(it) self.addBookmarkPopup.show_all() self.removeBookmarkPopup = gtk.Menu() it = gtk.ImageMenuItem(gtk.STOCK_REMOVE) it.connect('activate', lambda w: self.onBookmark(False)) #save = gtk.MenuItem(_("Save as bookmark") #save.connect('activate', lambda w: pass) self.removeBookmarkPopup.append(it) self.removeBookmarkPopup.show_all() notebook.connect('switch-page', lambda w, p, p1: self.chapterList.clear()) th.Thread(target=self.onBookmarkPopulate, args=()).start()