Mercurial > hg > Feedworm
annotate MainWindow.py @ 101:b2a51c24f209
Provide a better error message if updating a feed fails.
author | Dirk Olmes <dirk@xanthippe.ping.de> |
---|---|
date | Tue, 15 Feb 2011 03:40:26 +0100 |
parents | 11036eabbc46 |
children | 063581d8594e |
rev | line source |
---|---|
14 | 1 |
27
bdd1296a4b8c
implemented adding a feed
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
24
diff
changeset
|
2 from AddFeed import AddFeed |
21
c8bb3cee7935
pull out DisplayModel into its own file, add the scaffolding for the add feed menu entry
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
19
diff
changeset
|
3 from DisplayModel import DisplayModel |
15
b1aeb98824c1
Add a list view displaying all feeds
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
14
diff
changeset
|
4 from Feed import Feed |
55
0f9b3e57cff0
pull out FeedEntryItemDelegate into its own file
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
53
diff
changeset
|
5 from FeedEntryItemDelegate import FeedEntryItemDelegate |
91
e5d5fc34ff2e
convert feed list to a table view. TODO: proper resizing for columns
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
90
diff
changeset
|
6 from FeedEntryTableModel import FeedEntryTableModel |
48 | 7 from FeedSettings import FeedSettings |
61
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
8 from Preferences import Preferences |
42
0c0d1760b737
Rename Preferences to PreferencesDialog
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
40
diff
changeset
|
9 from PreferencesDialog import PreferencesDialog |
21
c8bb3cee7935
pull out DisplayModel into its own file, add the scaffolding for the add feed menu entry
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
19
diff
changeset
|
10 from PyQt4.QtCore import QUrl |
90
a1066e5a8f88
save pending changes when quitting the app
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
89
diff
changeset
|
11 from PyQt4.QtGui import QMainWindow |
a1066e5a8f88
save pending changes when quitting the app
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
89
diff
changeset
|
12 from PyQt4.QtGui import QWidget |
14 | 13 from Ui_MainWindow import Ui_MainWindow |
71
228da10cc98b
MainWindow relies on FeedList to get the feeds to display now. FeedList has two inner/private classes: one for returning all known feeds and one to return only feeds with unread entries.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
61
diff
changeset
|
14 import FeedList |
37
22214d79ed41
database URL must be given as commandline argument now, no need for creating complicated config files. Add a menu entry for opening the selected article in browser.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
33
diff
changeset
|
15 import subprocess |
14 | 16 |
50
4b0d686493fb
better error handling while adding feeds: data is only saved if a feed could be created and entries could be retrieved. MainWindow displays feedback in the status bar if an exception occurred while adding a feed.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
49
diff
changeset
|
17 STATUS_MESSAGE_DISPLAY_MILLIS = 20000 |
4b0d686493fb
better error handling while adding feeds: data is only saved if a feed could be created and entries could be retrieved. MainWindow displays feedback in the status bar if an exception occurred while adding a feed.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
49
diff
changeset
|
18 |
90
a1066e5a8f88
save pending changes when quitting the app
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
89
diff
changeset
|
19 class MainWindow(QMainWindow): |
14 | 20 def __init__(self, session=None): |
90
a1066e5a8f88
save pending changes when quitting the app
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
89
diff
changeset
|
21 QWidget.__init__(self, None) |
14 | 22 self.session = session |
61
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
23 self.preferences = Preferences(session) |
14 | 24 self.ui = Ui_MainWindow() |
25 self.ui.setupUi(self) | |
27
bdd1296a4b8c
implemented adding a feed
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
24
diff
changeset
|
26 self.updateFeedList() |
31
5bb57caa8f66
display a feed's entries sorted by their update date
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
27
diff
changeset
|
27 self.initFeedEntryList() |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
28 |
71
228da10cc98b
MainWindow relies on FeedList to get the feeds to display now. FeedList has two inner/private classes: one for returning all known feeds and one to return only feeds with unread entries.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
61
diff
changeset
|
29 def updateFeedList(self): |
228da10cc98b
MainWindow relies on FeedList to get the feeds to display now. FeedList has two inner/private classes: one for returning all known feeds and one to return only feeds with unread entries.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
61
diff
changeset
|
30 self.allFeeds = FeedList.getFeeds(self.session) |
17
5fda8bd94fa8
make the model used to display feeds generic (so it can be used to display FeedEntries, too)
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
16
diff
changeset
|
31 feedModel = DisplayModel(self, self.allFeeds, Feed.userPresentableString) |
15
b1aeb98824c1
Add a list view displaying all feeds
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
14
diff
changeset
|
32 self.ui.feedList.setModel(feedModel) |
27
bdd1296a4b8c
implemented adding a feed
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
24
diff
changeset
|
33 self.ui.feedList.update() |
bdd1296a4b8c
implemented adding a feed
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
24
diff
changeset
|
34 |
31
5bb57caa8f66
display a feed's entries sorted by their update date
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
27
diff
changeset
|
35 def initFeedEntryList(self): |
97
11036eabbc46
use a smaller default row height
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
93
diff
changeset
|
36 # setup the default row height. This must be called before a table model is set |
11036eabbc46
use a smaller default row height
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
93
diff
changeset
|
37 self.ui.feedEntryList.verticalHeader().setDefaultSectionSize(20) |
11036eabbc46
use a smaller default row height
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
93
diff
changeset
|
38 |
33
f371d02fa09d
mark unread feed entries bold. Add a menu item to toggle between read/unread
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
31
diff
changeset
|
39 self.ui.feedEntryList.setItemDelegate(FeedEntryItemDelegate()) |
91
e5d5fc34ff2e
convert feed list to a table view. TODO: proper resizing for columns
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
90
diff
changeset
|
40 self.ui.feedEntryList.setModel(FeedEntryTableModel([])) |
e5d5fc34ff2e
convert feed list to a table view. TODO: proper resizing for columns
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
90
diff
changeset
|
41 self.ui.feedEntryList.horizontalHeader().setStretchLastSection(True) |
31
5bb57caa8f66
display a feed's entries sorted by their update date
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
27
diff
changeset
|
42 |
17
5fda8bd94fa8
make the model used to display feeds generic (so it can be used to display FeedEntries, too)
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
16
diff
changeset
|
43 def feedSelected(self, index): |
19
6f7003fc6e6d
display the summary of the selected feed entry
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
18
diff
changeset
|
44 self.selectedFeed = self.allFeeds[index.row()] |
61
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
45 self.enableFeedRelatedWidgets() |
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
46 self.setupFeedEntries() |
53
8cca4585eb33
the feed settings menu item starts out disabled and gets enabled once a feed is selected
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
50
diff
changeset
|
47 |
61
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
48 def enableFeedRelatedWidgets(self): |
53
8cca4585eb33
the feed settings menu item starts out disabled and gets enabled once a feed is selected
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
50
diff
changeset
|
49 self.ui.actionFeedSettings.setEnabled(True) |
56
c82f5538733c
add a menu item to mark all entries in a feed as read
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
55
diff
changeset
|
50 self.ui.actionMarkFeedRead.setEnabled(True) |
61
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
51 |
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
52 def setupFeedEntries(self): |
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
53 hideReadEntries = self.preferences.hideReadFeedEntries() |
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
54 self.feedEntries = self.selectedFeed.entriesSortedByUpdateDate(hideReadEntries) |
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
55 self.initFeedDisplayModel() |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
56 |
61
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
57 def initFeedDisplayModel(self): |
93
e030c6bd2d81
when selecting a feed, set the title column width to 80% of the total width
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
91
diff
changeset
|
58 self.setupFeedTableModel() |
e030c6bd2d81
when selecting a feed, set the title column width to 80% of the total width
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
91
diff
changeset
|
59 self.ui.feedEntryList.update() |
e030c6bd2d81
when selecting a feed, set the title column width to 80% of the total width
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
91
diff
changeset
|
60 self.setupFeedTableHeaderWidths() |
e030c6bd2d81
when selecting a feed, set the title column width to 80% of the total width
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
91
diff
changeset
|
61 self.scrollFirstRowInFeedTableToVisible() |
e030c6bd2d81
when selecting a feed, set the title column width to 80% of the total width
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
91
diff
changeset
|
62 |
e030c6bd2d81
when selecting a feed, set the title column width to 80% of the total width
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
91
diff
changeset
|
63 def setupFeedTableModel(self): |
91
e5d5fc34ff2e
convert feed list to a table view. TODO: proper resizing for columns
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
90
diff
changeset
|
64 model = FeedEntryTableModel(self.feedEntries) |
18
35225588b895
add a list view for displaying feed entries from the selected feed
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
17
diff
changeset
|
65 self.ui.feedEntryList.setModel(model) |
61
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
66 self.ui.feedEntryList.itemDelegate().entries = self.feedEntries |
91
e5d5fc34ff2e
convert feed list to a table view. TODO: proper resizing for columns
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
90
diff
changeset
|
67 |
93
e030c6bd2d81
when selecting a feed, set the title column width to 80% of the total width
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
91
diff
changeset
|
68 def setupFeedTableHeaderWidths(self): |
e030c6bd2d81
when selecting a feed, set the title column width to 80% of the total width
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
91
diff
changeset
|
69 width = self.ui.feedEntryList.width() |
e030c6bd2d81
when selecting a feed, set the title column width to 80% of the total width
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
91
diff
changeset
|
70 firstColumnWidth = int(width * 0.8) |
e030c6bd2d81
when selecting a feed, set the title column width to 80% of the total width
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
91
diff
changeset
|
71 self.ui.feedEntryList.setColumnWidth(0, firstColumnWidth) |
e030c6bd2d81
when selecting a feed, set the title column width to 80% of the total width
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
91
diff
changeset
|
72 |
e030c6bd2d81
when selecting a feed, set the title column width to 80% of the total width
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
91
diff
changeset
|
73 def scrollFirstRowInFeedTableToVisible(self): |
e030c6bd2d81
when selecting a feed, set the title column width to 80% of the total width
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
91
diff
changeset
|
74 model = self.ui.feedEntryList.model() |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
75 visibleIndex = model.createIndex(0, 0) |
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
76 self.ui.feedEntryList.scrollTo(visibleIndex) |
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
77 |
19
6f7003fc6e6d
display the summary of the selected feed entry
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
18
diff
changeset
|
78 def feedEntrySelected(self, index): |
39
0c2578196643
Disable the article menu by default, enable it when the first article is selected
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
37
diff
changeset
|
79 self.ui.menuArticle.setEnabled(True) |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
80 |
19
6f7003fc6e6d
display the summary of the selected feed entry
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
18
diff
changeset
|
81 row = index.row() |
61
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
82 self.selectedEntry = self.feedEntries[row] |
60
d063e4814357
When clicking an entry, it's marked as read
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
59
diff
changeset
|
83 self.selectedEntry.markRead() |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
84 |
47
a8442c3487b5
add an option to Feed that allows loading an entry's link right away instead of displaying a feed's summary
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
42
diff
changeset
|
85 if self.selectedEntry.feed.auto_load_entry_link: |
a8442c3487b5
add an option to Feed that allows loading an entry's link right away instead of displaying a feed's summary
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
42
diff
changeset
|
86 self.openLinkFromSelectedEntry() |
a8442c3487b5
add an option to Feed that allows loading an entry's link right away instead of displaying a feed's summary
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
42
diff
changeset
|
87 else: |
a8442c3487b5
add an option to Feed that allows loading an entry's link right away instead of displaying a feed's summary
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
42
diff
changeset
|
88 self.openSummaryFromSelectedEntry() |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
89 |
47
a8442c3487b5
add an option to Feed that allows loading an entry's link right away instead of displaying a feed's summary
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
42
diff
changeset
|
90 def openSummaryFromSelectedEntry(self): |
a8442c3487b5
add an option to Feed that allows loading an entry's link right away instead of displaying a feed's summary
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
42
diff
changeset
|
91 # TODO this is the wrong base url, figure out the correct one |
a8442c3487b5
add an option to Feed that allows loading an entry's link right away instead of displaying a feed's summary
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
42
diff
changeset
|
92 baseUrl = QUrl(self.selectedEntry.link) |
33
f371d02fa09d
mark unread feed entries bold. Add a menu item to toggle between read/unread
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
31
diff
changeset
|
93 self.ui.webView.setHtml(self.selectedEntry.summary, baseUrl) |
47
a8442c3487b5
add an option to Feed that allows loading an entry's link right away instead of displaying a feed's summary
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
42
diff
changeset
|
94 |
a8442c3487b5
add an option to Feed that allows loading an entry's link right away instead of displaying a feed's summary
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
42
diff
changeset
|
95 def openLinkFromSelectedEntry(self): |
77
d292ab61ed6f
Add another setting to feed: when opening a feed entry in browser, you can force opening it in an external browser now. This is because some sites just crash the QWebView.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
75
diff
changeset
|
96 if self.selectedEntry.feed.always_open_in_browser: |
d292ab61ed6f
Add another setting to feed: when opening a feed entry in browser, you can force opening it in an external browser now. This is because some sites just crash the QWebView.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
75
diff
changeset
|
97 self.openSelectedEntryInBrowser() |
d292ab61ed6f
Add another setting to feed: when opening a feed entry in browser, you can force opening it in an external browser now. This is because some sites just crash the QWebView.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
75
diff
changeset
|
98 else: |
d292ab61ed6f
Add another setting to feed: when opening a feed entry in browser, you can force opening it in an external browser now. This is because some sites just crash the QWebView.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
75
diff
changeset
|
99 self.openSelectedEntryInWebView() |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
100 |
77
d292ab61ed6f
Add another setting to feed: when opening a feed entry in browser, you can force opening it in an external browser now. This is because some sites just crash the QWebView.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
75
diff
changeset
|
101 def openSelectedEntryInWebView(self): |
82
2dd6e6894772
update the status bar when opening a feed's rss url via WebView or external browser
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
77
diff
changeset
|
102 message = "Open %s ..." % (self.selectedEntry.title) |
2dd6e6894772
update the status bar when opening a feed's rss url via WebView or external browser
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
77
diff
changeset
|
103 self._updateStatusBar(message) |
47
a8442c3487b5
add an option to Feed that allows loading an entry's link right away instead of displaying a feed's summary
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
42
diff
changeset
|
104 url = QUrl(self.selectedEntry.link) |
a8442c3487b5
add an option to Feed that allows loading an entry's link right away instead of displaying a feed's summary
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
42
diff
changeset
|
105 self.ui.webView.load(url) |
a8442c3487b5
add an option to Feed that allows loading an entry's link right away instead of displaying a feed's summary
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
42
diff
changeset
|
106 self.ui.webView.show() |
77
d292ab61ed6f
Add another setting to feed: when opening a feed entry in browser, you can force opening it in an external browser now. This is because some sites just crash the QWebView.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
75
diff
changeset
|
107 |
d292ab61ed6f
Add another setting to feed: when opening a feed entry in browser, you can force opening it in an external browser now. This is because some sites just crash the QWebView.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
75
diff
changeset
|
108 def openSelectedEntryInBrowser(self): |
84
bacf42da9e36
update the status bar when an article is opened
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
82
diff
changeset
|
109 message = "Open %s in external browser" % (self.selectedEntry.title) |
82
2dd6e6894772
update the status bar when opening a feed's rss url via WebView or external browser
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
77
diff
changeset
|
110 self._updateStatusBar(message) |
77
d292ab61ed6f
Add another setting to feed: when opening a feed entry in browser, you can force opening it in an external browser now. This is because some sites just crash the QWebView.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
75
diff
changeset
|
111 # TODO make browser configurable |
d292ab61ed6f
Add another setting to feed: when opening a feed entry in browser, you can force opening it in an external browser now. This is because some sites just crash the QWebView.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
75
diff
changeset
|
112 browser = "/usr/local/bin/opera" |
d292ab61ed6f
Add another setting to feed: when opening a feed entry in browser, you can force opening it in an external browser now. This is because some sites just crash the QWebView.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
75
diff
changeset
|
113 subprocess.Popen([browser, self.selectedEntry.link]) |
d292ab61ed6f
Add another setting to feed: when opening a feed entry in browser, you can force opening it in an external browser now. This is because some sites just crash the QWebView.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
75
diff
changeset
|
114 |
33
f371d02fa09d
mark unread feed entries bold. Add a menu item to toggle between read/unread
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
31
diff
changeset
|
115 def toggleReadOnSelectedEntry(self): |
f371d02fa09d
mark unread feed entries bold. Add a menu item to toggle between read/unread
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
31
diff
changeset
|
116 self.selectedEntry.toggleRead() |
f371d02fa09d
mark unread feed entries bold. Add a menu item to toggle between read/unread
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
31
diff
changeset
|
117 self.session.commit() |
75
a8a4cf131a02
Properly update the feed entry list when marking an entry as read/unread
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
74
diff
changeset
|
118 self.ui.feedEntryList.doItemsLayout() |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
119 |
59
daa2731967fe
Marking all articles in a feed as read doesn't toggle any more ... it marks all articles as read.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
56
diff
changeset
|
120 def markSelectedFeedRead(self): |
daa2731967fe
Marking all articles in a feed as read doesn't toggle any more ... it marks all articles as read.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
56
diff
changeset
|
121 self.selectedFeed.markAllEntriesRead() |
56
c82f5538733c
add a menu item to mark all entries in a feed as read
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
55
diff
changeset
|
122 self.session.commit() |
74
1e6f6ed38dd0
do a proper update when marking all feed entries as read
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
71
diff
changeset
|
123 self.ui.feedEntryList.doItemsLayout() |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
124 |
21
c8bb3cee7935
pull out DisplayModel into its own file, add the scaffolding for the add feed menu entry
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
19
diff
changeset
|
125 def addFeed(self): |
27
bdd1296a4b8c
implemented adding a feed
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
24
diff
changeset
|
126 addFeed = AddFeed(self.session) |
bdd1296a4b8c
implemented adding a feed
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
24
diff
changeset
|
127 success = addFeed.exec_() |
50
4b0d686493fb
better error handling while adding feeds: data is only saved if a feed could be created and entries could be retrieved. MainWindow displays feedback in the status bar if an exception occurred while adding a feed.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
49
diff
changeset
|
128 if not success: |
4b0d686493fb
better error handling while adding feeds: data is only saved if a feed could be created and entries could be retrieved. MainWindow displays feedback in the status bar if an exception occurred while adding a feed.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
49
diff
changeset
|
129 return |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
130 |
50
4b0d686493fb
better error handling while adding feeds: data is only saved if a feed could be created and entries could be retrieved. MainWindow displays feedback in the status bar if an exception occurred while adding a feed.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
49
diff
changeset
|
131 if addFeed.exception is not None: |
4b0d686493fb
better error handling while adding feeds: data is only saved if a feed could be created and entries could be retrieved. MainWindow displays feedback in the status bar if an exception occurred while adding a feed.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
49
diff
changeset
|
132 message = "Error while adding feed: " + str(addFeed.exception) |
82
2dd6e6894772
update the status bar when opening a feed's rss url via WebView or external browser
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
77
diff
changeset
|
133 self._updateStatusBar(message) |
50
4b0d686493fb
better error handling while adding feeds: data is only saved if a feed could be created and entries could be retrieved. MainWindow displays feedback in the status bar if an exception occurred while adding a feed.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
49
diff
changeset
|
134 else: |
4b0d686493fb
better error handling while adding feeds: data is only saved if a feed could be created and entries could be retrieved. MainWindow displays feedback in the status bar if an exception occurred while adding a feed.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
49
diff
changeset
|
135 self.session.commit() |
27
bdd1296a4b8c
implemented adding a feed
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
24
diff
changeset
|
136 self.updateFeedList() |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
137 |
40 | 138 def showPreferences(self): |
42
0c0d1760b737
Rename Preferences to PreferencesDialog
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
40
diff
changeset
|
139 preferences = PreferencesDialog(self.session) |
40 | 140 preferences.exec_() |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
141 |
48 | 142 def showFeedSettings(self): |
143 feedSettings = FeedSettings(self.session, self.selectedFeed) | |
144 feedSettings.exec_() | |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
145 |
82
2dd6e6894772
update the status bar when opening a feed's rss url via WebView or external browser
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
77
diff
changeset
|
146 def _updateStatusBar(self, message): |
2dd6e6894772
update the status bar when opening a feed's rss url via WebView or external browser
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
77
diff
changeset
|
147 self.ui.statusbar.showMessage(message, STATUS_MESSAGE_DISPLAY_MILLIS) |
37
22214d79ed41
database URL must be given as commandline argument now, no need for creating complicated config files. Add a menu entry for opening the selected article in browser.
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
33
diff
changeset
|
148 |
90
a1066e5a8f88
save pending changes when quitting the app
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
89
diff
changeset
|
149 def close(self): |
a1066e5a8f88
save pending changes when quitting the app
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
89
diff
changeset
|
150 # save all uncommitted state, just in case |
a1066e5a8f88
save pending changes when quitting the app
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
89
diff
changeset
|
151 self.session.commit() |
a1066e5a8f88
save pending changes when quitting the app
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
89
diff
changeset
|
152 QMainWindow.close(self) |