View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0017428 | Scribus | User Interface | public | 2025-02-21 18:50 | 2025-02-22 08:52 |
| Reporter | nitramr | Assigned To | |||
| Priority | normal | Severity | feature | Reproducibility | N/A |
| Status | new | Resolution | open | ||
| Platform | Desktop PC | OS | Ubuntu | OS Version | 24.10 64-bit |
| Product Version | 1.7.1.svn | ||||
| Summary | 0017428: Make the Align and distribute tool more comfortable to use (v2) | ||||
| Description | Just a small UI improvement in addition to the recent change. Whats new? - "spacing" buttons are grouped - object spacing buttons have a second mode if the distance is enabled | ||||
| Tags | No tags attached. | ||||
| Patch | Yes | ||||
|
|
distribute_2025-02-21_01.patch (20,828 bytes)
Index: scribus/ui/aligndistribute.cpp
===================================================================
--- scribus/ui/aligndistribute.cpp (Revision 26720)
+++ scribus/ui/aligndistribute.cpp (Arbeitskopie)
@@ -90,6 +90,8 @@
groupMode->addButton(ad->buttonModeResize, 1);
ad->buttonModeMove->setChecked(true);
+ ad->enableDistanceCheckbox->setChecked(false);
+
resize( QSize(100, 100).expandedTo(minimumSizeHint()) );
languageChange();
init();
@@ -137,14 +139,10 @@
ad->alignTopOutToolButton->setToolTip( tr( "Align bottoms of items to top of anchor" ) );
ad->alignTopInToolButton->setToolTip( tr( "Align tops" ) );
- ad->distributeDistHToolButton->setToolTip( tr( "Make horizontal gaps between items equal" ) );
- ad->distributeDistValueHToolButton->setToolTip( tr( "Make horizontal gaps between items equal to the value specified" ) );
-
ad->distributeRightToolButton->setToolTip( tr( "Distribute right sides equidistantly" ) );
ad->distributeBottomToolButton->setToolTip( tr( "Distribute bottoms equidistantly" ) );
ad->distributeCenterHToolButton->setToolTip( tr( "Distribute centers equidistantly horizontally" ) );
- ad->distributeDistVToolButton->setToolTip( tr( "Make vertical gaps between items equal" ) );
- ad->distributeDistValueVToolButton->setToolTip( tr( "Make vertical gaps between items equal to the value specified" ) );
+
ad->distributeLeftToolButton->setToolTip( tr( "Distribute left sides equidistantly" ) );
ad->distributeCenterVToolButton->setToolTip( tr( "Distribute centers equidistantly vertically" ) );
ad->distributeTopToolButton->setToolTip( tr( "Distribute tops equidistantly" ) );
@@ -158,6 +156,8 @@
ad->swapLeftToolButton->setToolTip( tr( "Swap items to the left" ) );
ad->swapRightToolButton->setToolTip( tr( "Swap items to the right" ) );
+
+ enableDistance();
}
void AlignDistributePalette::toggleLabelVisibility(bool v)
@@ -192,12 +192,10 @@
connect(ad->alignTopOutToolButton, SIGNAL(clicked()), this, SLOT(alignTopOut()));
connect(ad->alignTopInToolButton, SIGNAL(clicked()), this, SLOT(alignTopIn()));
connect(ad->distributeDistHToolButton, SIGNAL(clicked()), this, SLOT(distributeDistH()));
- connect(ad->distributeDistValueHToolButton, SIGNAL(clicked()), this, SLOT(distributeDistValH()));
connect(ad->distributeRightToolButton, SIGNAL(clicked()), this, SLOT(distributeRight()));
connect(ad->distributeBottomToolButton, SIGNAL(clicked()), this, SLOT(distributeBottom()));
connect(ad->distributeCenterHToolButton, SIGNAL(clicked()), this, SLOT(distributeCenterH()));
connect(ad->distributeDistVToolButton, SIGNAL(clicked()), this, SLOT(distributeDistV()));
- connect(ad->distributeDistValueVToolButton, SIGNAL(clicked()), this, SLOT(distributeDistValV()));
connect(ad->distributeLeftToolButton, SIGNAL(clicked()), this, SLOT(distributeLeft()));
connect(ad->distributeCenterVToolButton, SIGNAL(clicked()), this, SLOT(distributeCenterV()));
connect(ad->distributeTopToolButton, SIGNAL(clicked()), this, SLOT(distributeTop()));
@@ -207,6 +205,7 @@
connect(ad->distributeDownMarginsToolButton, SIGNAL(clicked()), this, SLOT(distributeDistDownMargins()));
connect(ad->swapLeftToolButton, SIGNAL(clicked()), this, SLOT(swapLeft()));
connect(ad->swapRightToolButton, SIGNAL(clicked()), this, SLOT(swapRight()));
+ connect(ad->enableDistanceCheckbox, SIGNAL(clicked()), this, SLOT(enableDistance()));
alignToChanged(0);
alignMethodChanged(0);
@@ -248,22 +247,22 @@
ad->distributeLeftToolButton->setIcon(im.loadIcon("distribute-horizontal-left"));
ad->distributeCenterHToolButton->setIcon(im.loadIcon("distribute-horizontal-center"));
ad->distributeRightToolButton->setIcon(im.loadIcon("distribute-horizontal-right"));
- ad->distributeDistHToolButton->setIcon(im.loadIcon("distribute-horizontal-equal"));
ad->distributeBottomToolButton->setIcon(im.loadIcon("distribute-vertical-bottom"));
ad->distributeCenterVToolButton->setIcon(im.loadIcon("distribute-vertical-center"));
ad->distributeTopToolButton->setIcon(im.loadIcon("distribute-vertical-top"));
- ad->distributeDistVToolButton->setIcon(im.loadIcon("distribute-vertical-equal"));
- ad->distributeAcrossPageToolButton->setIcon(im.loadIcon("distribute-horizontal-page"));
+ // ad->distributeDistHToolButton->setIcon(im.loadIcon("distribute-horizontal-equal"));
+ // ad->distributeDistVToolButton->setIcon(im.loadIcon("distribute-vertical-equal"));
+ ad->distributeDownMarginsToolButton->setIcon(im.loadIcon("distribute-vertical-margin"));
ad->distributeDownPageToolButton->setIcon(im.loadIcon("distribute-vertical-page"));
ad->distributeAcrossMarginsToolButton->setIcon(im.loadIcon("distribute-horizontal-margin"));
- ad->distributeDownMarginsToolButton->setIcon(im.loadIcon("distribute-vertical-margin"));
- ad->distributeDistValueHToolButton->setIcon(im.loadIcon("distribute-horizontal-x"));
- ad->distributeDistValueVToolButton->setIcon(im.loadIcon("distribute-vertical-y"));
+ ad->distributeAcrossPageToolButton->setIcon(im.loadIcon("distribute-horizontal-page"));
ad->swapLeftToolButton->setIcon(im.loadIcon("swap-left"));
ad->swapRightToolButton->setIcon(im.loadIcon("swap-right"));
+
+ enableDistance();
}
void AlignDistributePalette::unitChange()
@@ -365,17 +364,11 @@
currDoc->itemSelection_DistributeRight();
}
-void AlignDistributePalette::distributeDistH(bool usingDistance)
+void AlignDistributePalette::distributeDistH()
{
- if (currDoc != nullptr)
- currDoc->itemSelection_DistributeDistH(usingDistance, ad->distributeDistSpinBox->value(), ad->reverseDistributionButton->isChecked());
-}
-
-void AlignDistributePalette::distributeDistValH()
-{
ad->distributeDistSpinBox->interpretText();
if (currDoc != nullptr)
- distributeDistH(true);
+ currDoc->itemSelection_DistributeDistH(ad->enableDistanceCheckbox->isChecked(), ad->distributeDistSpinBox->value(), ad->reverseDistributionButton->isChecked());
}
void AlignDistributePalette::distributeDistAcrossPage()
@@ -420,17 +413,11 @@
currDoc->itemSelection_DistributeTop();
}
-void AlignDistributePalette::distributeDistV(bool usingDistance)
+void AlignDistributePalette::distributeDistV()
{
- if (currDoc != nullptr)
- currDoc->itemSelection_DistributeDistV(usingDistance, ad->distributeDistSpinBox->value(), ad->reverseDistributionButton->isChecked());
-}
-
-void AlignDistributePalette::distributeDistValV()
-{
ad->distributeDistSpinBox->interpretText();
if (currDoc != nullptr)
- distributeDistV(true);
+ currDoc->itemSelection_DistributeDistV(ad->enableDistanceCheckbox->isChecked(), ad->distributeDistSpinBox->value(), ad->reverseDistributionButton->isChecked());
}
void AlignDistributePalette::swapLeft()
@@ -445,6 +432,31 @@
currDoc->itemSelection_SwapRight();
}
+void AlignDistributePalette::enableDistance()
+{
+ IconManager& im = IconManager::instance();
+
+ if (ad->enableDistanceCheckbox->isChecked())
+ {
+ ad->distributeDistSpinBox->setEnabled(true);
+ ad->reverseDistributionButton->setEnabled(true);
+ ad->distributeDistHToolButton->setIcon(im.loadIcon("distribute-horizontal-x"));
+ ad->distributeDistVToolButton->setIcon(im.loadIcon("distribute-vertical-y"));
+ ad->distributeDistHToolButton->setToolTip( tr( "Make horizontal gaps between items equal to the value specified" ) );
+ ad->distributeDistVToolButton->setToolTip( tr( "Make vertical gaps between items equal to the value specified" ) );
+ }
+ else
+ {
+ ad->distributeDistSpinBox->setEnabled(false);
+ ad->reverseDistributionButton->setEnabled(false);
+ ad->distributeDistHToolButton->setIcon(im.loadIcon("distribute-horizontal-equal"));
+ ad->distributeDistVToolButton->setIcon(im.loadIcon("distribute-vertical-equal"));
+ ad->distributeDistHToolButton->setToolTip( tr( "Make horizontal gaps between items equal" ) );
+ ad->distributeDistVToolButton->setToolTip( tr( "Make vertical gaps between items equal" ) );
+ }
+
+}
+
void AlignDistributePalette::alignToChanged(int newAlignTo)
{
currAlignTo = ScribusDoc::AlignTo(newAlignTo);
Index: scribus/ui/aligndistribute.h
===================================================================
--- scribus/ui/aligndistribute.h (Revision 26720)
+++ scribus/ui/aligndistribute.h (Arbeitskopie)
@@ -100,15 +100,13 @@
void alignCenterVer();
void alignTopOut();
void alignTopIn();
- void distributeDistH(bool usingDistance = false);
- void distributeDistValH();
+ void distributeDistH();
void distributeDistAcrossPage();
void distributeDistAcrossMargins();
void distributeRight();
void distributeBottom();
void distributeCenterH();
- void distributeDistV(bool usingDistance = false);
- void distributeDistValV();
+ void distributeDistV();
void distributeDistDownPage();
void distributeDistDownMargins();
void distributeLeft();
@@ -116,6 +114,7 @@
void distributeTop();
void swapLeft();
void swapRight();
+ void enableDistance();
void alignToChanged(int);
void alignMethodChanged(int);
Index: scribus/ui/aligndistribute.ui
===================================================================
--- scribus/ui/aligndistribute.ui (Revision 26720)
+++ scribus/ui/aligndistribute.ui (Arbeitskopie)
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>322</width>
- <height>426</height>
+ <width>266</width>
+ <height>390</height>
</rect>
</property>
<property name="windowTitle">
@@ -496,7 +496,7 @@
</property>
<property name="sizeHint" stdset="0">
<size>
- <width>40</width>
+ <width>20</width>
<height>20</height>
</size>
</property>
@@ -622,49 +622,10 @@
</property>
</widget>
</item>
- <item>
- <widget class="QToolButton" name="distributeDistHToolButton">
- <property name="minimumSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- <property name="iconSize">
- <size>
- <width>22</width>
- <height>22</height>
- </size>
- </property>
- </widget>
- </item>
</layout>
</widget>
</item>
<item>
- <spacer name="horizontalSpacer_6">
- <property name="orientation">
- <enum>Qt::Orientation::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>0</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_4">
- <item>
<widget class="FormWidget" name="distributeVerticalLabel">
<property name="label" stdset="0">
<string>Vertical</string>
@@ -751,39 +712,17 @@
</property>
</widget>
</item>
- <item>
- <widget class="QToolButton" name="distributeDistVToolButton">
- <property name="minimumSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- <property name="iconSize">
- <size>
- <width>22</width>
- <height>22</height>
- </size>
- </property>
- </widget>
- </item>
</layout>
</widget>
</item>
<item>
- <spacer name="horizontalSpacer_3">
+ <spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
- <width>40</width>
+ <width>0</width>
<height>20</height>
</size>
</property>
@@ -799,7 +738,7 @@
<item>
<widget class="FormWidget" name="distributeByGapLabel">
<property name="label" stdset="0">
- <string>By gap</string>
+ <string>Spacing</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_23">
<property name="spacing">
@@ -818,10 +757,7 @@
<number>0</number>
</property>
<item>
- <widget class="QToolButton" name="distributeAcrossMarginsToolButton">
- <property name="enabled">
- <bool>true</bool>
- </property>
+ <widget class="QToolButton" name="distributeDistHToolButton">
<property name="minimumSize">
<size>
<width>24</width>
@@ -843,10 +779,7 @@
</widget>
</item>
<item>
- <widget class="QToolButton" name="distributeDownPageToolButton">
- <property name="enabled">
- <bool>true</bool>
- </property>
+ <widget class="QToolButton" name="distributeDistVToolButton">
<property name="minimumSize">
<size>
<width>24</width>
@@ -868,7 +801,7 @@
</widget>
</item>
<item>
- <widget class="QToolButton" name="distributeAcrossPageToolButton">
+ <widget class="QToolButton" name="distributeAcrossMarginsToolButton">
<property name="enabled">
<bool>true</bool>
</property>
@@ -917,32 +850,11 @@
</property>
</widget>
</item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="FormWidget" name="swapLabel">
- <property name="label" stdset="0">
- <string>Swap</string>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout_17">
- <property name="spacing">
- <number>4</number>
- </property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
<item>
- <widget class="QToolButton" name="swapLeftToolButton">
+ <widget class="QToolButton" name="distributeAcrossPageToolButton">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
<property name="minimumSize">
<size>
<width>24</width>
@@ -964,7 +876,10 @@
</widget>
</item>
<item>
- <widget class="QToolButton" name="swapRightToolButton">
+ <widget class="QToolButton" name="distributeDownPageToolButton">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
<property name="minimumSize">
<size>
<width>24</width>
@@ -1011,7 +926,7 @@
<item>
<widget class="FormWidget" name="distributeByDistanceLabel">
<property name="label" stdset="0">
- <string>By distance</string>
+ <string>Distance && Direction</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_20">
<property name="spacing">
@@ -1030,7 +945,51 @@
<number>0</number>
</property>
<item>
- <widget class="QToolButton" name="distributeDistValueVToolButton">
+ <widget class="QCheckBox" name="enableDistanceCheckbox">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="ScrSpinBox" name="distributeDistSpinBox"/>
+ </item>
+ <item>
+ <widget class="QToolButton" name="reverseDistributionButton">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="FormWidget" name="swapLabel">
+ <property name="label" stdset="0">
+ <string>Swap</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_17">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QToolButton" name="swapLeftToolButton">
<property name="minimumSize">
<size>
<width>24</width>
@@ -1052,7 +1011,7 @@
</widget>
</item>
<item>
- <widget class="QToolButton" name="distributeDistValueHToolButton">
+ <widget class="QToolButton" name="swapRightToolButton">
<property name="minimumSize">
<size>
<width>24</width>
@@ -1073,19 +1032,6 @@
</property>
</widget>
</item>
- <item>
- <widget class="ScrSpinBox" name="distributeDistSpinBox"/>
- </item>
- <item>
- <widget class="QToolButton" name="reverseDistributionButton">
- <property name="text">
- <string/>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- </widget>
- </item>
</layout>
</widget>
</item>
@@ -1148,6 +1094,43 @@
<header>ui/widgets/pulsing_toolbutton.h</header>
</customwidget>
</customwidgets>
+ <tabstops>
+ <tabstop>buttonReferenceFirst</tabstop>
+ <tabstop>buttonReferenceSelection</tabstop>
+ <tabstop>buttonReferenceLast</tabstop>
+ <tabstop>buttonReferencePage</tabstop>
+ <tabstop>buttonReferenceMargins</tabstop>
+ <tabstop>buttonReferenceGuide</tabstop>
+ <tabstop>buttonModeMove</tabstop>
+ <tabstop>buttonModeResize</tabstop>
+ <tabstop>alignLeftInToolButton</tabstop>
+ <tabstop>alignCenterHorToolButton</tabstop>
+ <tabstop>alignRightInToolButton</tabstop>
+ <tabstop>alignRightOutToolButton</tabstop>
+ <tabstop>alignLeftOutToolButton</tabstop>
+ <tabstop>alignTopInToolButton</tabstop>
+ <tabstop>alignCenterVerToolButton</tabstop>
+ <tabstop>alignBottomInToolButton</tabstop>
+ <tabstop>alignBottomOutToolButton</tabstop>
+ <tabstop>alignTopOutToolButton</tabstop>
+ <tabstop>distributeLeftToolButton</tabstop>
+ <tabstop>distributeCenterHToolButton</tabstop>
+ <tabstop>distributeRightToolButton</tabstop>
+ <tabstop>distributeTopToolButton</tabstop>
+ <tabstop>distributeCenterVToolButton</tabstop>
+ <tabstop>distributeBottomToolButton</tabstop>
+ <tabstop>distributeDistHToolButton</tabstop>
+ <tabstop>distributeDistVToolButton</tabstop>
+ <tabstop>distributeAcrossMarginsToolButton</tabstop>
+ <tabstop>distributeDownMarginsToolButton</tabstop>
+ <tabstop>distributeAcrossPageToolButton</tabstop>
+ <tabstop>distributeDownPageToolButton</tabstop>
+ <tabstop>enableDistanceCheckbox</tabstop>
+ <tabstop>distributeDistSpinBox</tabstop>
+ <tabstop>reverseDistributionButton</tabstop>
+ <tabstop>swapLeftToolButton</tabstop>
+ <tabstop>swapRightToolButton</tabstop>
+ </tabstops>
<includes>
<include location="local">ui/scrspinbox.h</include>
</includes>
|
|
|
Craig already wrote in the forums that he does not like this. Personally, I'm not convinced by the last row either, but I could live with it As I wrote in the forums, having only three buttons in the Horizontal and Vertical section is a real improvement. The two "equal distance" buttons are also easier to grasp, when their not mixed with the three other. Finally, I attach a screenshot of three additional section I was proposing. Does not need to be implemented. More as a documentation for further tweaking... |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2025-02-21 18:50 | nitramr | New Issue | |
| 2025-02-21 18:50 | nitramr | Note Added: 0052085 | |
| 2025-02-21 18:50 | nitramr | File Added: distribute.png | |
| 2025-02-21 18:50 | nitramr | File Added: distribute_2025-02-21_01.patch | |
| 2025-02-21 18:51 | nitramr | Relationship added | related to 0017393 |
| 2025-02-22 08:52 | ale | Note Added: 0052092 | |
| 2025-02-22 08:52 | ale | File Added: distribute-sel-marg-page.png |