import os
from os import mkdir, remove, stat, environ
from os.path import isfile, isdir, exists
+import codecs
+from gconf import client_get_default
# Comment the line below if you don't want to use OpenGL for QML rendering or if it is not supported
from PySide import QtOpenGL, QtCore
#CONFIGDIR = "/home/user/.feedingit"
import logging
-#logger = logging.getLogger(__name__)
+logger = logging.getLogger(__name__)
import debugging
debugging.init(dot_directory=".feedingit", program_name="feedingit-pyside")
def getArticle(self, key, article):
feed = listing.getFeed(key)
try:
- file = open(feed.getContentLink(article))
+ file = codecs.open(feed.getContentLink(article), "r", "utf-8")
html = file.read().replace("body", "body bgcolor='#ffffff'", 1)
file.close()
except:
- html = "<html><body>Error retrieving article</body></html>"
+ html = u"<html><body>Error retrieving article</body></html>"
return html
@QtCore.Slot(str, result=str)
@QtCore.Slot(str,result=str)
def getArticlesXml(self, key):
#onlyUnread = arguments.get("onlyUnread","False")
- return self._handler.generateArticlesXml(key, "False")
+ return self._handler.generateArticlesXml(key, config.getHideReadArticles())
@QtCore.Slot(result=str)
def getCategoryXml(self):
@QtCore.Slot()
def updateAll(self):
- for feed in listing.getSortedListOfKeys("Manual"):
- listing.updateFeed(feed)
-
+ for catid in listing.getListOfCategories():
+ for feed in listing.getSortedListOfKeys("Manual", category=catid):
+ listing.updateFeed(feed)
+
+ @QtCore.Slot(str)
+ def updateCategory(self, catid):
+ for feed in listing.getSortedListOfKeys("Manual", category=catid):
+ listing.updateFeed(feed)
+
@QtCore.Slot(str,str,str)
def addFeed(self, title, url, catid):
listing.addFeed(title,url, category=catid)
listing.addCategory(name)
@QtCore.Slot(str)
+ def removeFeed(self, key):
+ listing.removeFeed(key)
+
+ @QtCore.Slot(str)
+ def removeCategory(self, catid):
+ listing.removeCategory(catid)
+
+ @QtCore.Slot(str)
def markAllAsRead(self, key):
feed = listing.getFeed(key)
feed.markAllAsRead()
if (item == "hideReadArticles"):
return "False"
return ""
+
+ @QtCore.Slot(str, str)
+ def populateFileDialog(self, path, type):
+ import glob
+ import os.path
+ for file in glob.glob(path+type):
+ logger.debug(file)
+ root.addFileNotification(file, os.path.basename(file))
+
+ @QtCore.Slot(str, result=int)
+ def importOpml(self, filename):
+ from opml_lib import parseOpml
+ file = open(filename, "r")
+ feeds = parseOpml(file.read())
+ file.close()
+ for (title, url) in feeds:
+ listing.addFeed(title, url)
+ return len(feeds)
+
+ @QtCore.Slot(str, result=str)
+ def exportOpml(self, filename="/home/user/MyDocs/feedingit-export.opml"):
+ logger.debug("ExportOpmlData: %s" % filename)
+ from opml_lib import getOpmlText
+ try:
+ str = getOpmlText(listing)
+ file = open(filename, "w")
+ file.write(str)
+ file.close()
+ return filename
+ except:
+ logger.debug("Error exporting: %s" % filename)
+ return "error"
+
+ @QtCore.Slot(str, result=bool)
+ def getBooleanSetting(self, setting):
+ if (setting == "theme"):
+ return config.getTheme()
+ elif (setting == "imageCache" ):
+ return config.getImageCache()
+ elif (setting == "hideReadFeeds"):
+ return config.getHideReadFeeds()
+ elif (setting == "hideReadArticles"):
+ return config.getHideReadArticles()
+ else:
+ return 'True'
+
+ @QtCore.Slot(str, bool)
+ def setBooleanSetting(self, setting, value):
+ if (setting == "theme"):
+ config.setTheme(value)
+ elif (setting == "imageCache" ):
+ config.setImageCache(value)
+ elif (setting == "hideReadFeeds"):
+ config.setHideReadFeeds(value)
+ elif (setting == "hideReadArticles"):
+ config.setHideReadArticles(value)
+ config.saveConfig()
def main():
controller = Controller(listing)
+ global root
rc = view.rootContext()
rc.setContextProperty('controller', controller)
view.setSource(os.path.join('qml','main.qml'))
view.show()
#view.setSource(os.path.join('qml','FeedingIt.qml'))
+ root = view.rootObject()
#view.showFullScreen()
#view.show()