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>&OK</string> - </property> - <property name="default" > - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="applyPB" > - <property name="text" > - <string>&Apply</string> - </property> - <property name="default" > - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="closePB" > - <property name="text" > - <string>&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>&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&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&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>&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&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&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>&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>&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&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>&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>&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>&Float</string> - </property> - </widget> - </item> - <item row="0" column="0" colspan="2" > - <widget class="QCheckBox" name="inlineCB" > - <property name="text" > - <string>&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>&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&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&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&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>&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>&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&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>&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&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&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&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&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>&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>&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>&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 &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>&OK</string> + </property> + <property name="default" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="applyPB" > + <property name="text" > + <string>&Apply</string> + </property> + <property name="default" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="closePB" > + <property name="text" > + <string>&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 = "";