def start(self, tray): startDB = DB(); settings = Settings(startDB); settings = settings.currentSettings(); FeedBox.FeedBox.setTheme(settings['theme']); if(settings['startMinimalized']): tray.minimalization(); if(settings['startup']): self.updateAllFeeds();
class rss_dragonfly(Window): selected = False; def __init__(self, parent=None): super(rss_dragonfly, self).__init__(parent); self.drawWindow(); self.database = DB(); self.feedList = FeedList(self.feedListWidget, self.database); self.addFeedPopup = AddFeedDialog(); self.editFeedDialog = EditFeedDialog(); self.aboutDialog = AboutDialog(); self.settings = Settings(self.database); self.settingsDialog = SettingsDialog(self.settings.currentSettings()); self.connect(self.aboutAction, SIGNAL("triggered()"), self.aboutDialog.exec_); self.connect(self.importAction, SIGNAL("triggered()"), self.fromFile); self.connect(self.settingsAction, SIGNAL("triggered()"), self.displaySettings); self.connect(self.settingsDialog.saveButton, SIGNAL("clicked()"), self.saveSettings); self.connect(self.goButton, SIGNAL("clicked()"), self.readFromAddrBar); self.connect(self.addressInput, SIGNAL("returnPressed()"), self.readFromAddrBar); self.connect(self.quitAction, SIGNAL("triggered()"), self.quit) self.connect(self.addNewFeedButton, SIGNAL("clicked()"), self.addFeedPopup.exec_) self.feedListWidget.itemActivated.connect(self.listItemSelected); self.feedListWidget.setContextMenuPolicy(Qt.CustomContextMenu); self.connect(self.feedListWidget, SIGNAL("customContextMenuRequested(const QPoint &)"), self.listMenu); self.connect(self.reloadFeedsButton, SIGNAL("clicked()"), self.updateAllFeeds); # context menu form list self.connect(self.updateItemAction, SIGNAL("triggered()"), self.updateSelectedFeed); self.connect(self.deleteItemAction, SIGNAL("triggered()"), self.rmFeed); self.connect(self.editItemAction, SIGNAL("triggered()"), self.editFeed); self.connect(self.checkUpdatesAction, SIGNAL("triggered()"), self.checkForUpdates); self.connect(self.rmFeedButton, SIGNAL("clicked()"), self.rmFeed) self.connect(self.saveFromAddrButton, SIGNAL("clicked()"), self.saveOpened); #popUp #popUp signals: self.connect(self.addFeedPopup.send, SIGNAL("clicked()"), self.addFeed); self.connect(self.addFeedPopup.cancel, SIGNAL("clicked()"), self.cancel); self.connect(self.aboutDialog.closeButton, SIGNAL("clicked()"), self.aboutDialog.close); self.connect(self.editItemAction, SIGNAL("clicked()"), self.editFeed); self.connect(self.editFeedDialog.save, SIGNAL("clicked()"), self.editFeedSubmit); self.rmFeedButton.setDisabled(True); self.saveFromAddrButton.setDisabled(True); def start(self, tray): startDB = DB(); settings = Settings(startDB); settings = settings.currentSettings(); FeedBox.FeedBox.setTheme(settings['theme']); if(settings['startMinimalized']): tray.minimalization(); if(settings['startup']): self.updateAllFeeds(); def listMenu(self, point): currentItem = self.feedListWidget.currentItem() if currentItem: self.selected = self.feedListWidget.indexFromItem(currentItem).row() #self.listItemSelected(currentItem) self.listItemMenu.exec_(QCursor.pos()); def readFromAddrBar(self): if len(str(self.addressInput.text())) > 1: if self.selected != False: self.selected = False; source = Source(); source = source.fromURL(str(self.addressInput.text())); if(source != False): try: feed = Feed(source); self.rssContentView.setHtml(unicode(FeedBox.FeedBox.showFeeds(feed.feedTitle, feed.toHTML()))); self.updateTitle(str(feed.feedTitle).replace("'", "'")); self.rmFeedButton.setEnabled(False); #self.reloadOneFeedButton.setEnabled(False); self.saveFromAddrButton.setEnabled(True); self.addFeedPopup.name.setText(feed.feedTitle); except: self.rssContentView.setHtml(unicode(FeedBox.FeedBox.parseError())); self.updateTitle("Unable to load RSS feed"); else: self.rssContentView.setHtml(unicode(FeedBox.FeedBox.downloadError())); self.updateTitle("Unable to load RSS feed"); self.feedListWidget.clearSelection(); def addFeed(self): if(len(str(self.addFeedPopup.address.text()))>5 and len(self.addFeedPopup.name.text()) >2): source = Source(); source = source.fromURL(str(self.addFeedPopup.address.text())) if(source != False): try: feed = Feed(source); self.feedList.add(feed, self.addFeedPopup.name.text(), self.addFeedPopup.address.text()); except: self.rssContentView.setHtml(unicode(FeedBox.FeedBox.parseError())); self.updateTitle("Unable to load RSS feed"); else: self.rssContentView.setHtml(unicode(FeedBox.FeedBox.downloadError())); self.updateTitle("Unable to load RSS feed"); self.addFeedPopup.name.clear(); self.addFeedPopup.address.clear(); self.addFeedPopup.close(); def editFeed(self): feed = self.feedList.getSingleSubscription(self.selected); self.editFeedDialog.setWindowTitle(u"Edit feed | "+feed['name']); self.editFeedDialog.name.setText(feed['name']); self.editFeedDialog.address.setText(feed['addr']); feedSingle = self.feedList.getSingleSubscription(self.selected); self.editFeedDialog.exec_(); def editFeedSubmit(self): try: name = self.editFeedDialog.name.text(); address = self.editFeedDialog.address.text(); self.feedList.editSelectedFeed(self.selected, str(name), str(address), Feed, Source); self.editFeedDialog.close(); self.feedListWidget.setCurrentRow(self.selected) self.listItemSelected(self.feedListWidget.currentItem()) except: self.rssContentView.setHtml(unicode(FeedBox.FeedBox.updateError())); self.updateTitle("Unable to update RSS feed"); def rmFeed(self): self.feedList.remove(self.selected); self.rmFeedButton.setEnabled(False); def quit(self): rsssq.quit(); def listItemSelected(self,selected): self.addressInput.clear(); self.selected = self.feedListWidget.indexFromItem(selected).row(); html = self.feedList.getSingleSubscriptionToHTML(self.selected); feedSingle = self.feedList.getSingleSubscription(self.selected); self.rssContentView.setHtml(unicode(FeedBox.FeedBox.showFeeds(feedSingle['FeedTitle'], html))); self.updateTitle(feedSingle['FeedTitle'].replace("'", "'")); self.rmFeedButton.setEnabled(True); self.saveFromAddrButton.setEnabled(False); def saveOpened(self): self.addFeedPopup.address.setText(self.addressInput.text()); self.addFeedPopup.exec_(); def updateAllFeeds(self): try: self.feedList.updateAll(Feed,Source); if(self.selected): #updating content on screen html = self.feedList.getSingleSubscriptionToHTML(self.selected); feedSingle = self.feedList.getSingleSubscription(self.selected); self.rssContentView.setHtml(unicode(FeedBox.FeedBox.showFeeds(feedSingle['FeedTitle'], html))); self.updateTitle(feedSingle['FeedTitle'].replace("'", "'")); except: self.rssContentView.setHtml(unicode(FeedBox.FeedBox.updateError())); self.updateTitle("Unable to update RSS feed"); self.rmFeedButton.setEnabled(False); #self.reloadOneFeedButton.setEnabled(False); def updateSelectedFeed(self): try: self.feedList.updateSelectedFeed(self.selected, Feed, Source); #updating content on screen html = self.feedList.getSingleSubscriptionToHTML(self.selected); feedSingle = self.feedList.getSingleSubscription(self.selected); self.rssContentView.setHtml(unicode(FeedBox.FeedBox.showFeeds(feedSingle['FeedTitle'], html))); self.updateTitle(feedSingle['FeedTitle'].replace("'", "'")); except: self.rssContentView.setHtml(unicode(FeedBox.FeedBox.updateError())); self.updateTitle("Unable to update RSS feed"); def cancel(self): self.addFeedPopup.name.clear(); self.addFeedPopup.address.clear(); self.addFeedPopup.close(); def fromFile(self): rssFile = QFileDialog.getOpenFileName(self, 'rss', '*.rss'); source = Source(); self.saveFromAddrButton.setEnabled(False); self.addressInput.clear(); self.feedListWidget.clearSelection(); try: feed = Feed(source.fromFile(str(rssFile)), "file"); self.updateTitle(str(feed.feedTitle).replace("'", "'")); self.rssContentView.setHtml(unicode(FeedBox.FeedBox.showFeeds(feed.feedTitle, feed.toHTML()))); except: self.rssContentView.setHtml(unicode(FeedBox.FeedBox.parseError())); self.updateTitle("Unable to open RSS feed"); def displaySettings(self): self.settingsDialog.exec_() def saveSettings(self): self.settings.saveSettings(self.settingsDialog.getSettingsArray()); settings = self.settings.currentSettings() FeedBox.FeedBox.setTheme(settings['theme']); self.settingsDialog.close(); if (self.selected): self.listItemSelected(self.feedListWidget.currentItem()); else: self.rssContentView.setHtml(unicode(FeedBox.FeedBox.start())); self.setWindowTitle("RSS Dragonfly"); self.addressInput.clear(); self.saveFromAddrButton.setEnabled(False); self.feedListWidget.clearSelection(); def checkForUpdates(self): self.check = Thread(target=self.runUpdater).start(); def runUpdater(self): import os; os.system("./updater.py")