--- /dev/null
+# BiaWeb Website content manager (c) 2010 V.Harishankar
+# Database handling functions
+
+import sqlite3
+
+def create_db (dbname, site_title, site_url, keywords, description, copyright,
+ num_rss, dest_path):
+ try:
+ conn = sqlite3.connect (dbname)
+ c = conn.cursor ()
+ c.execute ("CREATE TABLE IF NOT EXISTS \
+ categories (cid INTEGER PRIMARY KEY, \
+ name TEXT, desc TEXT, \
+ stub TEXT);")
+ c.execute ("CREATE TABLE IF NOT EXISTS \
+ articles (aid INTEGER PRIMARY KEY, \
+ title TEXT, summary TEXT, keywords TEXT, \
+ content TEXT, cdate NUMERIC, mdate NUMERIC, cid NUMERIC, \
+ stub TEXT, rating NUMERIC);")
+ c.execute ("CREATE TABLE IF NOT EXISTS \
+ config (config_name TEXT, config_param TEXT);")
+
+ c.execute ("CREATE TABLE IF NOT EXISTS \
+ templates (template_name TEXT, template_content);")
+
+ template_main = """<?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>${site_title}</title>
+ <base href="${site_url}" />
+ <meta name="generator" content="BiaWeb"/>
+ <meta name="keywords" content="${meta_keywords}"/>
+ <meta name="description" content="${meta_description}"/>
+ <link rel="StyleSheet" type="text/css" href="style.css" />
+ <link rel="alternate" type="application/rss+xml" title="Entries RSS 2.0" href="subscribe.xml" />
+ </head>
+ <body>
+ <div id="head">
+ <h1><a href="${site_url}">${page_title}</a></h1>
+ <div class="headerdesc">${page_desc}</div>
+ </div>
+ <div id="main">
+ ${contents_bit}
+ </div>
+ <div id="sidebar">
+ <h2>Categories</h2>
+ ${list_of_categories}
+ <h2>Best rated</h2>
+ ${list_best_rated}
+ <h2>Subscribe</h2>
+ <a href="subscribe.xml">Latest articles (RSS)</a>
+ <h2>Search</h2>
+ <form action="cgi-bin/search.py" method="post" enctype="multipart/form-data">
+ <p><input type="text" name="query" maxlength="255" style="width:142px;border: 1px inset #5A5A5A; color:#5A5A5A; background-color:#FFFFFF;" value="" /><br />
+ <input type="submit" value="Search" /><br />
+ <input type="hidden" name="fromsearch" value="fromsearch" />
+ <input type="radio" name="criteria" value="1" checked="checked" />All words<br />
+ <input type="radio" name="criteria" value="2" />Any word</p>
+ </form>
+ </div>
+ <div id="footer">${copyright}<br />Site generated by
+ <a href=\"http://harishankar.org/software/biaweb.php\">BiaWeb</a> created by V. Harishankar</div>
+ </body>
+ </html>"""
+
+ template_article_bit = """<h2>${article_title}</h2>
+ <div class="modified">Created: ${article_cdate} | Last modified: ${article_mdate}</div>
+ <div class="rating">Rating: ${rating}</div>
+ <div class="content">${article_contents}</div>
+ """
+
+ template_news_item_bit = """<h3><a href="${news_link}">${news_title}</a></h3>
+ <div class="modified">${news_datetime}</div>
+ <div class="content">${news_description}</div>
+ """
+
+ template_index_bit = """<h2>Welcome to ${site_name}</h2>
+ <div class="content">
+ Welcome to my site, ${site_name}.
+ </div>
+ <h2>Latest Articles</h2>
+ ${news_updates}
+ """
+
+ template_table_bit = """<h2>${category_title}</h2>
+ <p>${category_desc}</p>
+ <table class="categorytable">
+ <thead>
+ <tr>
+ <td style="width:50%">Title</td>
+ <td>Created on</td>
+ <td>Rated</td>
+ </tr>
+ </thead>
+ <tbody>
+ ${table_rows}
+ </tbody>
+ </table>
+ """
+
+ template_tablerow_bit = """<tr>
+ <td style="width:50%"><a href="${article_url}">${title}</a></td>
+ <td>${created}</td>
+ <td>${rating}</td>
+ </tr>
+ """
+
+ template_style = """body {
+ font-family: "Bitstream Vera Sans", Verdana, Arial, Sans Serif;
+ font-size: 0.9em;
+ background-color: #ffffff;
+ color: #000000;
+ margin: auto
+ }
+ #head {
+ width: 98%;
+ background-color: #efefef;
+ padding: 1%;
+ text-align: center;
+ }
+
+ #main {
+ width: 73%;
+ padding: 1%;
+ float: left;
+ }
+
+ #sidebar {
+ width: 23%;
+ padding: 1%;
+ float: right;
+ }
+
+ #footer {
+ width: 100%;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ font-size: 0.9em;
+ text-align: center;
+ float: left;
+ background-color: #efefef;
+ }
+
+ .headerdesc {
+ font-variant: small-caps;
+ font-size: 1.1em;
+ }
+
+ .content {
+ text-align: justify;
+ line-height: 1.1em;
+ }
+
+ .categorytable {
+ width: 100%;
+ }
+
+ .categorytable thead {
+ font-weight: bold;
+ }
+
+ .modified {
+ font-size: 0.8em;
+ color: #666666;
+ }
+
+ .rating {
+ font-size: 0.8em;
+ color: #666666;
+ }
+
+ h1, h2, h3 {
+ font-family: "Bitstream Vera Serif", Serif;
+ padding: 0;
+ margin: 0;
+ margin-top: 5px;
+ margin-bottom: 5px;
+ }
+
+ hr {
+ border: 0;
+ border-bottom: 1px solid;
+ border-color: #888888;
+ }
+
+ h1 {
+ font-size: 2.4em;
+ color: #000099;
+
+ }
+ h1 a, h1 a:hover, h1 a:visited, h2 a:active {
+ text-decoration: none;
+ }
+ h2 {
+ font-size: 1.4em;
+ background-color: #efefef;
+ }
+ h2 a, h2 a:hover, h2 a:visited, h2 a:active {
+ text-decoration: none;
+ }
+ h3 {
+ font-size: 1.2em;
+ a {
+ color: #0000dd;
+ }
+ a:visited {
+ color: #0000aa;
+ }
+ a:active, a:hover {
+ color: #0000ff;
+ }"""
+
+ c.executemany ("INSERT INTO templates (template_name, template_content) VALUES (?, ?);",
+ [["main_template", template_main],
+ ["article_bit", template_article_bit],
+ ["news_bit", template_news_item_bit],
+ ["table_bit", template_table_bit],
+ ["tablerow_bit", template_tablerow_bit],
+ ["stylesheet", template_style],
+ ["index_bit", template_index_bit]])
+
+ c.executemany ("INSERT INTO config (config_name, config_param) VALUES (?, ?); ",
+ [["Website URL", site_url],
+ ["Website Title", site_title],
+ ["Keywords", keywords],
+ ["Description", description],
+ ["No. of RSS items", num_rss],
+ ["Destination path", dest_path],
+ ["Copyright", copyright]])
+
+ conn.commit ()
+ conn.close ()
+ return True
+ except sqlite3.Error:
+ return False
import PyQt4
import ui_main_window
import site_configuration_dialog as scd
+import biaweb_db
import sys
class MainWindow (PyQt4.QtGui.QMainWindow, ui_main_window.Ui_MainWindow):
def onFileNew (self):
dlg = scd.SiteConfigDialog (self)
- dlg.exec_ ()
+ if dlg.exec_ () == PyQt4.QtGui.QDialog.Accepted:
+ site_title = str (dlg.site_title.text ()).strip ()
+ site_url = str (dlg.site_url.text ()).strip ()
+ keywords = str (dlg.keywords.text ()).strip ()
+ destination = str (dlg.destination.text ()).strip ()
+ description = str (dlg.description.toPlainText ()).strip ()
+ num_rss = dlg.num_rss_items.value ()
+ copyright = str (dlg.copyright.text ()).strip ()
+
+ savefilename = PyQt4.QtGui.QFileDialog.getSaveFileName (self, "Save site database to")
+
+ if savefilename:
+ self.current_db = savefilename
+ self.setWindowTitle ("BiaWeb - " + self.current_db)
+ flag = biaweb_db.create_db (str (savefilename), site_title, site_url, keywords, description,
+ copyright, num_rss, destination)
+ if flag == True:
+ PyQt4.QtGui.QMessageBox.information (self, "Success",
+ "New site db successfully created")
+ else:
+ PyQt4.QtGui.QMessageBox.critical (self, "Error", "SQLite 3 error in creating database.")
def onFileQuit (self):
sys.exit (0)
</item>
</layout>
</widget>
+ <widget class="QStatusBar" name="statusbar"/>
+ <widget class="QDockWidget" name="dockWidget_2">
+ <property name="floating">
+ <bool>false</bool>
+ </property>
+ <property name="features">
+ <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
+ </property>
+ <property name="windowTitle">
+ <string>Categories</string>
+ </property>
+ <attribute name="dockWidgetArea">
+ <number>1</number>
+ </attribute>
+ <widget class="QWidget" name="dockWidgetContents_2">
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QListWidget" name="categories_list"/>
+ </item>
+ </layout>
+ </widget>
+ </widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<height>25</height>
</rect>
</property>
- <widget class="QMenu" name="menu_File">
- <property name="title">
- <string>&File</string>
- </property>
- <addaction name="actionNew_site"/>
- <addaction name="action_Open_site"/>
- <addaction name="separator"/>
- <addaction name="action_Quit"/>
- </widget>
- <widget class="QMenu" name="menu_Category">
- <property name="title">
- <string>&Category</string>
- </property>
- <addaction name="action_Add"/>
- <addaction name="action_Edit"/>
- <addaction name="action_Delete"/>
- </widget>
- <widget class="QMenu" name="menu_Articles">
- <property name="title">
- <string>&Articles</string>
- </property>
- <addaction name="action_New"/>
- <addaction name="action_Edit_2"/>
- <addaction name="action_Delete_2"/>
- </widget>
- <widget class="QMenu" name="menu_Web">
- <property name="title">
- <string>&Web</string>
- </property>
- <addaction name="action_Generate_Site"/>
- <addaction name="actionGenerate_Search_Index"/>
- </widget>
<widget class="QMenu" name="menu_About">
<property name="title">
<string>&Help</string>
<addaction name="separator"/>
<addaction name="actionTemplates"/>
</widget>
- <addaction name="menu_File"/>
- <addaction name="menu_Category"/>
- <addaction name="menu_Articles"/>
+ <widget class="QMenu" name="menu_Content">
+ <property name="title">
+ <string>&Content</string>
+ </property>
+ <addaction name="action_NewArticle"/>
+ <addaction name="action_EditArticle"/>
+ <addaction name="action_DeleteArticle"/>
+ <addaction name="separator"/>
+ <addaction name="action_AddCategory"/>
+ <addaction name="action_EditCategory"/>
+ <addaction name="action_RemoveCategory"/>
+ </widget>
+ <widget class="QMenu" name="menu_File_2">
+ <property name="title">
+ <string>&File</string>
+ </property>
+ <widget class="QMenu" name="menu_Export_web">
+ <property name="title">
+ <string>&Export web</string>
+ </property>
+ <addaction name="action_Generate_Site"/>
+ <addaction name="actionGenerate_Search_Index"/>
+ </widget>
+ <addaction name="actionNew_site"/>
+ <addaction name="action_Open_site"/>
+ <addaction name="separator"/>
+ <addaction name="menu_Export_web"/>
+ <addaction name="separator"/>
+ <addaction name="action_Quit"/>
+ </widget>
+ <addaction name="menu_File_2"/>
+ <addaction name="menu_Content"/>
<addaction name="menu_Settings"/>
- <addaction name="menu_Web"/>
<addaction name="menu_About"/>
</widget>
- <widget class="QStatusBar" name="statusbar"/>
- <widget class="QDockWidget" name="dockWidget_2">
- <property name="floating">
- <bool>false</bool>
- </property>
- <property name="features">
- <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
- </property>
- <property name="windowTitle">
- <string>Categories</string>
- </property>
- <attribute name="dockWidgetArea">
- <number>1</number>
- </attribute>
- <widget class="QWidget" name="dockWidgetContents_2">
- <layout class="QGridLayout" name="gridLayout_2">
- <item row="0" column="0">
- <widget class="QListWidget" name="categories_list"/>
- </item>
- </layout>
- </widget>
- </widget>
<action name="actionOpen_DB">
<property name="text">
<string>Open existing site...</string>
<string>Quit</string>
</property>
</action>
- <action name="action_Add">
+ <action name="action_AddCategory">
<property name="text">
- <string>&Add...</string>
+ <string>Add &category...</string>
</property>
<property name="statusTip">
<string>Add a new category to the website structure</string>
</property>
</action>
- <action name="action_Edit">
+ <action name="action_EditCategory">
<property name="text">
- <string>&Edit...</string>
+ <string>Edit categ&ory...</string>
</property>
<property name="statusTip">
<string>Edit the selected category</string>
</property>
</action>
- <action name="action_Delete">
+ <action name="action_RemoveCategory">
<property name="text">
- <string>&Delete</string>
+ <string>&Remove category</string>
</property>
<property name="statusTip">
<string>Delete the selected category</string>
</property>
</action>
- <action name="action_New">
+ <action name="action_NewArticle">
<property name="text">
- <string>&Add...</string>
+ <string>&Add article...</string>
</property>
<property name="statusTip">
<string>Add an article to selected category</string>
</property>
</action>
- <action name="action_Edit_2">
+ <action name="action_EditArticle">
<property name="text">
- <string>&Edit...</string>
+ <string>&Edit article...</string>
</property>
<property name="statusTip">
<string>Edit the selected article</string>
</property>
</action>
- <action name="action_Delete_2">
+ <action name="action_DeleteArticle">
<property name="text">
- <string>&Delete</string>
+ <string>&Delete article...</string>
</property>
<property name="statusTip">
<string>Delete the selected article</string>
<string>Modify or revert site templates</string>
</property>
</action>
+ <action name="actionSamth">
+ <property name="text">
+ <string>samth</string>
+ </property>
+ </action>
+ <action name="actionAsasas">
+ <property name="text">
+ <string>asasas</string>
+ </property>
+ </action>
</widget>
<resources/>
<connections>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
<property name="text">
<string>Name of the site</string>
</property>
</item>
<item row="0" column="1" colspan="7">
<widget class="QLineEdit" name="site_title">
+ <property name="whatsThis">
+ <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Title of the site displayed in the header </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">of the generated website. <span style=" font-style:italic;">Required field</span></p></body></html></string>
+ </property>
<property name="text">
<string>My Site</string>
</property>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
<property name="text">
<string>Site URL</string>
</property>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
<property name="text">
<string>Keywords</string>
</property>
</item>
<item row="2" column="1" colspan="7">
<widget class="QLineEdit" name="keywords">
+ <property name="whatsThis">
+ <string>Site keywords. This influences only the main
+site page. Individual articles will have their own
+keywords.</string>
+ </property>
<property name="text">
<string>some keywords here</string>
</property>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
<property name="text">
<string>Description</string>
</property>
</item>
<item row="3" column="1" colspan="7">
<widget class="QPlainTextEdit" name="description">
+ <property name="whatsThis">
+ <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Description. This is displayed below the site title</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">in the generated HTML page. <span style=" font-style:italic;">Required field</span></p></body></html></string>
+ </property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_5">
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
<property name="text">
<string>Export destination</string>
</property>
</widget>
</item>
<item row="5" column="1" colspan="6">
- <widget class="QLineEdit" name="destination"/>
+ <widget class="QLineEdit" name="destination">
+ <property name="whatsThis">
+ <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Desination to generate the HTML output when </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">exported. <span style=" font-style:italic;">Required field</span></p></body></html></string>
+ </property>
+ </widget>
</item>
<item row="5" column="7">
<widget class="QPushButton" name="destination_browse_button">
</item>
<item row="4" column="2">
<widget class="QSpinBox" name="num_rss_items">
+ <property name="whatsThis">
+ <string>Number of items to display in RSS feed for the site.
+The RSS feed is updated every time you create a
+new article and export it to HTML.</string>
+ </property>
<property name="minimum">
<number>1</number>
</property>
</item>
<item row="4" column="4" colspan="4">
<widget class="QLineEdit" name="copyright">
+ <property name="whatsThis">
+ <string>Copyright text displayed on the footer of all
+the generated pages of the website.</string>
+ </property>
<property name="text">
<string>Copyright (C) year, your name here</string>
</property>
</item>
<item row="1" column="2" colspan="6">
<widget class="QLineEdit" name="site_url">
+ <property name="whatsThis">
+ <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">URL of the site without the HTTP part. This is the </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">base href URL when exported and all site links are</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">relative to this. <span style=" font-style:italic;">Required field</span></p></body></html></string>
+ </property>
<property name="text">
<string>example.com</string>
</property>
# Form implementation generated from reading ui file 'main_window.ui'
#
-# Created: Thu Nov 25 18:25:57 2010
+# Created: Fri Nov 26 13:58:47 2010
# by: PyQt4 UI code generator 4.7.4
#
# WARNING! All changes made in this file will be lost!
self.articles_list.setObjectName("articles_list")
self.gridLayout.addWidget(self.articles_list, 1, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
- self.menubar = QtGui.QMenuBar(MainWindow)
- self.menubar.setGeometry(QtCore.QRect(0, 0, 633, 25))
- self.menubar.setObjectName("menubar")
- self.menu_File = QtGui.QMenu(self.menubar)
- self.menu_File.setObjectName("menu_File")
- self.menu_Category = QtGui.QMenu(self.menubar)
- self.menu_Category.setObjectName("menu_Category")
- self.menu_Articles = QtGui.QMenu(self.menubar)
- self.menu_Articles.setObjectName("menu_Articles")
- self.menu_Web = QtGui.QMenu(self.menubar)
- self.menu_Web.setObjectName("menu_Web")
- self.menu_About = QtGui.QMenu(self.menubar)
- self.menu_About.setObjectName("menu_About")
- self.menu_Settings = QtGui.QMenu(self.menubar)
- self.menu_Settings.setObjectName("menu_Settings")
- MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.gridLayout_2.addWidget(self.categories_list, 0, 0, 1, 1)
self.dockWidget_2.setWidget(self.dockWidgetContents_2)
MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidget_2)
+ self.menubar = QtGui.QMenuBar(MainWindow)
+ self.menubar.setGeometry(QtCore.QRect(0, 0, 633, 25))
+ self.menubar.setObjectName("menubar")
+ self.menu_About = QtGui.QMenu(self.menubar)
+ self.menu_About.setObjectName("menu_About")
+ self.menu_Settings = QtGui.QMenu(self.menubar)
+ self.menu_Settings.setObjectName("menu_Settings")
+ self.menu_Content = QtGui.QMenu(self.menubar)
+ self.menu_Content.setObjectName("menu_Content")
+ self.menu_File_2 = QtGui.QMenu(self.menubar)
+ self.menu_File_2.setObjectName("menu_File_2")
+ self.menu_Export_web = QtGui.QMenu(self.menu_File_2)
+ self.menu_Export_web.setObjectName("menu_Export_web")
+ MainWindow.setMenuBar(self.menubar)
self.actionOpen_DB = QtGui.QAction(MainWindow)
self.actionOpen_DB.setObjectName("actionOpen_DB")
self.action_Quit = QtGui.QAction(MainWindow)
self.action_Quit.setObjectName("action_Quit")
- self.action_Add = QtGui.QAction(MainWindow)
- self.action_Add.setObjectName("action_Add")
- self.action_Edit = QtGui.QAction(MainWindow)
- self.action_Edit.setObjectName("action_Edit")
- self.action_Delete = QtGui.QAction(MainWindow)
- self.action_Delete.setObjectName("action_Delete")
- self.action_New = QtGui.QAction(MainWindow)
- self.action_New.setObjectName("action_New")
- self.action_Edit_2 = QtGui.QAction(MainWindow)
- self.action_Edit_2.setObjectName("action_Edit_2")
- self.action_Delete_2 = QtGui.QAction(MainWindow)
- self.action_Delete_2.setObjectName("action_Delete_2")
+ self.action_AddCategory = QtGui.QAction(MainWindow)
+ self.action_AddCategory.setObjectName("action_AddCategory")
+ self.action_EditCategory = QtGui.QAction(MainWindow)
+ self.action_EditCategory.setObjectName("action_EditCategory")
+ self.action_RemoveCategory = QtGui.QAction(MainWindow)
+ self.action_RemoveCategory.setObjectName("action_RemoveCategory")
+ self.action_NewArticle = QtGui.QAction(MainWindow)
+ self.action_NewArticle.setObjectName("action_NewArticle")
+ self.action_EditArticle = QtGui.QAction(MainWindow)
+ self.action_EditArticle.setObjectName("action_EditArticle")
+ self.action_DeleteArticle = QtGui.QAction(MainWindow)
+ self.action_DeleteArticle.setObjectName("action_DeleteArticle")
self.action_Generate_Site = QtGui.QAction(MainWindow)
self.action_Generate_Site.setObjectName("action_Generate_Site")
self.actionGenerate_Search_Index = QtGui.QAction(MainWindow)
self.action_Configuration.setObjectName("action_Configuration")
self.actionTemplates = QtGui.QAction(MainWindow)
self.actionTemplates.setObjectName("actionTemplates")
- self.menu_File.addAction(self.actionNew_site)
- self.menu_File.addAction(self.action_Open_site)
- self.menu_File.addSeparator()
- self.menu_File.addAction(self.action_Quit)
- self.menu_Category.addAction(self.action_Add)
- self.menu_Category.addAction(self.action_Edit)
- self.menu_Category.addAction(self.action_Delete)
- self.menu_Articles.addAction(self.action_New)
- self.menu_Articles.addAction(self.action_Edit_2)
- self.menu_Articles.addAction(self.action_Delete_2)
- self.menu_Web.addAction(self.action_Generate_Site)
- self.menu_Web.addAction(self.actionGenerate_Search_Index)
+ self.actionSamth = QtGui.QAction(MainWindow)
+ self.actionSamth.setObjectName("actionSamth")
+ self.actionAsasas = QtGui.QAction(MainWindow)
+ self.actionAsasas.setObjectName("actionAsasas")
self.menu_About.addAction(self.action_About)
self.menu_Settings.addAction(self.action_Configuration)
self.menu_Settings.addSeparator()
self.menu_Settings.addAction(self.actionTemplates)
- self.menubar.addAction(self.menu_File.menuAction())
- self.menubar.addAction(self.menu_Category.menuAction())
- self.menubar.addAction(self.menu_Articles.menuAction())
+ self.menu_Content.addAction(self.action_NewArticle)
+ self.menu_Content.addAction(self.action_EditArticle)
+ self.menu_Content.addAction(self.action_DeleteArticle)
+ self.menu_Content.addSeparator()
+ self.menu_Content.addAction(self.action_AddCategory)
+ self.menu_Content.addAction(self.action_EditCategory)
+ self.menu_Content.addAction(self.action_RemoveCategory)
+ self.menu_Export_web.addAction(self.action_Generate_Site)
+ self.menu_Export_web.addAction(self.actionGenerate_Search_Index)
+ self.menu_File_2.addAction(self.actionNew_site)
+ self.menu_File_2.addAction(self.action_Open_site)
+ self.menu_File_2.addSeparator()
+ self.menu_File_2.addAction(self.menu_Export_web.menuAction())
+ self.menu_File_2.addSeparator()
+ self.menu_File_2.addAction(self.action_Quit)
+ self.menubar.addAction(self.menu_File_2.menuAction())
+ self.menubar.addAction(self.menu_Content.menuAction())
self.menubar.addAction(self.menu_Settings.menuAction())
- self.menubar.addAction(self.menu_Web.menuAction())
self.menubar.addAction(self.menu_About.menuAction())
self.retranslateUi(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "BiaWeb - Static Website Content Manager", None, QtGui.QApplication.UnicodeUTF8))
self.label_2.setText(QtGui.QApplication.translate("MainWindow", "Articles in category", None, QtGui.QApplication.UnicodeUTF8))
- self.menu_File.setTitle(QtGui.QApplication.translate("MainWindow", "&File", None, QtGui.QApplication.UnicodeUTF8))
- self.menu_Category.setTitle(QtGui.QApplication.translate("MainWindow", "&Category", None, QtGui.QApplication.UnicodeUTF8))
- self.menu_Articles.setTitle(QtGui.QApplication.translate("MainWindow", "&Articles", None, QtGui.QApplication.UnicodeUTF8))
- self.menu_Web.setTitle(QtGui.QApplication.translate("MainWindow", "&Web", None, QtGui.QApplication.UnicodeUTF8))
+ self.dockWidget_2.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Categories", None, QtGui.QApplication.UnicodeUTF8))
self.menu_About.setTitle(QtGui.QApplication.translate("MainWindow", "&Help", None, QtGui.QApplication.UnicodeUTF8))
self.menu_Settings.setTitle(QtGui.QApplication.translate("MainWindow", "&Settings", None, QtGui.QApplication.UnicodeUTF8))
- self.dockWidget_2.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Categories", None, QtGui.QApplication.UnicodeUTF8))
+ self.menu_Content.setTitle(QtGui.QApplication.translate("MainWindow", "&Content", None, QtGui.QApplication.UnicodeUTF8))
+ self.menu_File_2.setTitle(QtGui.QApplication.translate("MainWindow", "&File", None, QtGui.QApplication.UnicodeUTF8))
+ self.menu_Export_web.setTitle(QtGui.QApplication.translate("MainWindow", "&Export web", None, QtGui.QApplication.UnicodeUTF8))
self.actionOpen_DB.setText(QtGui.QApplication.translate("MainWindow", "Open existing site...", None, QtGui.QApplication.UnicodeUTF8))
self.action_Quit.setText(QtGui.QApplication.translate("MainWindow", "&Quit", None, QtGui.QApplication.UnicodeUTF8))
self.action_Quit.setStatusTip(QtGui.QApplication.translate("MainWindow", "Quit", None, QtGui.QApplication.UnicodeUTF8))
- self.action_Add.setText(QtGui.QApplication.translate("MainWindow", "&Add...", None, QtGui.QApplication.UnicodeUTF8))
- self.action_Add.setStatusTip(QtGui.QApplication.translate("MainWindow", "Add a new category to the website structure", None, QtGui.QApplication.UnicodeUTF8))
- self.action_Edit.setText(QtGui.QApplication.translate("MainWindow", "&Edit...", None, QtGui.QApplication.UnicodeUTF8))
- self.action_Edit.setStatusTip(QtGui.QApplication.translate("MainWindow", "Edit the selected category", None, QtGui.QApplication.UnicodeUTF8))
- self.action_Delete.setText(QtGui.QApplication.translate("MainWindow", "&Delete", None, QtGui.QApplication.UnicodeUTF8))
- self.action_Delete.setStatusTip(QtGui.QApplication.translate("MainWindow", "Delete the selected category", None, QtGui.QApplication.UnicodeUTF8))
- self.action_New.setText(QtGui.QApplication.translate("MainWindow", "&Add...", None, QtGui.QApplication.UnicodeUTF8))
- self.action_New.setStatusTip(QtGui.QApplication.translate("MainWindow", "Add an article to selected category", None, QtGui.QApplication.UnicodeUTF8))
- self.action_Edit_2.setText(QtGui.QApplication.translate("MainWindow", "&Edit...", None, QtGui.QApplication.UnicodeUTF8))
- self.action_Edit_2.setStatusTip(QtGui.QApplication.translate("MainWindow", "Edit the selected article", None, QtGui.QApplication.UnicodeUTF8))
- self.action_Delete_2.setText(QtGui.QApplication.translate("MainWindow", "&Delete", None, QtGui.QApplication.UnicodeUTF8))
- self.action_Delete_2.setStatusTip(QtGui.QApplication.translate("MainWindow", "Delete the selected article", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_AddCategory.setText(QtGui.QApplication.translate("MainWindow", "Add &category...", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_AddCategory.setStatusTip(QtGui.QApplication.translate("MainWindow", "Add a new category to the website structure", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_EditCategory.setText(QtGui.QApplication.translate("MainWindow", "Edit categ&ory...", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_EditCategory.setStatusTip(QtGui.QApplication.translate("MainWindow", "Edit the selected category", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_RemoveCategory.setText(QtGui.QApplication.translate("MainWindow", "&Remove category", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_RemoveCategory.setStatusTip(QtGui.QApplication.translate("MainWindow", "Delete the selected category", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_NewArticle.setText(QtGui.QApplication.translate("MainWindow", "&Add article...", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_NewArticle.setStatusTip(QtGui.QApplication.translate("MainWindow", "Add an article to selected category", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_EditArticle.setText(QtGui.QApplication.translate("MainWindow", "&Edit article...", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_EditArticle.setStatusTip(QtGui.QApplication.translate("MainWindow", "Edit the selected article", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_DeleteArticle.setText(QtGui.QApplication.translate("MainWindow", "&Delete article...", None, QtGui.QApplication.UnicodeUTF8))
+ self.action_DeleteArticle.setStatusTip(QtGui.QApplication.translate("MainWindow", "Delete the selected article", None, QtGui.QApplication.UnicodeUTF8))
self.action_Generate_Site.setText(QtGui.QApplication.translate("MainWindow", "Generate &Site...", None, QtGui.QApplication.UnicodeUTF8))
self.action_Generate_Site.setStatusTip(QtGui.QApplication.translate("MainWindow", "Export the site into a directory structure with static HTML files", None, QtGui.QApplication.UnicodeUTF8))
self.actionGenerate_Search_Index.setText(QtGui.QApplication.translate("MainWindow", "Generate Search &Index...", None, QtGui.QApplication.UnicodeUTF8))
self.action_Configuration.setStatusTip(QtGui.QApplication.translate("MainWindow", "Modify the site configuration", None, QtGui.QApplication.UnicodeUTF8))
self.actionTemplates.setText(QtGui.QApplication.translate("MainWindow", "Templates...", None, QtGui.QApplication.UnicodeUTF8))
self.actionTemplates.setStatusTip(QtGui.QApplication.translate("MainWindow", "Modify or revert site templates", None, QtGui.QApplication.UnicodeUTF8))
+ self.actionSamth.setText(QtGui.QApplication.translate("MainWindow", "samth", None, QtGui.QApplication.UnicodeUTF8))
+ self.actionAsasas.setText(QtGui.QApplication.translate("MainWindow", "asasas", None, QtGui.QApplication.UnicodeUTF8))
# Form implementation generated from reading ui file 'site_configuration_dialog.ui'
#
-# Created: Thu Nov 25 18:49:44 2010
+# Created: Fri Nov 26 13:38:43 2010
# by: PyQt4 UI code generator 4.7.4
#
# WARNING! All changes made in this file will be lost!
self.gridLayout = QtGui.QGridLayout(SiteConfigDialog)
self.gridLayout.setObjectName("gridLayout")
self.label = QtGui.QLabel(SiteConfigDialog)
+ font = QtGui.QFont()
+ font.setWeight(75)
+ font.setBold(True)
+ self.label.setFont(font)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.site_title = QtGui.QLineEdit(SiteConfigDialog)
self.site_title.setObjectName("site_title")
self.gridLayout.addWidget(self.site_title, 0, 1, 1, 7)
self.label_2 = QtGui.QLabel(SiteConfigDialog)
+ font = QtGui.QFont()
+ font.setWeight(75)
+ font.setBold(True)
+ self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
self.label_3 = QtGui.QLabel(SiteConfigDialog)
+ font = QtGui.QFont()
+ font.setWeight(75)
+ font.setBold(True)
+ self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
self.keywords = QtGui.QLineEdit(SiteConfigDialog)
self.keywords.setObjectName("keywords")
self.gridLayout.addWidget(self.keywords, 2, 1, 1, 7)
self.label_4 = QtGui.QLabel(SiteConfigDialog)
+ font = QtGui.QFont()
+ font.setWeight(75)
+ font.setBold(True)
+ self.label_4.setFont(font)
self.label_4.setObjectName("label_4")
self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1)
self.description = QtGui.QPlainTextEdit(SiteConfigDialog)
self.label_6.setObjectName("label_6")
self.gridLayout.addWidget(self.label_6, 4, 0, 1, 2)
self.label_5 = QtGui.QLabel(SiteConfigDialog)
+ font = QtGui.QFont()
+ font.setWeight(75)
+ font.setBold(True)
+ self.label_5.setFont(font)
self.label_5.setObjectName("label_5")
self.gridLayout.addWidget(self.label_5, 5, 0, 1, 1)
self.destination = QtGui.QLineEdit(SiteConfigDialog)
def retranslateUi(self, SiteConfigDialog):
SiteConfigDialog.setWindowTitle(QtGui.QApplication.translate("SiteConfigDialog", "Site Configuration", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("SiteConfigDialog", "Name of the site", None, QtGui.QApplication.UnicodeUTF8))
+ self.site_title.setWhatsThis(QtGui.QApplication.translate("SiteConfigDialog", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
+"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
+"p, li { white-space: pre-wrap; }\n"
+"</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Title of the site displayed in the header </p>\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">of the generated website. <span style=\" font-style:italic;\">Required field</span></p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
self.site_title.setText(QtGui.QApplication.translate("SiteConfigDialog", "My Site", None, QtGui.QApplication.UnicodeUTF8))
self.label_2.setText(QtGui.QApplication.translate("SiteConfigDialog", "Site URL", None, QtGui.QApplication.UnicodeUTF8))
self.label_3.setText(QtGui.QApplication.translate("SiteConfigDialog", "Keywords", None, QtGui.QApplication.UnicodeUTF8))
+ self.keywords.setWhatsThis(QtGui.QApplication.translate("SiteConfigDialog", "Site keywords. This influences only the main\n"
+"site page. Individual articles will have their own\n"
+"keywords.", None, QtGui.QApplication.UnicodeUTF8))
self.keywords.setText(QtGui.QApplication.translate("SiteConfigDialog", "some keywords here", None, QtGui.QApplication.UnicodeUTF8))
self.label_4.setText(QtGui.QApplication.translate("SiteConfigDialog", "Description", None, QtGui.QApplication.UnicodeUTF8))
+ self.description.setWhatsThis(QtGui.QApplication.translate("SiteConfigDialog", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
+"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
+"p, li { white-space: pre-wrap; }\n"
+"</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Description. This is displayed below the site title</p>\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">in the generated HTML page. <span style=\" font-style:italic;\">Required field</span></p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
self.description.setPlainText(QtGui.QApplication.translate("SiteConfigDialog", "Your site\'s description here. This appears in the site header.", None, QtGui.QApplication.UnicodeUTF8))
self.label_6.setText(QtGui.QApplication.translate("SiteConfigDialog", "# of RSS feed items", None, QtGui.QApplication.UnicodeUTF8))
self.label_5.setText(QtGui.QApplication.translate("SiteConfigDialog", "Export destination", None, QtGui.QApplication.UnicodeUTF8))
+ self.destination.setWhatsThis(QtGui.QApplication.translate("SiteConfigDialog", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
+"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
+"p, li { white-space: pre-wrap; }\n"
+"</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Desination to generate the HTML output when </p>\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">exported. <span style=\" font-style:italic;\">Required field</span></p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
self.destination_browse_button.setText(QtGui.QApplication.translate("SiteConfigDialog", "browse...", None, QtGui.QApplication.UnicodeUTF8))
self.label_8.setText(QtGui.QApplication.translate("SiteConfigDialog", "http://", None, QtGui.QApplication.UnicodeUTF8))
+ self.num_rss_items.setWhatsThis(QtGui.QApplication.translate("SiteConfigDialog", "Number of items to display in RSS feed for the site.\n"
+"The RSS feed is updated every time you create a \n"
+"new article and export it to HTML.", None, QtGui.QApplication.UnicodeUTF8))
+ self.copyright.setWhatsThis(QtGui.QApplication.translate("SiteConfigDialog", "Copyright text displayed on the footer of all\n"
+"the generated pages of the website.", None, QtGui.QApplication.UnicodeUTF8))
self.copyright.setText(QtGui.QApplication.translate("SiteConfigDialog", "Copyright (C) year, your name here", None, QtGui.QApplication.UnicodeUTF8))
self.label_7.setText(QtGui.QApplication.translate("SiteConfigDialog", "Copyright text", None, QtGui.QApplication.UnicodeUTF8))
+ self.site_url.setWhatsThis(QtGui.QApplication.translate("SiteConfigDialog", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
+"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
+"p, li { white-space: pre-wrap; }\n"
+"</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">URL of the site without the HTTP part. This is the </p>\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">base href URL when exported and all site links are</p>\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">relative to this. <span style=\" font-style:italic;\">Required field</span></p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
self.site_url.setText(QtGui.QApplication.translate("SiteConfigDialog", "example.com", None, QtGui.QApplication.UnicodeUTF8))