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 |