Add layout intelligence to View Source pane (bug #8653).

View Source pane layout now automatically switches between horizontal
and vertical design when docked in vertical or horizontal way.

Original idea and patch from Edwin.

http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg178801.html

Note: the long standing-fight with too bulky minimal QTextEdit size
is now solved via ViewSourceUi.sizePolicy=Ignored.
This commit is contained in:
Pavel Sanda 2013-05-04 23:05:51 -07:00
parent 030326466f
commit 49c2450f3f
3 changed files with 153 additions and 122 deletions

View File

@ -32,6 +32,7 @@
#include <boost/crc.hpp> #include <boost/crc.hpp>
#include <QBoxLayout>
#include <QSettings> #include <QSettings>
#include <QTextCursor> #include <QTextCursor>
#include <QTextDocument> #include <QTextDocument>
@ -227,12 +228,24 @@ void ViewSourceWidget::updateDefaultFormat()
} }
void ViewSourceWidget::dockLocationChanged(Qt::DockWidgetArea area)
{
if (area == Qt::RightDockWidgetArea || area == Qt::LeftDockWidgetArea) {
layout_->setDirection(QBoxLayout::TopToBottom);
} else {
layout_->setDirection(QBoxLayout::LeftToRight);
}
}
GuiViewSource::GuiViewSource(GuiView & parent, GuiViewSource::GuiViewSource(GuiView & parent,
Qt::DockWidgetArea area, Qt::WindowFlags flags) Qt::DockWidgetArea area, Qt::WindowFlags flags)
: DockView(parent, "view-source", qt_("LaTeX Source"), area, flags) : DockView(parent, "view-source", qt_("LaTeX Source"), area, flags)
{ {
widget_ = new ViewSourceWidget; widget_ = new ViewSourceWidget;
setWidget(widget_); setWidget(widget_);
connect(this, SIGNAL(dockLocationChanged(Qt::DockWidgetArea)),
widget_, SLOT(dockLocationChanged(Qt::DockWidgetArea)));
} }

View File

@ -49,6 +49,8 @@ public Q_SLOTS:
void updateDefaultFormat(); void updateDefaultFormat();
/// ///
void contentsChanged(); void contentsChanged();
///
void dockLocationChanged(Qt::DockWidgetArea area);
private: private:
/// ///

View File

@ -6,12 +6,12 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>430</width> <width>665</width>
<height>131</height> <height>144</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <sizepolicy hsizetype="Ignored" vsizetype="Ignored">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
@ -19,10 +19,7 @@
<property name="windowTitle"> <property name="windowTitle">
<string/> <string/>
</property> </property>
<layout class="QGridLayout" name="gridLayout" columnstretch="1,0"> <layout class="QGridLayout" name="gridLayout_2">
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin"> <property name="topMargin">
<number>3</number> <number>3</number>
</property> </property>
@ -30,61 +27,96 @@
<number>3</number> <number>3</number>
</property> </property>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QTextEdit" name="viewSourceTV"> <layout class="QHBoxLayout" name="layout_" stretch="1,0">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Ignored">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="whatsThis">
<string/>
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QFormLayout" name="formLayout">
<property name="sizeConstraint"> <property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum> <enum>QLayout::SetMaximumSize</enum>
</property> </property>
<property name="fieldGrowthPolicy"> <item>
<enum>QFormLayout::ExpandingFieldsGrow</enum> <widget class="QTextEdit" name="viewSourceTV">
</property> <property name="sizePolicy">
<property name="labelAlignment"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
<property name="horizontalSpacing"> </sizepolicy>
<number>-1</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1">
<property name="spacing">
<number>3</number>
</property> </property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="whatsThis">
<string/>
</property>
</widget>
</item>
<item>
<layout class="QFormLayout" name="formLayout">
<property name="sizeConstraint"> <property name="sizeConstraint">
<enum>QLayout::SetMinAndMaxSize</enum> <enum>QLayout::SetDefaultConstraint</enum>
</property> </property>
<property name="bottomMargin"> <property name="fieldGrowthPolicy">
<number>3</number> <enum>QFormLayout::ExpandingFieldsGrow</enum>
</property> </property>
<item> <property name="labelAlignment">
<widget class="QLabel" name="outputFormatLA"> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
<property name="text"> </property>
<string>F&amp;ormat:</string> <property name="horizontalSpacing">
<number>-1</number>
</property>
<property name="verticalSpacing">
<number>4</number>
</property>
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1">
<property name="spacing">
<number>3</number>
</property> </property>
<property name="buddy"> <property name="sizeConstraint">
<cstring>outputFormatCO</cstring> <enum>QLayout::SetMinAndMaxSize</enum>
</property> </property>
</widget> <property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QLabel" name="outputFormatLA">
<property name="text">
<string>F&amp;ormat:</string>
</property>
<property name="buddy">
<cstring>outputFormatCO</cstring>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="outputFormatCO">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Select the output format</string>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item row="2" column="0">
<widget class="QComboBox" name="outputFormatCO"> <widget class="QCheckBox" name="masterPerspectiveCB">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch> <horstretch>0</horstretch>
@ -92,81 +124,65 @@
</sizepolicy> </sizepolicy>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Select the output format</string> <string>Show the source as the master document gets it</string>
</property> </property>
<property name="sizeAdjustPolicy"> <property name="text">
<enum>QComboBox::AdjustToContents</enum> <string>&amp;Master's perspective</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0">
<widget class="QCheckBox" name="autoUpdateCB">
<property name="text">
<string>Automatic update</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QPushButton" name="updatePB">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>&amp;Update</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QComboBox" name="contentsCO">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
<string>Current Paragraph</string>
</property>
</item>
<item>
<property name="text">
<string>Complete Source</string>
</property>
</item>
<item>
<property name="text">
<string>Preamble Only</string>
</property>
</item>
<item>
<property name="text">
<string>Body Only</string>
</property>
</item>
</widget>
</item>
</layout> </layout>
</item> </item>
<item row="2" column="0">
<widget class="QCheckBox" name="masterPerspectiveCB">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Show the source as the master document gets it</string>
</property>
<property name="text">
<string>&amp;Master's perspective</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="autoUpdateCB">
<property name="text">
<string>Automatic update</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QPushButton" name="updatePB">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>&amp;Update</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QComboBox" name="contentsCO">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
<string>Current Paragraph</string>
</property>
</item>
<item>
<property name="text">
<string>Complete Source</string>
</property>
</item>
<item>
<property name="text">
<string>Preamble Only</string>
</property>
</item>
<item>
<property name="text">
<string>Body Only</string>
</property>
</item>
</widget>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>