Jürgen Spitzmüller wrote:
> So here's my take on implementing a gui.

Take this one rather.

Jürgen
Index: src/frontends/qt4/QListings.h
===================================================================
--- src/frontends/qt4/QListings.h	(Revision 18451)
+++ src/frontends/qt4/QListings.h	(Arbeitskopie)
@@ -40,6 +40,8 @@
 	void on_inlineCB_stateChanged(int state);
 	/// turn off numbering options when none is selected
 	void on_numberSideCO_currentIndexChanged(int);
+	/// show dialect when language is chosen
+	void on_languageCO_currentIndexChanged(int);
 protected:
 	virtual void closeEvent(QCloseEvent * e);
 private:
Index: src/frontends/qt4/ui/ListingsUi.ui
===================================================================
--- src/frontends/qt4/ui/ListingsUi.ui	(Revision 18451)
+++ src/frontends/qt4/ui/ListingsUi.ui	(Arbeitskopie)
@@ -8,8 +8,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>548</width>
-    <height>353</height>
+    <width>612</width>
+    <height>317</height>
    </rect>
   </property>
   <property name="windowTitle" >
@@ -25,59 +25,6 @@
    <property name="spacing" >
     <number>6</number>
    </property>
-   <item row="1" column="0" >
-    <layout class="QHBoxLayout" >
-     <property name="margin" >
-      <number>0</number>
-     </property>
-     <property name="spacing" >
-      <number>6</number>
-     </property>
-     <item>
-      <spacer>
-       <property name="orientation" >
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeType" >
-        <enum>QSizePolicy::Expanding</enum>
-       </property>
-       <property name="sizeHint" >
-        <size>
-         <width>291</width>
-         <height>27</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item>
-      <widget class="QPushButton" name="okPB" >
-       <property name="text" >
-        <string>&amp;OK</string>
-       </property>
-       <property name="default" >
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="applyPB" >
-       <property name="text" >
-        <string>&amp;Apply</string>
-       </property>
-       <property name="default" >
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="closePB" >
-       <property name="text" >
-        <string>&amp;Cancel</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
    <item row="0" column="0" >
     <widget class="QTabWidget" name="listingsTW" >
      <property name="currentIndex" >
@@ -87,411 +34,441 @@
       <attribute name="title" >
        <string>&amp;Main Settings</string>
       </attribute>
-      <layout class="QVBoxLayout" >
+      <layout class="QGridLayout" >
        <property name="margin" >
         <number>9</number>
        </property>
        <property name="spacing" >
         <number>6</number>
        </property>
-       <item>
-        <layout class="QHBoxLayout" >
-         <property name="margin" >
-          <number>0</number>
+       <item rowspan="2" row="0" column="2" >
+        <widget class="QGroupBox" name="basicstyleGB" >
+         <property name="title" >
+          <string>Style</string>
          </property>
-         <property name="spacing" >
-          <number>6</number>
+         <layout class="QGridLayout" >
+          <property name="margin" >
+           <number>9</number>
+          </property>
+          <property name="spacing" >
+           <number>6</number>
+          </property>
+          <item row="0" column="1" >
+           <widget class="QComboBox" name="fontsizeCO" >
+            <property name="sizePolicy" >
+             <sizepolicy>
+              <hsizetype>7</hsizetype>
+              <vsizetype>0</vsizetype>
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="toolTip" >
+             <string>The content's base font size</string>
+            </property>
+            <property name="editable" >
+             <bool>false</bool>
+            </property>
+            <property name="autoCompletion" >
+             <bool>true</bool>
+            </property>
+            <property name="duplicatesEnabled" >
+             <bool>false</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0" >
+           <widget class="QLabel" name="fontsize_label_3" >
+            <property name="text" >
+             <string>F&amp;ont size:</string>
+            </property>
+            <property name="wordWrap" >
+             <bool>false</bool>
+            </property>
+            <property name="buddy" >
+             <cstring>fontsizeCO</cstring>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1" >
+           <widget class="QComboBox" name="fontstyleCO" >
+            <property name="sizePolicy" >
+             <sizepolicy>
+              <hsizetype>7</hsizetype>
+              <vsizetype>0</vsizetype>
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="toolTip" >
+             <string>The content's base font style</string>
+            </property>
+            <property name="editable" >
+             <bool>false</bool>
+            </property>
+            <property name="autoCompletion" >
+             <bool>true</bool>
+            </property>
+            <property name="duplicatesEnabled" >
+             <bool>false</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0" >
+           <widget class="QLabel" name="fontstyle_label_3" >
+            <property name="text" >
+             <string>Font st&amp;yle:</string>
+            </property>
+            <property name="wordWrap" >
+             <bool>false</bool>
+            </property>
+            <property name="buddy" >
+             <cstring>fontstyleCO</cstring>
+            </property>
+           </widget>
+          </item>
+          <item row="5" column="0" colspan="2" >
+           <widget class="QCheckBox" name="extendedcharsCB" >
+            <property name="enabled" >
+             <bool>true</bool>
+            </property>
+            <property name="toolTip" >
+             <string>Use extended character table</string>
+            </property>
+            <property name="text" >
+             <string>&amp;Extended Chars</string>
+            </property>
+            <property name="shortcut" >
+             <number>276824133</number>
+            </property>
+           </widget>
+          </item>
+          <item row="4" column="0" colspan="2" >
+           <widget class="QCheckBox" name="spaceInStringCB" >
+            <property name="toolTip" >
+             <string>Make spaces in strings visible by a special symbol</string>
+            </property>
+            <property name="text" >
+             <string>S&amp;pace in string as Symbol</string>
+            </property>
+            <property name="shortcut" >
+             <number>276824147</number>
+            </property>
+           </widget>
+          </item>
+          <item row="3" column="0" colspan="2" >
+           <widget class="QCheckBox" name="spaceCB" >
+            <property name="toolTip" >
+             <string>Make spaces visible by a special symbol</string>
+            </property>
+            <property name="text" >
+             <string>S&amp;pace as Symbol</string>
+            </property>
+            <property name="shortcut" >
+             <number>276824147</number>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="0" colspan="2" >
+           <widget class="QCheckBox" name="breaklinesCB" >
+            <property name="toolTip" >
+             <string>Break lines longer than the linewidth</string>
+            </property>
+            <property name="text" >
+             <string>&amp;Break long lines</string>
+            </property>
+            <property name="shortcut" >
+             <number>276824130</number>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item row="1" column="1" >
+        <widget class="QGroupBox" name="rangeGB" >
+         <property name="title" >
+          <string>Range</string>
          </property>
-         <item>
-          <layout class="QVBoxLayout" >
-           <property name="margin" >
-            <number>0</number>
-           </property>
-           <property name="spacing" >
-            <number>6</number>
-           </property>
-           <item>
-            <widget class="QGroupBox" name="placementGB" >
-             <property name="title" >
-              <string>Placement</string>
+         <layout class="QGridLayout" >
+          <property name="margin" >
+           <number>9</number>
+          </property>
+          <property name="spacing" >
+           <number>6</number>
+          </property>
+          <item row="1" column="0" >
+           <widget class="QLabel" name="numberfontsizeL_2" >
+            <property name="text" >
+             <string>&amp;Last line:</string>
+            </property>
+            <property name="wordWrap" >
+             <bool>false</bool>
+            </property>
+            <property name="buddy" >
+             <cstring>numberFontSizeCO</cstring>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1" >
+           <widget class="QLineEdit" name="lastlineLE" >
+            <property name="toolTip" >
+             <string>The last line to be printed</string>
+            </property>
+            <property name="text" >
+             <string/>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignLeading</set>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1" >
+           <widget class="QLineEdit" name="firstlineLE" >
+            <property name="toolTip" >
+             <string>The first line to be printed</string>
+            </property>
+            <property name="text" >
+             <string/>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignLeading</set>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0" >
+           <widget class="QLabel" name="numberfontsizeL_3" >
+            <property name="text" >
+             <string>Fi&amp;rst line:</string>
+            </property>
+            <property name="wordWrap" >
+             <bool>false</bool>
+            </property>
+            <property name="buddy" >
+             <cstring>numberFontSizeCO</cstring>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item row="1" column="0" >
+        <widget class="QGroupBox" name="languageGB" >
+         <property name="title" >
+          <string>Language</string>
+         </property>
+         <layout class="QGridLayout" >
+          <property name="margin" >
+           <number>9</number>
+          </property>
+          <property name="spacing" >
+           <number>6</number>
+          </property>
+          <item row="1" column="1" >
+           <widget class="QComboBox" name="dialectCO" >
+            <property name="toolTip" >
+             <string>Select the dialect of the programming language, if available</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0" >
+           <widget class="QLabel" name="dialectLBL" >
+            <property name="text" >
+             <string>&amp;Dialect:</string>
+            </property>
+            <property name="buddy" >
+             <cstring>dialectCO</cstring>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0" >
+           <widget class="QLabel" name="languageLBL" >
+            <property name="text" >
+             <string>&amp;Language:</string>
+            </property>
+            <property name="buddy" >
+             <cstring>languageCO</cstring>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1" >
+           <widget class="QComboBox" name="languageCO" >
+            <property name="toolTip" >
+             <string>Select the programming language</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item row="0" column="1" >
+        <widget class="QGroupBox" name="numberstyleGB" >
+         <property name="title" >
+          <string>Line numbering</string>
+         </property>
+         <layout class="QGridLayout" >
+          <property name="margin" >
+           <number>9</number>
+          </property>
+          <property name="spacing" >
+           <number>6</number>
+          </property>
+          <item row="0" column="1" >
+           <widget class="QComboBox" name="numberSideCO" >
+            <property name="toolTip" >
+             <string>On which side should line numbers be printed?</string>
+            </property>
+            <item>
+             <property name="text" >
+              <string>None</string>
              </property>
-             <layout class="QGridLayout" >
-              <property name="margin" >
-               <number>9</number>
-              </property>
-              <property name="spacing" >
-               <number>6</number>
-              </property>
-              <item row="2" column="1" >
-               <widget class="QLineEdit" name="placementLE" />
-              </item>
-              <item row="2" column="0" >
-               <widget class="QLabel" name="captionL_5" >
-                <property name="text" >
-                 <string>Placement:</string>
-                </property>
-                <property name="wordWrap" >
-                 <bool>false</bool>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="0" colspan="2" >
-               <widget class="QCheckBox" name="floatCB" >
-                <property name="text" >
-                 <string>&amp;Float</string>
-                </property>
-               </widget>
-              </item>
-              <item row="0" column="0" colspan="2" >
-               <widget class="QCheckBox" name="inlineCB" >
-                <property name="text" >
-                 <string>&amp;Inline listing</string>
-                </property>
-               </widget>
-              </item>
-             </layout>
-            </widget>
-           </item>
-           <item>
-            <widget class="QGroupBox" name="languageGB" >
-             <property name="title" >
-              <string>Language</string>
+            </item>
+            <item>
+             <property name="text" >
+              <string>Left</string>
              </property>
-             <layout class="QGridLayout" >
-              <property name="margin" >
-               <number>9</number>
-              </property>
-              <property name="spacing" >
-               <number>6</number>
-              </property>
-              <item row="0" column="0" >
-               <widget class="QComboBox" name="languageCO" />
-              </item>
-             </layout>
-            </widget>
-           </item>
-          </layout>
-         </item>
-         <item>
-          <layout class="QVBoxLayout" >
-           <property name="margin" >
-            <number>0</number>
-           </property>
-           <property name="spacing" >
-            <number>6</number>
-           </property>
-           <item>
-            <widget class="QGroupBox" name="numberstyleGB" >
-             <property name="title" >
-              <string>Line numbering</string>
+            </item>
+            <item>
+             <property name="text" >
+              <string>Right</string>
              </property>
-             <layout class="QGridLayout" >
-              <property name="margin" >
-               <number>9</number>
-              </property>
-              <property name="spacing" >
-               <number>6</number>
-              </property>
-              <item row="0" column="0" >
-               <widget class="QLabel" name="label" >
-                <property name="text" >
-                 <string>&amp;Side: </string>
-                </property>
-                <property name="buddy" >
-                 <cstring>numberSideCO</cstring>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="1" >
-               <widget class="QLineEdit" name="numberStepLE" >
-                <property name="toolTip" >
-                 <string>Differenz between two numbered lines</string>
-                </property>
-                <property name="text" >
-                 <string/>
-                </property>
-                <property name="alignment" >
-                 <set>Qt::AlignLeading</set>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="0" >
-               <widget class="QLabel" name="stepnumberL" >
-                <property name="toolTip" >
-                 <string>File name of image</string>
-                </property>
-                <property name="text" >
-                 <string>S&amp;tep:</string>
-                </property>
-                <property name="wordWrap" >
-                 <bool>false</bool>
-                </property>
-                <property name="buddy" >
-                 <cstring>numberStepLE</cstring>
-                </property>
-               </widget>
-              </item>
-              <item row="2" column="0" >
-               <widget class="QLabel" name="numberfontsizeL" >
-                <property name="text" >
-                 <string>Font si&amp;ze:</string>
-                </property>
-                <property name="wordWrap" >
-                 <bool>false</bool>
-                </property>
-                <property name="buddy" >
-                 <cstring>numberFontSizeCO</cstring>
-                </property>
-               </widget>
-              </item>
-              <item row="2" column="1" >
-               <widget class="QComboBox" name="numberFontSizeCO" >
-                <property name="sizePolicy" >
-                 <sizepolicy>
-                  <hsizetype>7</hsizetype>
-                  <vsizetype>0</vsizetype>
-                  <horstretch>0</horstretch>
-                  <verstretch>0</verstretch>
-                 </sizepolicy>
-                </property>
-                <property name="toolTip" >
-                 <string>Choose the Font Size</string>
-                </property>
-                <property name="editable" >
-                 <bool>false</bool>
-                </property>
-                <property name="autoCompletion" >
-                 <bool>true</bool>
-                </property>
-                <property name="duplicatesEnabled" >
-                 <bool>false</bool>
-                </property>
-               </widget>
-              </item>
-              <item row="0" column="1" >
-               <widget class="QComboBox" name="numberSideCO" >
-                <item>
-                 <property name="text" >
-                  <string>None</string>
-                 </property>
-                </item>
-                <item>
-                 <property name="text" >
-                  <string>Left</string>
-                 </property>
-                </item>
-                <item>
-                 <property name="text" >
-                  <string>Right</string>
-                 </property>
-                </item>
-               </widget>
-              </item>
-             </layout>
-            </widget>
-           </item>
-           <item>
-            <widget class="QGroupBox" name="rangeGB" >
-             <property name="title" >
-              <string>Range</string>
-             </property>
-             <layout class="QGridLayout" >
-              <property name="margin" >
-               <number>9</number>
-              </property>
-              <property name="spacing" >
-               <number>6</number>
-              </property>
-              <item row="0" column="0" >
-               <widget class="QLabel" name="numberfontsizeL_3" >
-                <property name="text" >
-                 <string>Fi&amp;rst line:</string>
-                </property>
-                <property name="wordWrap" >
-                 <bool>false</bool>
-                </property>
-                <property name="buddy" >
-                 <cstring>numberFontSizeCO</cstring>
-                </property>
-               </widget>
-              </item>
-              <item row="0" column="1" >
-               <widget class="QLineEdit" name="firstlineLE" >
-                <property name="toolTip" >
-                 <string>Differenz between two numbered lines</string>
-                </property>
-                <property name="text" >
-                 <string/>
-                </property>
-                <property name="alignment" >
-                 <set>Qt::AlignLeading</set>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="1" >
-               <widget class="QLineEdit" name="lastlineLE" >
-                <property name="toolTip" >
-                 <string>Differenz between two numbered lines</string>
-                </property>
-                <property name="text" >
-                 <string/>
-                </property>
-                <property name="alignment" >
-                 <set>Qt::AlignLeading</set>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="0" >
-               <widget class="QLabel" name="numberfontsizeL_2" >
-                <property name="text" >
-                 <string>&amp;Last line:</string>
-                </property>
-                <property name="wordWrap" >
-                 <bool>false</bool>
-                </property>
-                <property name="buddy" >
-                 <cstring>numberFontSizeCO</cstring>
-                </property>
-               </widget>
-              </item>
-             </layout>
-            </widget>
-           </item>
-          </layout>
-         </item>
-         <item>
-          <widget class="QGroupBox" name="basicstyleGB" >
-           <property name="title" >
-            <string>Style</string>
-           </property>
-           <layout class="QGridLayout" >
-            <property name="margin" >
-             <number>9</number>
+            </item>
+           </widget>
+          </item>
+          <item row="2" column="1" >
+           <widget class="QComboBox" name="numberFontSizeCO" >
+            <property name="sizePolicy" >
+             <sizepolicy>
+              <hsizetype>7</hsizetype>
+              <vsizetype>0</vsizetype>
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
             </property>
-            <property name="spacing" >
-             <number>6</number>
+            <property name="toolTip" >
+             <string>Choose the font size for line numbers</string>
             </property>
-            <item row="2" column="0" colspan="2" >
-             <widget class="QCheckBox" name="breaklinesCB" >
-              <property name="toolTip" >
-               <string>Breaking lines longer than the linewidth</string>
-              </property>
-              <property name="text" >
-               <string>&amp;Break long lines</string>
-              </property>
-              <property name="shortcut" >
-               <number>276824130</number>
-              </property>
-             </widget>
-            </item>
-            <item row="3" column="0" colspan="2" >
-             <widget class="QCheckBox" name="spaceCB" >
-              <property name="toolTip" >
-               <string>Insert a special symbol for a space</string>
-              </property>
-              <property name="text" >
-               <string>S&amp;pace as Symbol</string>
-              </property>
-              <property name="shortcut" >
-               <number>276824147</number>
-              </property>
-             </widget>
-            </item>
-            <item row="4" column="0" colspan="2" >
-             <widget class="QCheckBox" name="extendedcharsCB" >
-              <property name="enabled" >
-               <bool>true</bool>
-              </property>
-              <property name="toolTip" >
-               <string>Use extended character table</string>
-              </property>
-              <property name="text" >
-               <string>&amp;Extended Chars</string>
-              </property>
-              <property name="shortcut" >
-               <number>276824133</number>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="0" >
-             <widget class="QLabel" name="fontstyle_label_3" >
-              <property name="text" >
-               <string>Font st&amp;yle:</string>
-              </property>
-              <property name="wordWrap" >
-               <bool>false</bool>
-              </property>
-              <property name="buddy" >
-               <cstring>fontstyleCO</cstring>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="1" >
-             <widget class="QComboBox" name="fontstyleCO" >
-              <property name="sizePolicy" >
-               <sizepolicy>
-                <hsizetype>7</hsizetype>
-                <vsizetype>0</vsizetype>
-                <horstretch>0</horstretch>
-                <verstretch>0</verstretch>
-               </sizepolicy>
-              </property>
-              <property name="toolTip" >
-               <string>Choose the Font Style</string>
-              </property>
-              <property name="editable" >
-               <bool>false</bool>
-              </property>
-              <property name="autoCompletion" >
-               <bool>true</bool>
-              </property>
-              <property name="duplicatesEnabled" >
-               <bool>false</bool>
-              </property>
-             </widget>
-            </item>
-            <item row="0" column="0" >
-             <widget class="QLabel" name="fontsize_label_3" >
-              <property name="text" >
-               <string>F&amp;ont size:</string>
-              </property>
-              <property name="wordWrap" >
-               <bool>false</bool>
-              </property>
-              <property name="buddy" >
-               <cstring>fontsizeCO</cstring>
-              </property>
-             </widget>
-            </item>
-            <item row="0" column="1" >
-             <widget class="QComboBox" name="fontsizeCO" >
-              <property name="sizePolicy" >
-               <sizepolicy>
-                <hsizetype>7</hsizetype>
-                <vsizetype>0</vsizetype>
-                <horstretch>0</horstretch>
-                <verstretch>0</verstretch>
-               </sizepolicy>
-              </property>
-              <property name="toolTip" >
-               <string>Choose the Font Size</string>
-              </property>
-              <property name="editable" >
-               <bool>false</bool>
-              </property>
-              <property name="autoCompletion" >
-               <bool>true</bool>
-              </property>
-              <property name="duplicatesEnabled" >
-               <bool>false</bool>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </widget>
-         </item>
-        </layout>
+            <property name="editable" >
+             <bool>false</bool>
+            </property>
+            <property name="autoCompletion" >
+             <bool>true</bool>
+            </property>
+            <property name="duplicatesEnabled" >
+             <bool>false</bool>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="0" >
+           <widget class="QLabel" name="numberfontsizeL" >
+            <property name="text" >
+             <string>Font si&amp;ze:</string>
+            </property>
+            <property name="wordWrap" >
+             <bool>false</bool>
+            </property>
+            <property name="buddy" >
+             <cstring>numberFontSizeCO</cstring>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0" >
+           <widget class="QLabel" name="stepnumberL" >
+            <property name="toolTip" >
+             <string>File name of image</string>
+            </property>
+            <property name="text" >
+             <string>S&amp;tep:</string>
+            </property>
+            <property name="wordWrap" >
+             <bool>false</bool>
+            </property>
+            <property name="buddy" >
+             <cstring>numberStepLE</cstring>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1" >
+           <widget class="QLineEdit" name="numberStepLE" >
+            <property name="toolTip" >
+             <string>Difference between two numbered lines</string>
+            </property>
+            <property name="statusTip" >
+             <string/>
+            </property>
+            <property name="text" >
+             <string/>
+            </property>
+            <property name="alignment" >
+             <set>Qt::AlignLeading</set>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0" >
+           <widget class="QLabel" name="label" >
+            <property name="text" >
+             <string>&amp;Side: </string>
+            </property>
+            <property name="buddy" >
+             <cstring>numberSideCO</cstring>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
        </item>
+       <item row="0" column="0" >
+        <widget class="QGroupBox" name="placementGB" >
+         <property name="title" >
+          <string>Placement</string>
+         </property>
+         <layout class="QGridLayout" >
+          <property name="margin" >
+           <number>9</number>
+          </property>
+          <property name="spacing" >
+           <number>6</number>
+          </property>
+          <item row="2" column="1" >
+           <widget class="QLineEdit" name="placementLE" >
+            <property name="toolTip" >
+             <string>Specify placement (htbp) for floating listings</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0" colspan="2" >
+           <widget class="QCheckBox" name="floatCB" >
+            <property name="toolTip" >
+             <string>Check for floating listings</string>
+            </property>
+            <property name="text" >
+             <string>&amp;Float</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0" colspan="2" >
+           <widget class="QCheckBox" name="inlineCB" >
+            <property name="toolTip" >
+             <string>Check for inline listings</string>
+            </property>
+            <property name="text" >
+             <string>&amp;Inline listing</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="0" >
+           <widget class="QLabel" name="captionL_5" >
+            <property name="text" >
+             <string>Placement:</string>
+            </property>
+            <property name="wordWrap" >
+             <bool>false</bool>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
       </layout>
      </widget>
      <widget class="QWidget" name="tab_2" >
@@ -518,47 +495,51 @@
          <property name="title" >
           <string>More &amp;Parameters</string>
          </property>
-         <layout class="QVBoxLayout" >
+         <layout class="QGridLayout" >
           <property name="margin" >
            <number>9</number>
           </property>
           <property name="spacing" >
            <number>6</number>
           </property>
-          <item>
-           <widget class="QSplitter" name="splitter" >
-            <property name="orientation" >
-             <enum>Qt::Horizontal</enum>
+          <item row="0" column="0" >
+           <widget class="QTextBrowser" name="listingsTB" >
+            <property name="maximumSize" >
+             <size>
+              <width>16777215</width>
+              <height>16777215</height>
+             </size>
             </property>
-            <widget class="QTextBrowser" name="listingsTB" >
-             <property name="maximumSize" >
-              <size>
-               <width>16777215</width>
-               <height>16777215</height>
-              </size>
-             </property>
-             <property name="cursor" >
-              <cursor>0</cursor>
-             </property>
-             <property name="acceptDrops" >
-              <bool>false</bool>
-             </property>
-             <property name="frameShape" >
-              <enum>QFrame::NoFrame</enum>
-             </property>
-             <property name="frameShadow" >
-              <enum>QFrame::Plain</enum>
-             </property>
-             <property name="lineWidth" >
-              <number>0</number>
-             </property>
-             <property name="acceptRichText" >
-              <bool>false</bool>
-             </property>
-            </widget>
-            <widget class="QTextEdit" name="listingsED" />
+            <property name="cursor" >
+             <cursor>0</cursor>
+            </property>
+            <property name="acceptDrops" >
+             <bool>false</bool>
+            </property>
+            <property name="toolTip" >
+             <string>Feedback window</string>
+            </property>
+            <property name="frameShape" >
+             <enum>QFrame::NoFrame</enum>
+            </property>
+            <property name="frameShadow" >
+             <enum>QFrame::Plain</enum>
+            </property>
+            <property name="lineWidth" >
+             <number>0</number>
+            </property>
+            <property name="acceptRichText" >
+             <bool>false</bool>
+            </property>
            </widget>
           </item>
+          <item row="0" column="1" >
+           <widget class="QTextEdit" name="listingsED" >
+            <property name="toolTip" >
+             <string>Input listings parameters here. Enter ? for a list of parameters.</string>
+            </property>
+           </widget>
+          </item>
          </layout>
         </widget>
        </item>
@@ -566,6 +547,59 @@
      </widget>
     </widget>
    </item>
+   <item row="1" column="0" >
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType" >
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>221</width>
+         <height>27</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="okPB" >
+       <property name="text" >
+        <string>&amp;OK</string>
+       </property>
+       <property name="default" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="applyPB" >
+       <property name="text" >
+        <string>&amp;Apply</string>
+       </property>
+       <property name="default" >
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="closePB" >
+       <property name="text" >
+        <string>&amp;Cancel</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
   </layout>
  </widget>
  <tabstops>
@@ -577,6 +611,7 @@
   <tabstop>floatCB</tabstop>
   <tabstop>placementLE</tabstop>
   <tabstop>languageCO</tabstop>
+  <tabstop>dialectCO</tabstop>
   <tabstop>numberSideCO</tabstop>
   <tabstop>numberStepLE</tabstop>
   <tabstop>numberFontSizeCO</tabstop>
@@ -586,9 +621,10 @@
   <tabstop>fontstyleCO</tabstop>
   <tabstop>breaklinesCB</tabstop>
   <tabstop>spaceCB</tabstop>
+  <tabstop>spaceInStringCB</tabstop>
   <tabstop>extendedcharsCB</tabstop>
+  <tabstop>listingsTB</tabstop>
   <tabstop>listingsED</tabstop>
-  <tabstop>listingsTB</tabstop>
  </tabstops>
  <includes>
   <include location="local" >qt_helpers.h</include>
Index: src/frontends/qt4/QListings.cpp
===================================================================
--- src/frontends/qt4/QListings.cpp	(Revision 18451)
+++ src/frontends/qt4/QListings.cpp	(Arbeitskopie)
@@ -48,21 +48,105 @@
 
 
 char const * languages[] =
-{ "no language", "ABAP", "ACSL", "Ada", "ALGOL", "C", "C++", "Caml", "Clean", "Cobol",
-  "Comal 80", "csh", "Delphi", "Eiffel", "Elan", "Euphoria", "Fortran", "Haskell",
-  "HTML", "IDL", "Java", "Lisp", "Logo", "make", "Mathematica", "Matlab", "Mercury",
-  "Miranda", "ML", "Modula-2", "Oberon-2", "OCL", "Pascal", "Perl", "PHP", "PL/I", "POV",
-  "Prolog", "Python", "R", "S", "SAS", "SHELXL", "Simula", "tcl", "SQL", "TeX", "VBScript",
-  "VHDL", "XML", "" };
+{ "no language", "ABAP", "ACSL", "Ada", "ALGOL", "Assembler", "Awk", "bash", "Basic", "C",
+  "C++", "Caml", "Clean", "Cobol", "Comal 80", "command.com", "Comsol", "csh", "Delphi",
+  "Eiffel", "Elan", "Euphoria", "Fortran", "Gnuplot", "Haskell", "HTML", "IDL", "inform",
+  "Java", "JVMIS", "ksh", "Lingo", "Lisp", "Logo", "make", "Mathematica", "Matlab", "Mercury",
+  "MetaPost", "Miranda", "ML", "Modula-2", "MuPAD", "NASTRAN", "Oberon-2", "OCL", "Octave",
+  "Oz", "Pascal", "Perl", "PHP", "PL/I", "Plasm", "PostScript", "POV", "Prolog", "Promela",
+  "PSTricks", "Python", "R", "Reduce", "Rexx", "RSL", "Ruby", "S", "SAS", "Scilab", "sh",
+  "SHELXL", "Simula", "tcl", "SPARQL", "SQL", "tcl", "TeX", "VBScript", "Verilog", "VHDL",
+  "VRML", "XML", "XSLT", "" };
 
+
 char const * languages_gui[] =
-{ N_("No language"), "ABAP", "ACSL", "Ada", "ALGOL", "C", "C++", "Caml", "Clean", "Cobol",
-  "Comal 80", "csh", "Delphi", "Eiffel", "Elan", "Euphoria", "Fortran", "Haskell",
-  "HTML", "IDL", "Java", "Lisp", "Logo", "make", "Mathematica", "Matlab", "Mercury",
-  "Miranda", "ML", "Modula-2", "Oberon-2", "OCL", "Pascal", "Perl", "PHP", "PL/I", "POV",
-  "Prolog", "Python", "R", "S", "SAS", "SHELXL", "Simula", "tcl", "SQL", "TeX", "VBScript",
-  "VHDL", "XML", "" };
+{ N_("No language"), "ABAP", "ACSL", "Ada", "ALGOL", "Assembler", "Awk", "bash", "Basic",
+  "C", "C++", "Caml", "Clean", "Cobol", "Comal 80", "command.com", "Comsol", "csh", "Delphi",
+  "Eiffel", "Elan", "Euphoria", "Fortran", "Gnuplot", "Haskell", "HTML", "IDL", "inform",
+  "Java", "JVMIS", "ksh", "Lingo", "Lisp", "Logo", "make", "Mathematica", "Matlab", "Mercury",
+  "MetaPost", "Miranda", "ML", "Modula-2", "MuPAD", "NASTRAN", "Oberon-2", "OCL", "Octave",
+  "Oz", "Pascal", "Perl", "PHP", "PL/I", "Plasm", "PostScript", "POV", "Prolog", "Promela",
+  "PSTricks", "Python", "R", "Reduce", "Rexx", "RSL", "Ruby", "S", "SAS", "Scilab", "sh",
+  "SHELXL", "Simula", "tcl", "SPARQL", "SQL", "tcl", "TeX", "VBScript", "Verilog", "VHDL",
+  "VRML", "XML", "XSLT", "" };
 
+
+struct dialect_info {
+	/// the dialect
+	char const * dialect;
+	/// the associated language
+	char const * language;
+	/// representation of the dialect in the gui
+	char const * gui;
+	/// is this the default dialect?
+	bool is_default;
+};
+
+
+dialect_info const dialects[] = {
+	{ "R/2 4.3", "ABAP", "R/2 4.3", false },
+	{ "R/2 5.0", "ABAP", "R/2 5.0", false },
+	{ "R/3 3.1", "ABAP", "R/3 3.1", false },
+	{ "R/3 4.6C", "ABAP", "R/3 4.6C", false },
+	{ "R/3 6.10", "ABAP", "R/3 6.10", true },
+	{ "2005", "Ada", "2005", true },
+	{ "83", "Ada", "83", false },
+	{ "95", "Ada", "95", false },
+	{ "60", "Algol", "60", false },
+	{ "68", "Algol", "68", true },
+	{ "Motorola68k", "Assembler", "Motorola 68xxx", false },
+	{ "x86masm", "Assembler", "x86 (MASM)", false },
+	{ "gnu", "Awk", "gnu", true },
+	{ "POSIX", "AWK", "POSIX", false },
+	{ "Visual", "Basic", "Visual", false },
+	{ "ANSI", "C", "ANSI", true },
+	{ "Handel", "C", "Handel", false },
+	{ "Objective", "C", "Objective", false },
+	{ "Sharp", "C", "Sharp", false },
+	{ "ANSI", "C++", "ANSI", false },
+	{ "GNU", "C++", "GNU", false },
+	{ "ISO", "C++", "ISO", true },
+	{ "Visual", "C++", "Visual", false },
+	{ "light", "Caml", "light", true },
+	{ "Objective", "Caml", "Objective", false },
+	{ "1974", "Cobol", "1974", false },
+	{ "1985", "Cobol", "1985", true },
+	{ "ibm", "Cobol", "IBM", false },
+	{ "WinXP", "command.com", "Windows XP", true },
+	{ "77", "Fortran", "77", false },
+	{ "90", "Fortran", "90", false },
+	{ "95", "Fortran", "95", true },
+	{ "CORBA", "IDL", "CORBA", false },
+	{ "AspectJ", "Java", "Aspect J", false },
+	{ "Auto", "Lisp", "Auto", false },
+	{ "gnu", "make", "gnu", false },
+	{ "1.0", "Mathematica", "1.0", false },
+	{ "3.0", "Mathematica", "3.0", false },
+	{ "5.2", "Mathematica", "5.2", true },
+	{ "decorative", "OCL", "decorative", false },
+	{ "OMG", "OCL", "OMG", true },
+	{ "Borland6", "Pascal", "Borland 6", false },
+	{ "Standard", "Pascal", "Standard", true },
+	{ "XSC", "Pascal", "XSC", false },
+	{ "PLUS", "S", "PLUS", false },
+	{ "67", "Simula", "67", true },
+	{ "CII", "Simula", "CII", false },
+	{ "DEC", "Simula", "DEC", false },
+	{ "IBM", "Simula", "IBM", false },
+	{ "tk", "tcl", "tk", false },
+	{ "AlLaTeX", "TeX", "AlLaTeX", false },
+	{ "common", "TeX", N_("common"), false },
+	{ "LaTeX", "TeX", "LaTeX", false },
+	{ "plain", "TeX", N_("plain"), true },
+	{ "primitive", "TeX", N_("primitive"), false },
+	{ "AMS", "VHDL", "AMS", false },
+	{ "97", "VRML", "97", true }
+};
+
+
+size_t const nr_dialects = sizeof(dialects) / sizeof(dialect_info);
+
+
 char const * font_sizes[] =
 { "default", "tiny", "scriptsize", "footnotesize", "small", "normalsize", "large",
   "Large", "" };
@@ -89,6 +173,7 @@
 	connect(closePB, SIGNAL(clicked()), form, SLOT(slotClose()));
 	
 	connect(languageCO, SIGNAL(currentIndexChanged(int)), this, SLOT(change_adaptor()));
+	connect(dialectCO, SIGNAL(currentIndexChanged(int)), this, SLOT(change_adaptor()));
 	connect(inlineCB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
 	connect(floatCB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
 	connect(placementLE, SIGNAL(textChanged(const QString&)), this, SLOT(change_adaptor()));
@@ -101,6 +186,7 @@
 	connect(fontstyleCO, SIGNAL(currentIndexChanged(int)), this, SLOT(change_adaptor()));
 	connect(breaklinesCB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
 	connect(spaceCB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
+	connect(spaceInStringCB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
 	connect(extendedcharsCB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
 	
 	connect(listingsED,  SIGNAL(textChanged()), this, SLOT(change_adaptor()));
@@ -142,6 +228,16 @@
 string QListingsDialog::construct_params()
 {
 	string language = languages[languageCO->currentIndex()];
+	string dialect = string();
+	string const dialect_gui = fromqstr(dialectCO->currentText());
+	for (size_t i = 0; i < nr_dialects; ++i) {
+		if (dialect_gui == dialects[i].gui
+		    && dialects[i].language == language
+		    && !dialects[i].is_default) {
+			dialect = dialects[i].dialect;
+			break;
+		}
+	}
 	
 	bool float_ = floatCB->isChecked();
 	string placement;
@@ -177,13 +273,18 @@
 		basicstyle += "\\" + fontstyle;
 	bool breakline = breaklinesCB->isChecked();
 	bool space = spaceCB->isChecked();
+	bool spaceInString = spaceInStringCB->isChecked();
 	bool extendedchars = extendedcharsCB->isChecked();
 	string extra = fromqstr(listingsED->toPlainText());
 
 	// compose a string
 	InsetListingsParams par;
-	if (language != "no language" && !contains(extra, "language="))
-		par.addParam("language", language);
+	if (language != "no language" && !contains(extra, "language=")) {
+		if (dialect == string())
+			par.addParam("language", language);
+		else
+			par.addParam("language", "{[" + dialect + "]" + language + "}");
+	}
 	if (float_)
 		par.addParam("float", "");
 	if (!placement.empty())
@@ -204,6 +305,8 @@
 		par.addParam("breaklines", "true");
 	if (space)
 		par.addParam("showspaces", "true");
+	if (!spaceInString)
+		par.addParam("showstringspaces", "false");
 	if (extendedchars)
 		par.addParam("extendedchars", "true");
 	par.addParams(extra);
@@ -258,6 +361,27 @@
 }
 
 
+void QListingsDialog::on_languageCO_currentIndexChanged(int index)
+{
+	dialectCO->clear();
+	// 0 is "no dialect"
+	int default_dialect = 0;
+	dialectCO->addItem(qt_("No dialect"));
+	string const language = languages[index];
+
+	for (size_t i = 0; i < nr_dialects; ++i) {
+		if (language == dialects[i].language) {
+			dialectCO->addItem(dialects[i].gui);
+			if (dialects[i].is_default)
+				default_dialect =
+					dialectCO->findText(dialects[i].gui);
+		}
+	}
+	dialectCO->setCurrentIndex(default_dialect);
+	dialectCO->setEnabled(dialectCO->count() > 1);
+}
+
+
 /////////////////////////////////////////////////////////////////////
 //
 // QListings
@@ -314,6 +438,7 @@
 	dialog_->listingsTB->setPlainText(
 		qt_("Input listings parameters on the right. Enter ? for a list of parameters."));
 	dialog_->languageCO->setCurrentIndex(findToken(languages, "no language"));
+	dialog_->dialectCO->setCurrentIndex(0);
 	dialog_->floatCB->setChecked(false);
 	dialog_->placementLE->clear();
 	dialog_->numberSideCO->setCurrentIndex(0);
@@ -325,6 +450,7 @@
 	dialog_->fontsizeCO->setCurrentIndex(findToken(font_sizes, "default"));
 	dialog_->breaklinesCB->setChecked(false);
 	dialog_->spaceCB->setChecked(false);
+	dialog_->spaceInStringCB->setChecked(true);
 	dialog_->extendedcharsCB->setChecked(false);
 
 	// set values from param string
@@ -340,15 +466,43 @@
 	for (vector<string>::iterator it = pars.begin();
 	    it != pars.end(); ++it) {
 		if (prefixIs(*it, "language=")) {
-			int n = findToken(languages, plainParam(it->substr(9)));
+			string arg = plainParam(it->substr(9));
+			// has dialect?
+			string language;
+			string dialect;
+			bool in_gui = false;
+			if (prefixIs(arg, "[") && contains(arg, "]")) {
+				string::size_type end_dialect = arg.find("]");
+				dialect = arg.substr(1, end_dialect - 1);
+				language = arg.substr(end_dialect + 1);
+			} else
+				language = arg;
+			int n = findToken(languages, language);
 			if (n >= 0) {
-				dialog_->languageCO->setEnabled(true);
 				dialog_->languageCO->setCurrentIndex(n);
+				in_gui = true;
+			}
+			// on_languageCO_currentIndexChanged should have set dialects
+			if (dialect != string()) {
+				string dialect_gui;
+				for (size_t i = 0; i < nr_dialects; ++i) {
+					if (dialect == dialects[i].dialect
+					    && dialects[i].language == language) {
+						dialect_gui = dialects[i].gui;
+						break;
+					}
+				}
+				n = dialog_->dialectCO->findText(toqstr(dialect_gui));
+				if (n >= 0)
+					dialog_->dialectCO->setCurrentIndex(n);
+				else
+					in_gui = false;
+			}
+			if (in_gui)
 				*it = "";
-			}
-			else
-				// a known language that is not in the gui
-				dialog_->languageCO->setEnabled(false);
+			dialog_->languageCO->setEnabled(in_gui);
+			dialog_->dialectCO->setEnabled(
+				in_gui && dialog_->dialectCO->count() > 1);
 		} else if (prefixIs(*it, "floatplacement=")) {
 			dialog_->floatCB->setChecked(true);
 			dialog_->placementLE->setEnabled(true);
@@ -408,7 +562,7 @@
 					break;
 				}
 			}
-			if (plainParam(it->substr(11)) == style + size 
+			if (plainParam(it->substr(11)) == style + size
 			    || plainParam(it->substr(11)) == size + style) {
 				if (!style.empty()) {
 					int n = findToken(font_styles, style.substr(1));
@@ -428,6 +582,9 @@
 		} else if (prefixIs(*it, "showspaces=")) {
 			dialog_->spaceCB->setChecked(contains(*it, "true"));
 			*it = "";
+		} else if (prefixIs(*it, "showstringspaces=")) {
+			dialog_->spaceInStringCB->setChecked(contains(*it, "true"));
+			*it = "";
 		} else if (prefixIs(*it, "extendedchars=")) {
 			dialog_->extendedcharsCB->setChecked(contains(*it, "true"));
 			*it = "";

Reply via email to