New site functionality implemented
authorHarishankar <v.harishankar@gmail.com>
Fri, 26 Nov 2010 08:33:28 +0000 (14:03 +0530)
committerHarishankar <v.harishankar@gmail.com>
Fri, 26 Nov 2010 08:33:28 +0000 (14:03 +0530)
* Added full functionality for the new site
dialog box.
* Re-organized application menus.

biaweb_db.py [new file with mode: 0644]
main_window.py
main_window.ui
site_configuration_dialog.ui
ui_main_window.py
ui_site_configuration_dialog.py

diff --git a/biaweb_db.py b/biaweb_db.py
new file mode 100644 (file)
index 0000000..9be184d
--- /dev/null
@@ -0,0 +1,236 @@
+# 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
index 6a856bb..3632075 100644 (file)
@@ -4,6 +4,7 @@
 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):
@@ -14,7 +15,27 @@ 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)
index 451959c..6d83adb 100644 (file)
     </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>&amp;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>&amp;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>&amp;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>&amp;Web</string>
-    </property>
-    <addaction name="action_Generate_Site"/>
-    <addaction name="actionGenerate_Search_Index"/>
-   </widget>
    <widget class="QMenu" name="menu_About">
     <property name="title">
      <string>&amp;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>&amp;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>&amp;File</string>
+    </property>
+    <widget class="QMenu" name="menu_Export_web">
+     <property name="title">
+      <string>&amp;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>&amp;Add...</string>
+    <string>Add &amp;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>&amp;Edit...</string>
+    <string>Edit categ&amp;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>&amp;Delete</string>
+    <string>&amp;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>&amp;Add...</string>
+    <string>&amp;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>&amp;Edit...</string>
+    <string>&amp;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>&amp;Delete</string>
+    <string>&amp;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>
index 0b74288..49dc7dd 100644 (file)
   <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>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Title of the site displayed in the header &lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;of the generated website. &lt;span style=&quot; font-style:italic;&quot;&gt;Required field&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Description. This is displayed below the site title&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;in the generated HTML page. &lt;span style=&quot; font-style:italic;&quot;&gt;Required field&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Desination to generate the HTML output when &lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;exported. &lt;span style=&quot; font-style:italic;&quot;&gt;Required field&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;URL of the site without the HTTP part. This is the &lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;base href URL when exported and all site links are&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;relative to this. &lt;span style=&quot; font-style:italic;&quot;&gt;Required field&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
      <property name="text">
       <string>example.com</string>
      </property>
index ef57651..3b83164 100644 (file)
@@ -2,7 +2,7 @@
 
 # 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!
@@ -24,22 +24,6 @@ class Ui_MainWindow(object):
         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)
@@ -56,22 +40,36 @@ class Ui_MainWindow(object):
         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)
@@ -86,27 +84,32 @@ class Ui_MainWindow(object):
         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)
@@ -117,28 +120,27 @@ class Ui_MainWindow(object):
     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))
@@ -153,4 +155,6 @@ class Ui_MainWindow(object):
         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))
 
index a26be9e..f230ebc 100644 (file)
@@ -2,7 +2,7 @@
 
 # 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!
@@ -18,21 +18,37 @@ class Ui_SiteConfigDialog(object):
         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)
@@ -44,6 +60,10 @@ class Ui_SiteConfigDialog(object):
         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)
@@ -92,17 +112,50 @@ class Ui_SiteConfigDialog(object):
     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))