]> git.lyx.org Git - features.git/commitdiff
Fix some UI bugs related to the paragraph settings dialog. The default
authorRichard Heck <rgheck@comcast.net>
Fri, 22 Jun 2007 22:34:16 +0000 (22:34 +0000)
committerRichard Heck <rgheck@comcast.net>
Fri, 22 Jun 2007 22:34:16 +0000 (22:34 +0000)
checkbox has been changed to a radio button, so that other alignments
can be chosen without the user's having to uncheck "Default".

There was some disagreement about the interface here. See, for example,
this thread:
  http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg121328.html
For now, this will do.

The interface here is not fully functional. At present, if the Default
happens to be Justified, then checking Justified is simply equivalent to
checking Default. This is due to the behavior of Text::setParagraph(), and
it should be changed if this interface is retained.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18860 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/qt4/QParagraph.cpp
src/frontends/qt4/QParagraph.h
src/frontends/qt4/ui/ParagraphUi.ui

index be42310a51f2ea1233e03b82e2ee1123389f5b7e..c48beafa05f083de36430af9a1b6b77d331b2f4e 100644 (file)
@@ -50,7 +50,7 @@ QParagraphDialog::QParagraphDialog(QParagraph * form)
        connect(applyPB, SIGNAL(clicked()), form_, SLOT(slotApply()));
        connect(closePB, SIGNAL(clicked()), form_, SLOT(slotClose()));
        connect(restorePB, SIGNAL(clicked()), form_, SLOT(slotRestore()));
-       connect(alignDefaultCB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
+       connect(alignDefaultRB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
        connect(alignJustRB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
        connect(alignLeftRB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
        connect(alignRightRB, SIGNAL(clicked()), this, SLOT(change_adaptor()));
@@ -77,10 +77,17 @@ QParagraphDialog::QParagraphDialog(QParagraph * form)
                " items is used."
        ));
 
-       radioMap[LYX_ALIGN_BLOCK] = alignJustRB;
-       radioMap[LYX_ALIGN_LEFT] = alignLeftRB;
-       radioMap[LYX_ALIGN_RIGHT] = alignRightRB;
+       radioMap[LYX_ALIGN_LAYOUT] = alignDefaultRB;
+       radioMap[LYX_ALIGN_BLOCK]  = alignJustRB;
+       radioMap[LYX_ALIGN_LEFT]   = alignLeftRB;
+       radioMap[LYX_ALIGN_RIGHT]  = alignRightRB;
        radioMap[LYX_ALIGN_CENTER] = alignCenterRB;
+       
+/*     labelMap[LYX_ALIGN_LAYOUT] = "Default";
+       labelMap[LYX_ALIGN_BLOCK]  = "Justified";
+       labelMap[LYX_ALIGN_LEFT]   = "Left";
+       labelMap[LYX_ALIGN_RIGHT]  = "Right";
+       labelMap[LYX_ALIGN_CENTER] = "Center"; */
 }
 
 
@@ -105,35 +112,37 @@ void QParagraphDialog::enableLinespacingValue(int)
 
 
 void QParagraphDialog::checkAlignmentRadioButtons() {
-       if (alignDefaultCB->isChecked()) {
-               QPRadioMap::const_iterator it = radioMap.begin();
-               for (; it != radioMap.end(); ++it)
-                       it->second->setDisabled(true);
-       } else {
-               LyXAlignment alignPossible = form_->controller().alignPossible();
-               QPRadioMap::const_iterator it = radioMap.begin();
-               for (; it != radioMap.end(); ++it)
-                       it->second->setEnabled(it->first & alignPossible);
+       LyXAlignment const alignPossible = form_->controller().alignPossible();
+       //LyXAlignment const defaultAlignment = form_->controller().alignDefault();
+       QPRadioMap::iterator it = radioMap.begin();
+       for (; it != radioMap.end(); ++it) {
+               LyXAlignment const align = it->first;
+               it->second->setEnabled((align & alignPossible) ||
+                                      (align == LYX_ALIGN_LAYOUT));
+/*             string label = labelMap[align];
+               if (align == LYX_ALIGN_LAYOUT)
+                       label += "()" + labelMap[defaultAlignment] + ")";
+               it->second->setText(qt_(label));*/
        }
 }
 
 
-void QParagraphDialog::on_alignDefaultCB_toggled(bool)
-{
-       checkAlignmentRadioButtons();
-       alignmentToRadioButtons();
-}
-
-
 void QParagraphDialog::alignmentToRadioButtons(LyXAlignment align)
 {
-       if (align == LYX_ALIGN_LAYOUT)
-               align = form_->controller().alignDefault();
+       LyXAlignment const defaultAlignment = form_->controller().alignDefault();
+       if (align == LYX_ALIGN_LAYOUT || align == defaultAlignment) {
+               alignDefaultRB->blockSignals(true);
+               alignDefaultRB->setChecked(true);
+               alignDefaultRB->blockSignals(false);
+               return;
+       }
 
        QPRadioMap::const_iterator it = radioMap.begin();
        for (;it != radioMap.end(); ++it) {
                if (align == it->first) {
+                       it->second->blockSignals(true);
                        it->second->setChecked(true);
+                       it->second->blockSignals(false);
                        return;
                }
        }
@@ -145,8 +154,6 @@ void QParagraphDialog::alignmentToRadioButtons(LyXAlignment align)
 
 LyXAlignment QParagraphDialog::getAlignmentFromDialog()
 {
-       if (alignDefaultCB->isChecked())
-               return LYX_ALIGN_LAYOUT;
        LyXAlignment alignment = LYX_ALIGN_NONE;
        QPRadioMap::const_iterator it = radioMap.begin();
        for (; it != radioMap.end(); ++it) {
@@ -155,8 +162,6 @@ LyXAlignment QParagraphDialog::getAlignmentFromDialog()
                        break;
                }
        }
-       if (alignment == form_->controller().alignDefault())
-               return LYX_ALIGN_LAYOUT;
        return alignment;
 }
 
@@ -243,15 +248,8 @@ void QParagraph::update_contents()
        }
 
        // alignment
-       LyXAlignment newAlignment = params.align();
-       LyXAlignment defaultAlignment = controller().alignDefault();
-       bool alignmentIsDefault =
-               newAlignment == LYX_ALIGN_LAYOUT || newAlignment == defaultAlignment;
-       dialog_->alignDefaultCB->blockSignals(true);
-       dialog_->alignDefaultCB->setChecked(alignmentIsDefault);
-       dialog_->alignDefaultCB->blockSignals(false);
        dialog_->checkAlignmentRadioButtons();
-       dialog_->alignmentToRadioButtons(newAlignment);
+       dialog_->alignmentToRadioButtons(params.align());
 
        //indentation
        bool const canindent = controller().canIndent();
index b6f771cbf5daee9b57e5f9c31a562f9f8fec4140..bb27145de5ffb84297f12acd4a4ef65351f4825f 100644 (file)
@@ -44,13 +44,14 @@ private:
        QParagraph * form_;
        typedef std::map<LyXAlignment, QRadioButton *> QPRadioMap;
        QPRadioMap radioMap;
+//     typedef std::map<LyXAlignment, std::string> QPAlignmentLabels;
+//     QPAlignmentLabels labelMap;
+       
 protected Q_SLOTS:
        ///
        void change_adaptor();
        ///
        void enableLinespacingValue(int);
-       ///
-       void on_alignDefaultCB_toggled(bool);
 };
 
 
index b0a4e3612124864f88724bbd84f5bcbafdb64fd8..b7cb58d08b8eafcfc840ef6069bc8317ae5699eb 100644 (file)
@@ -8,8 +8,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>373</width>
-    <height>203</height>
+    <width>387</width>
+    <height>245</height>
    </rect>
   </property>
   <property name="sizePolicy" >
    <property name="spacing" >
     <number>6</number>
    </property>
-   <item row="4" column="0" colspan="2" >
+   <item rowspan="4" row="0" column="0" >
+    <widget class="QGroupBox" name="aligmentGB" >
+     <property name="sizePolicy" >
+      <sizepolicy>
+       <hsizetype>3</hsizetype>
+       <vsizetype>5</vsizetype>
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title" >
+      <string>Alignment</string>
+     </property>
+     <layout class="QGridLayout" >
+      <property name="margin" >
+       <number>9</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item row="3" column="0" >
+       <widget class="QRadioButton" name="alignCenterRB" >
+        <property name="text" >
+         <string>&amp;Center</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0" >
+       <widget class="QRadioButton" name="alignRightRB" >
+        <property name="text" >
+         <string>&amp;Right</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0" >
+       <widget class="QRadioButton" name="alignLeftRB" >
+        <property name="text" >
+         <string>&amp;Left</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" >
+       <widget class="QRadioButton" name="alignJustRB" >
+        <property name="text" >
+         <string>&amp;Justified</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0" >
+       <widget class="QRadioButton" name="alignDefaultRB" >
+        <property name="font" >
+         <font>
+          <italic>false</italic>
+         </font>
+        </property>
+        <property name="toolTip" >
+         <string>Use the default alignment for this paragraph, whatever it is.</string>
+        </property>
+        <property name="text" >
+         <string>Default</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="0" column="1" >
     <layout class="QHBoxLayout" >
      <property name="margin" >
       <number>0</number>
       <number>6</number>
      </property>
      <item>
-      <widget class="QPushButton" name="restorePB" >
+      <widget class="QLabel" name="linespacingL" >
        <property name="text" >
-        <string>&amp;Restore</string>
+        <string>L&amp;ine spacing:</string>
        </property>
-       <property name="autoDefault" >
+       <property name="buddy" >
+        <cstring>linespacing</cstring>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QComboBox" name="linespacing" >
+       <item>
+        <property name="text" >
+         <string>Default</string>
+        </property>
+       </item>
+       <item>
+        <property name="text" >
+         <string>Single</string>
+        </property>
+       </item>
+       <item>
+        <property name="text" >
+         <string>1.5</string>
+        </property>
+       </item>
+       <item>
+        <property name="text" >
+         <string>Double</string>
+        </property>
+       </item>
+       <item>
+        <property name="text" >
+         <string>Custom</string>
+        </property>
+       </item>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLineEdit" name="linespacingValue" >
+       <property name="enabled" >
         <bool>false</bool>
        </property>
       </widget>
      </item>
+    </layout>
+   </item>
+   <item row="2" column="1" >
+    <spacer>
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" >
+      <size>
+       <width>249</width>
+       <height>31</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="1" column="1" >
+    <layout class="QHBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QCheckBox" name="indentCB" >
+       <property name="text" >
+        <string>Indent &amp;Paragraph</string>
+       </property>
+      </widget>
+     </item>
      <item>
       <spacer>
        <property name="orientation" >
        </property>
       </spacer>
      </item>
-     <item>
-      <widget class="QPushButton" name="okPB" >
-       <property name="text" >
-        <string>&amp;OK</string>
-       </property>
-       <property name="autoDefault" >
-        <bool>false</bool>
-       </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="autoDefault" >
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="closePB" >
-       <property name="text" >
-        <string>&amp;Close</string>
-       </property>
-       <property name="autoDefault" >
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
     </layout>
    </item>
    <item row="3" column="1" >
      </layout>
     </widget>
    </item>
-   <item row="1" column="1" >
+   <item row="4" column="0" colspan="2" >
     <layout class="QHBoxLayout" >
      <property name="margin" >
       <number>0</number>
       <number>6</number>
      </property>
      <item>
-      <widget class="QCheckBox" name="indentCB" >
+      <widget class="QPushButton" name="restorePB" >
        <property name="text" >
-        <string>Indent &amp;Paragraph</string>
+        <string>&amp;Restore</string>
+       </property>
+       <property name="autoDefault" >
+        <bool>false</bool>
        </property>
       </widget>
      </item>
        </property>
       </spacer>
      </item>
-    </layout>
-   </item>
-   <item row="2" column="1" >
-    <spacer>
-     <property name="orientation" >
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeHint" >
-      <size>
-       <width>249</width>
-       <height>31</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="0" column="1" >
-    <layout class="QHBoxLayout" >
-     <property name="margin" >
-      <number>0</number>
-     </property>
-     <property name="spacing" >
-      <number>6</number>
-     </property>
      <item>
-      <widget class="QLabel" name="linespacingL" >
+      <widget class="QPushButton" name="okPB" >
        <property name="text" >
-        <string>L&amp;ine spacing:</string>
+        <string>&amp;OK</string>
        </property>
-       <property name="buddy" >
-        <cstring>linespacing</cstring>
+       <property name="autoDefault" >
+        <bool>false</bool>
+       </property>
+       <property name="default" >
+        <bool>true</bool>
        </property>
       </widget>
      </item>
      <item>
-      <widget class="QComboBox" name="linespacing" >
-       <item>
-        <property name="text" >
-         <string>Default</string>
-        </property>
-       </item>
-       <item>
-        <property name="text" >
-         <string>Single</string>
-        </property>
-       </item>
-       <item>
-        <property name="text" >
-         <string>1.5</string>
-        </property>
-       </item>
-       <item>
-        <property name="text" >
-         <string>Double</string>
-        </property>
-       </item>
-       <item>
-        <property name="text" >
-         <string>Custom</string>
-        </property>
-       </item>
+      <widget class="QPushButton" name="applyPB" >
+       <property name="text" >
+        <string>&amp;Apply</string>
+       </property>
+       <property name="autoDefault" >
+        <bool>false</bool>
+       </property>
       </widget>
      </item>
      <item>
-      <widget class="QLineEdit" name="linespacingValue" >
-       <property name="enabled" >
+      <widget class="QPushButton" name="closePB" >
+       <property name="text" >
+        <string>&amp;Close</string>
+       </property>
+       <property name="autoDefault" >
         <bool>false</bool>
        </property>
       </widget>
      </item>
     </layout>
    </item>
-   <item rowspan="4" row="0" column="0" >
-    <widget class="QGroupBox" name="aligmentGB" >
-     <property name="title" >
-      <string>Alignment</string>
-     </property>
-     <layout class="QVBoxLayout" >
-      <property name="margin" >
-       <number>9</number>
-      </property>
-      <property name="spacing" >
-       <number>6</number>
-      </property>
-      <item>
-       <widget class="QCheckBox" name="alignDefaultCB" >
-        <property name="font" >
-         <font>
-          <weight>50</weight>
-          <italic>true</italic>
-          <bold>false</bold>
-          <kerning>true</kerning>
-         </font>
-        </property>
-        <property name="text" >
-         <string>&amp;Default</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QRadioButton" name="alignJustRB" >
-        <property name="text" >
-         <string>&amp;Justified</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QRadioButton" name="alignLeftRB" >
-        <property name="text" >
-         <string>&amp;Left</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QRadioButton" name="alignRightRB" >
-        <property name="text" >
-         <string>&amp;Right</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QRadioButton" name="alignCenterRB" >
-        <property name="text" >
-         <string>&amp;Center</string>
-        </property>
-       </widget>
-      </item>
-     </layout>
-    </widget>
-   </item>
   </layout>
  </widget>
  <tabstops>