Mercurial > hg > Feedworm
annotate MainWindow.py @ 91:e5d5fc34ff2e
convert feed list to a table view. TODO: proper resizing for columns
author | Dirk Olmes <dirk@xanthippe.ping.de> |
---|---|
date | Sun, 26 Dec 2010 08:35:36 +0100 |
parents | a1066e5a8f88 |
children | e030c6bd2d81 |
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): |
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
|
36 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
|
37 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
|
38 |
e5d5fc34ff2e
convert feed list to a table view. TODO: proper resizing for columns
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
90
diff
changeset
|
39 width = self.ui.feedEntryList.width() |
e5d5fc34ff2e
convert feed list to a table view. TODO: proper resizing for columns
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
90
diff
changeset
|
40 print("width: " + str(width)) |
e5d5fc34ff2e
convert feed list to a table view. TODO: proper resizing for columns
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
90
diff
changeset
|
41 firstColumnWidth = int(width * 0.8) |
e5d5fc34ff2e
convert feed list to a table view. TODO: proper resizing for columns
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
90
diff
changeset
|
42 self.ui.feedEntryList.setColumnWidth(0, firstColumnWidth) |
e5d5fc34ff2e
convert feed list to a table view. TODO: proper resizing for columns
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
90
diff
changeset
|
43 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
|
44 |
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
|
45 def feedSelected(self, index): |
19
6f7003fc6e6d
display the summary of the selected feed entry
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
18
diff
changeset
|
46 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
|
47 self.enableFeedRelatedWidgets() |
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
48 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
|
49 |
61
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
50 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
|
51 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
|
52 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
|
53 |
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
54 def setupFeedEntries(self): |
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
55 hideReadEntries = self.preferences.hideReadFeedEntries() |
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
56 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
|
57 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
|
58 |
61
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
59 def initFeedDisplayModel(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
|
60 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
|
61 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
|
62 self.ui.feedEntryList.itemDelegate().entries = 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
|
63 self.ui.feedEntryList.update() |
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 |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
65 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
|
66 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
|
67 |
19
6f7003fc6e6d
display the summary of the selected feed entry
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
18
diff
changeset
|
68 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
|
69 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
|
70 |
19
6f7003fc6e6d
display the summary of the selected feed entry
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
18
diff
changeset
|
71 row = index.row() |
61
db35ab7753f0
add a preference to hide read feed entries
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
60
diff
changeset
|
72 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
|
73 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
|
74 |
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
|
75 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
|
76 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
|
77 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
|
78 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
|
79 |
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
|
80 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
|
81 # 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
|
82 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
|
83 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
|
84 |
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 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
|
86 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
|
87 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
|
88 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
|
89 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
|
90 |
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
|
91 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
|
92 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
|
93 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
|
94 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
|
95 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
|
96 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
|
97 |
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 def openSelectedEntryInBrowser(self): |
84
bacf42da9e36
update the status bar when an article is opened
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
82
diff
changeset
|
99 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
|
100 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
|
101 # 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
|
102 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
|
103 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
|
104 |
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
|
105 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
|
106 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
|
107 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
|
108 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
|
109 |
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
|
110 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
|
111 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
|
112 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
|
113 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
|
114 |
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
|
115 def addFeed(self): |
27
bdd1296a4b8c
implemented adding a feed
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
24
diff
changeset
|
116 addFeed = AddFeed(self.session) |
bdd1296a4b8c
implemented adding a feed
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
24
diff
changeset
|
117 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
|
118 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
|
119 return |
89
2eddb44920d1
When selecting a new feed, scroll its first entry to visible
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
84
diff
changeset
|
120 |
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
|
121 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
|
122 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
|
123 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
|
124 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
|
125 self.session.commit() |
27
bdd1296a4b8c
implemented adding a feed
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
24
diff
changeset
|
126 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
|
127 |
40 | 128 def showPreferences(self): |
42
0c0d1760b737
Rename Preferences to PreferencesDialog
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
40
diff
changeset
|
129 preferences = PreferencesDialog(self.session) |
40 | 130 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
|
131 |
48 | 132 def showFeedSettings(self): |
133 feedSettings = FeedSettings(self.session, self.selectedFeed) | |
134 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
|
135 |
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
|
136 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
|
137 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
|
138 |
90
a1066e5a8f88
save pending changes when quitting the app
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
89
diff
changeset
|
139 def close(self): |
a1066e5a8f88
save pending changes when quitting the app
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
89
diff
changeset
|
140 # 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
|
141 self.session.commit() |
a1066e5a8f88
save pending changes when quitting the app
Dirk Olmes <dirk@xanthippe.ping.de>
parents:
89
diff
changeset
|
142 QMainWindow.close(self) |