예제 #1
0
파일: main.py 프로젝트: kiowa/newsfix
    def setupGui(self):
        self.app = QApplication(sys.argv)
        self.loginWindow = QDialog()

        self.window = QMainWindow()
        self.window.setWindowIcon(QIcon("icons/Newspaper-Feed.ico"))
        self.mainWindow = Ui_MainWindow()
        self.mainWindow.setupUi(self.window)

        self.loginDialog = Ui_LoginDialog()
        self.loginDialog.setupUi(self.loginWindow)    
        self.setupPrinters()
        self.setupSettings()
예제 #2
0
파일: main.py 프로젝트: kiowa/newsfix
class Main:    
    def main(self):
        self.reader = GoogleReader.reader.GoogleReader()
        self.setupGui()
        self.setupSignals()
        self.showGui()
        sys.exit(self.app.exec_())

    def setupGui(self):
        self.app = QApplication(sys.argv)
        self.loginWindow = QDialog()

        self.window = QMainWindow()
        self.window.setWindowIcon(QIcon("icons/Newspaper-Feed.ico"))
        self.mainWindow = Ui_MainWindow()
        self.mainWindow.setupUi(self.window)

        self.loginDialog = Ui_LoginDialog()
        self.loginDialog.setupUi(self.loginWindow)    
        self.setupPrinters()
        self.setupSettings()
        #self.loginWindow.setParent(self.window)

    def setupSettings(self):
        pass

    def setupPrinters(self):
        printers = QPrinterInfo.availablePrinters()
        self.printerModel = QStandardItemModel()
        count = 0
        for p in printers:
            item = QStandardItem(p.printerName())
            item._printer = p
            self.printerModel.appendRow(item)
            if (p.isDefault()):
                defaultIndex = count
        self.mainWindow.printerList.setModel(self.printerModel)
        self.mainWindow.printerList.setCurrentIndex(defaultIndex)
        
    def getSelectedPrinter(self):
        index = self.mainWindow.printerList.currentIndex()
        item = self.printerModel.item(index)
        printerInfo = item._printer
        printer = QPrinter(printerInfo)
        return printer
        
    def showGui(self):
        self.window.show()
        self.loginWindow.exec_()
        

    def slotLogin(self):
        username = self.loginDialog.emailAddress.text()
        password = self.loginDialog.password.text()
        self.reader.identify(username, password)
        if (self.reader.login()):
            self.loginWindow.accept()
            #self.getTags()
            self.getSubscriptions()
        else:
            self.loginDialog.errorLabel.setText("Login failed")

    def setupSignals(self):
        QObject.connect(self.loginDialog.loginButton, SIGNAL("clicked()"), self.slotLogin)
        QObject.connect(self.mainWindow.previewButton, SIGNAL("clicked()"), self.slotPreview)
        QObject.connect(self.mainWindow.printButton, SIGNAL("clicked()"), self.slotPrint)
    
    def slotPrint(self):
        self.createHtml()
        self.createPreview()
        self.webFrame.print_(self.getSelectedPrinter())
        if (self.mainWindow.markReadItems.isChecked()):
            self.markPrintedArticlesAsRead()
        
    
    def slotPreview(self):
        self.createHtml()
        self.createPreview()
        self.showPreview()


    def markPrintedArticlesAsRead(self):
        for entry in self.unread:
            print "Marking entry as read: %s" % entry
            self.reader.set_read(entry['google_id'])
        

    def getEntries(self):
        content = []
        sub_ids = self.getCheckedSubscriptions()
        maxArts = self.mainWindow.maxArticles.value()
        for i in sub_ids:
            feed = self.reader.get_feed(feed = i, exclude_target=CONST.ATOM_STATE_READ, count = maxArts)
            entries = feed.get_entries()
            while True:
                try:
                    entry = entries.next()
                    content.append(entry)
                except StopIteration:
                    break
        return content


    def createHtml(self):
        self.unread = []
        html = u"<html><head></head><body>"
        for entry in self.getEntries():
            html = html + u"<h1>%s</h1>" % entry["title"]
            html = html + u"<i>%s %s</i><br />" % (entry["author"], entry["link"])
            html = html + entry["content"]
            self.unread.append(entry)
        html = html + u"</body></html>"
        self.html = html


        
    def createPreview(self):
        self.webFrame = QWebView()
        self.webFrame.setHtml(self.html)
    
    def showPreview(self):        
        self.webFrame.show()

        
    def getSubscriptions(self):
        self.subModel = QStandardItemModel()
        subs = self.reader.get_subscription_list()['subscriptions']
        for s in subs:
            label = s['title']
            sub_id = s['id']
            item = QStandardItem(label)
            item.sub_id = sub_id
            item.setCheckable(True)
            self.subModel.appendRow(item)
        self.mainWindow.labelList.setModel(self.subModel)

    def getCheckedSubscriptions(self):
        subs = []
        for i in range(self.subModel.rowCount()):
            item = self.subModel.item(i)
            if (item.checkState() == Qt.Checked):
                subs.append(item.sub_id)
        return subs