Mercurial > hg > Feedworm
view MainWindow.py @ 70:842727971796
have the DB URL as parameter when creating a session and fall back to commandline arguments if no DB URL was passed in
author | Dirk Olmes <dirk@xanthippe.ping.de> |
---|---|
date | Wed, 11 Aug 2010 02:30:47 +0200 |
parents | db35ab7753f0 |
children | 228da10cc98b |
line wrap: on
line source
from AddFeed import AddFeed from DisplayModel import DisplayModel from Feed import Feed from FeedEntry import FeedEntry from FeedEntryItemDelegate import FeedEntryItemDelegate from FeedSettings import FeedSettings from Preferences import Preferences from PreferencesDialog import PreferencesDialog from PyQt4 import QtGui from PyQt4.QtCore import QUrl from Ui_MainWindow import Ui_MainWindow import subprocess STATUS_MESSAGE_DISPLAY_MILLIS = 20000 class MainWindow(QtGui.QMainWindow): def __init__(self, session=None): QtGui.QWidget.__init__(self, None) self.session = session self.preferences = Preferences(session) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.updateFeedList() self.initFeedEntryList() def updateFeedList(self): self.allFeeds = Feed.all(self.session) feedModel = DisplayModel(self, self.allFeeds, Feed.userPresentableString) self.ui.feedList.setModel(feedModel) self.ui.feedList.update() def initFeedEntryList(self): self.ui.feedEntryList.setItemDelegate(FeedEntryItemDelegate()) def feedSelected(self, index): self.selectedFeed = self.allFeeds[index.row()] self.enableFeedRelatedWidgets() self.setupFeedEntries() def enableFeedRelatedWidgets(self): self.ui.actionFeedSettings.setEnabled(True) self.ui.actionMarkFeedRead.setEnabled(True) def setupFeedEntries(self): hideReadEntries = self.preferences.hideReadFeedEntries() self.feedEntries = self.selectedFeed.entriesSortedByUpdateDate(hideReadEntries) self.initFeedDisplayModel() def initFeedDisplayModel(self): model = DisplayModel(self, self.feedEntries, FeedEntry.userPresentableString) self.ui.feedEntryList.setModel(model) self.ui.feedEntryList.itemDelegate().entries = self.feedEntries self.ui.feedEntryList.update() def feedEntrySelected(self, index): self.ui.menuArticle.setEnabled(True) row = index.row() self.selectedEntry = self.feedEntries[row] self.selectedEntry.markRead() if self.selectedEntry.feed.auto_load_entry_link: self.openLinkFromSelectedEntry() else: self.openSummaryFromSelectedEntry() def openSummaryFromSelectedEntry(self): # TODO this is the wrong base url, figure out the correct one baseUrl = QUrl(self.selectedEntry.link) self.ui.webView.setHtml(self.selectedEntry.summary, baseUrl) def openLinkFromSelectedEntry(self): url = QUrl(self.selectedEntry.link) self.ui.webView.load(url) self.ui.webView.show() def toggleReadOnSelectedEntry(self): self.selectedEntry.toggleRead() self.session.commit() self.ui.feedList.update() def markSelectedFeedRead(self): self.selectedFeed.markAllEntriesRead() self.session.commit() self.ui.feedEntryList.update() def addFeed(self): addFeed = AddFeed(self.session) success = addFeed.exec_() if not success: return if addFeed.exception is not None: message = "Error while adding feed: " + str(addFeed.exception) self.ui.statusbar.showMessage(message, STATUS_MESSAGE_DISPLAY_MILLIS) else: self.session.commit() self.updateFeedList() def openSelectedEntryInBrowser(self): # TODO make browser configurable browser = "/usr/local/bin/opera" subprocess.Popen([browser, self.selectedEntry.link]) def showPreferences(self): preferences = PreferencesDialog(self.session) preferences.exec_() def showFeedSettings(self): feedSettings = FeedSettings(self.session, self.selectedFeed) feedSettings.exec_()