Website exporter in progress - completed home page
[biaweb_qt.git] / generate_dialog.py
1 # BiaWeb Website content manager (c) 2010 V.Harishankar
2 # Generate site dialog
3
4 import PyQt4
5 import os
6 import os.path
7 import ui_generate_dialog
8 import biaweb_exporter
9
10 class GenerateDialog (PyQt4.QtGui.QDialog, ui_generate_dialog.Ui_SiteGenerateDialog):
11 def __init__ (self, master, currentdb):
12 PyQt4.QtGui.QDialog.__init__ (self, master)
13 self.setupUi (self)
14
15 # set the database
16 self.current_db = currentdb
17
18 # to return the list of items from a tree widget
19 def get_list_from_tree (self, treewidget):
20 lstfiles = []
21 iter = PyQt4.QtGui.QTreeWidgetItemIterator (treewidget)
22
23 # iterate through the list of files
24 item = iter.value ()
25 # while there is still a valid item
26 while item:
27 # get the text in columns 0 and 1
28 src = str (item.text (0))
29 dst = str (item.text (1))
30 # add it to the list
31 lstfiles.append ( (src, dst) )
32 # increase iterator by 1
33 iter += 1
34 item = iter.value ()
35
36 return lstfiles
37
38 # when site generate button is clicked
39 def onSiteGenerate (self):
40 files_list = self.get_list_from_tree (self.additional_files)
41 folder_list = self.get_list_from_tree (self.additional_folders)
42 if self.fulltextindex.isChecked ():
43 searchtype = True
44 else:
45 searchtype = False
46
47 # confirm whether to delete the destination tree and work afresh
48 ans = PyQt4.QtGui.QMessageBox.question (self, "Confirm",
49 "This will delete the destination tree completely \
50 and recreate the website. Are you sure you wish to proceed?",
51 PyQt4.QtGui.QMessageBox.Yes, PyQt4.QtGui.QMessageBox.No)
52
53 # if confirmed
54 if ans == PyQt4.QtGui.QMessageBox.Yes:
55 # call the main exporter to do our work
56 ret = biaweb_exporter.generate_site (self.current_db, files_list, folder_list, searchtype)
57
58 # if failed to generate site or any part thereof
59 if ret == False:
60 PyQt4.QtGui.QMessageBox.critical (self, "Error",
61 "System or SQLite 3 error in generating website or parts thereof")
62 else:
63 PyQt4.QtGui.QMessageBox.information (self, "Success",
64 "Successfully generated website in destination path!")
65
66 # when folder add is clicked
67 def onFolderAdd (self):
68 folder_to_add = PyQt4.QtGui.QFileDialog.getExistingDirectory (self,
69 "Folder whose contents to add to destination", os.path.expanduser ("~"))
70 # if cancelled return
71 if not folder_to_add:
72 return
73
74 dest_rel_path, ok = PyQt4.QtGui.QInputDialog.getText (self, "Desination",
75 "Copy to location (within destination path)")
76 if not ok:
77 return
78
79 folderitem = PyQt4.QtGui.QTreeWidgetItem ([folder_to_add, dest_rel_path])
80 self.additional_folders.addTopLevelItem (folderitem)
81
82 # when folder remove is clicked
83 def onFolderRemove (self):
84 selitem = self.additional_folders.currentItem ()
85 selindex = self.additional_folders.indexOfTopLevelItem (selitem)
86 # if none selected
87 if selindex == -1:
88 return
89 self.additional_folders.takeTopLevelItem (selindex)
90
91
92 # when file add is clicked
93 def onFileAdd (self):
94 file_to_add = PyQt4.QtGui.QFileDialog.getOpenFileName (self, "File to add to destination",
95 os.path.expanduser ("~"))
96 # if cancelled return
97 if not file_to_add:
98 return
99 dest_rel_path, ok = PyQt4.QtGui.QInputDialog.getText (self, "Destination",
100 "Copy to location (within destination path)")
101 if not ok:
102 return
103
104 fileitem = PyQt4.QtGui.QTreeWidgetItem ([file_to_add, dest_rel_path])
105 self.additional_files.addTopLevelItem (fileitem)
106
107 # when file remove is clicked
108 def onFileRemove (self):
109 selitem = self.additional_files.currentItem ()
110 selindex = self.additional_files.indexOfTopLevelItem (selitem)
111 # if none selected
112 if selindex == -1:
113 return
114 self.additional_files.takeTopLevelItem (selindex)