X-Git-Url: https://harishankar.org/repos/?p=biaweb_qt.git;a=blobdiff_plain;f=main_window.py;h=799fdf8b02d10a6b317fc82f03e97131fc390b68;hp=6f033d6af2cb88fd19500cc268dc41f5b3aa6f6b;hb=cd074c8da38f6cc0ad808783ca7e631967dfdd47;hpb=e897998f0634d3518f069846c62592fe43dc63bf diff --git a/main_window.py b/main_window.py index 6f033d6..799fdf8 100644 --- a/main_window.py +++ b/main_window.py @@ -2,12 +2,15 @@ # Main Window class import PyQt4 +import sys + import ui_main_window import site_configuration_dialog as scd import category_dialog as catd import article_dialog as artd +import templates_dialog as tpld +import generate_dialog as gend import biaweb_db -import sys class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow): def __init__ (self): @@ -18,26 +21,35 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow): # refresh the category list def repopulate_categories (self): recs = biaweb_db.get_categories (self.current_db) - if not recs: + + # check with False because None is returned when no records exist + if recs == False: PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in getting the categories") - return + return False self.categories.clear () for (id, name, desc, stub) in recs: qrow = PyQt4.QtGui.QTreeWidgetItem ([str(id), str(name)]) self.categories.addTopLevelItem (qrow) + # return true when successful + return True + # refresh the articles list def repopulate_articles (self, catid=None): recs = biaweb_db.get_articles (self.current_db, catid) - if not recs: + + # check with False because None is returned when no records exist + if recs == False: PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in getting the articles") - return + return False self.articles.clear () for item in recs: qrow = PyQt4.QtGui.QTreeWidgetItem ([str(item[0]), str(item[1])]) self.articles.addTopLevelItem (qrow) + # return true when successful + return True # when the view is refreshed def onViewRefresh (self): @@ -172,7 +184,7 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow): catid = self.get_selected_item_id (self.categories) self.repopulate_articles (catid) - # when configuration menu is activated + # when configuration menu is triggered def onConfiguration (self): if self.current_db is None: PyQt4.QtGui.QMessageBox.critical (self, "Error", @@ -210,6 +222,15 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow): PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in updating configuration") + # when templates menu is triggered + def onTemplates (self): + if self.current_db is None: + PyQt4.QtGui.QMessageBox.critical (self, "Error", + "Cannot edit templates. You need to create or open a website first") + else: + tdlg = tpld.TemplatesDialog (self, self.current_db) + tdlg.exec_ () + # function to get the category or article ID from current selected item in a tree widget def get_selected_item_id (self, twidget): selitems = twidget.selectedItems () @@ -314,9 +335,21 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow): filename = PyQt4.QtGui.QFileDialog.getOpenFileName (self, "Open Site Database") if filename: self.current_db = str (filename) - self.setWindowTitle ("BiaWeb - " + self.current_db) - self.repopulate_categories () - self.repopulate_articles () + + # added to check whether categories are loaded successfully or not + # if not, then reset the current_db to None + loaded_cats = self.repopulate_categories () + loaded_arts = self.repopulate_articles () + # if failed in loading either categories or articles (note: checking against + # False and not None) + if loaded_cats == False or loaded_arts == False: + self.current_db = None + PyQt4.QtGui.QMessageBox.critical (self, "Error", + "SQLite 3 error in loading site database. This appears to be an invalid BiaWeb database") + else: + # set the window title to the database + self.setWindowTitle ("BiaWeb - " + self.current_db) + # file new menu is clicked def onFileNew (self): @@ -347,6 +380,23 @@ class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow): else: PyQt4.QtGui.QMessageBox.critical (self, "Error", "System or SQLite 3 error in creating database") + # when generate site menu is triggered + def onGenerateSite (self): + if self.current_db is None: + PyQt4.QtGui.QMessageBox.critical (self, "Error", + "Cannot generate site. You need to create or open a website first") + else: + # run the generate site dialog + gendlg = gend.GenerateDialog (self, self.current_db) + gendlg.exec_ () + + # about menu is triggered + def onAbout (self): + PyQt4.QtGui.QMessageBox.about (self, "BiaWeb Qt", + "A static website/weblog content management system

\ +Copyright © 2010 Harishankar
\ +Licensed under GNU/GPL v3") + # file quit is clicked def onFileQuit (self): sys.exit (0)