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)