View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0016898 | Scribus | User Interface | public | 2023-01-15 13:07 | 2024-09-16 20:54 |
Reporter | pmjdebruijn | Assigned To | nitramr | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 1.6.0.svn | ||||
Target Version | 1.7.0 | Fixed in Version | 1.7.0.svn | ||
Summary | 0016898: Scribus' application layout starts empty | ||||
Description | Currently Scribus' application layout starts empty, which is in essence an unusable state, at least until the user enables and (typically) docks some of the utility dialogs (like Content Properties, Properties, Align & Distribute, Arrange Pages, Layers, Bookmarks). This results in very poor discoverability by new users. I've attached a screenshot how I think a new Scribus install should look upon first start. I've used the tabbed layout mainly because that will scale best across different display resolution and such. More experienced users can of course still customize to their own preference. I've briefly looked at attempting to implement this myself, but I couldn't find a good entry point for doing this. | ||||
Tags | No tags attached. | ||||
Patch | No | ||||
|
|
|
Unfortunately we are currently limited on what is currently doable on Linux because Qt is pretty broken on Wayland as for dock widgets: https://bugreports.qt.io/browse/QTBUG-85927 https://bugreports.qt.io/browse/QTBUG-87332 For eg. on current Fedora, at this point palettes are not dockable at all. |
|
@pmjdebruijn Scribus 1.7.0 gets a new docking system. A startup layout is also planned. The current version looks like this. I'm open to a better palette arrangement. |
|
hi nitramr on the one side the layout your showing looks ok... but from my point of view, on the left side and on top, it shows way too much information that the user won't probably really need. the two palettes on the right side are more than fine, but on the left there is imo too much. it's fine to be able to put them there, but I'm not sure that it's a good default. i fear that for many users it will feel overwhelming... but it might simply be, because the dialogs are still in a bad shape and the day you will have improved them, it won't be a problem anymore. who knows? Finally, there is one thing I'm wondering right now: would it not be useful to have one toolbar with buttons that open the other toolbars and the palettes / windows? |
|
@ale I reduced the startup panels (Arrange Page, Align & Distribute, Frame Properties and Content Properties). At the moment, I see the startup layout as an intermediate implementation. For sure, the panels need a redesign. Perhaps the panel content gets smaller, and we can stack some panels on one side or don't need all visible. I can think of a new header section (see dark screenshot). The top bar could be customizable by the user. There could also be some toggles for the panel visibility or a workspace switch to load other workspace presets. |
|
This is ow the new layout looks like on my laptop. On a pretty common 14' laptop. To me, it feels pretty busy and I wonder what is the goal of the left panel. I will not discuss here the fact that the content of the dialogs should be improved. On the one side, my main issue is that two of the activated tools are not of interest for most users: - "Action history" (most of all because the undo system is still very fragile) - "Outline" (only useful for very specific workflows) Then: - "Arrange pages": should probably renamed to "Pages" and I really wonder if it should not be the panel been shown in the "Content Properties" when nothing is selected. (And it should focus more on creating pages and applying master pages... but that's about its content : - ) - "Layer": The most useful part of it (the one that would justify it to be on the left side) is already in the bottom status bar. Finally, there is "Align and distribute"... which could indeed be in a left panel (even if I personally prefer to have it as a floating dialog that I hide and show as needed). It's of course nice for the user to be able to easily create and manage multiple panels all around the screen but, by default, I'd really prefer to only have the properties and content properties being docked to the right side. And only have the tools toolbar docked to the left side. On top of that, we might need a new toolbar (an horizontal one by default?) for making it easier to discover and access the existing tools / windows. (Inkscape does have something similar in their right docked toolbar) My conclusions: - Showing the properties docked on the right side by default is a huge improvement - The feature set and dialogs of Scribus are often overwhelming for new users and I believe that it's better to show them the few crucial things they need to get started. And make it easy to discover and access more features. |
|
There is an update for the standard GUI 1. The startup layout shows only: frame properties, content properties and align & distribute 2. The toolbox toolbar is attached on the left side on startup 3. Auto hide feature of the Advanced Docking system is enabled startgui_2024-07-08_01.patch (9,033 bytes)
Index: resources/iconsets/1_7_0/1_7_0.xml =================================================================== --- resources/iconsets/1_7_0/1_7_0.xml (Revision 26191) +++ resources/iconsets/1_7_0/1_7_0.xml (Arbeitskopie) @@ -574,6 +574,8 @@ <icon id="close" file="16/action-close.svg" /> <icon id="dock-float" file="16/action-window-float.svg" /> <icon id="menu-down" file="16/action-menu-down.svg" /> + <icon id="dock-auto-hide" file="16/action-pin.svg" /> + <icon id="dock-minimize" file="16/action-minimize.svg" /> <!-- Panels --> <icon id="panel-action-history" file="16/panel-action-history.svg" /> Index: scribus/manager/dock_manager.cpp =================================================================== --- scribus/manager/dock_manager.cpp (Revision 26191) +++ scribus/manager/dock_manager.cpp (Arbeitskopie) @@ -214,9 +214,10 @@ IconManager &iconManager = IconManager::instance(); dockWidget->dockAreaWidget()->titleBarButton(ads::TitleBarButtonClose)->setIcon(iconManager.loadIcon("close", 12)); - dockWidget->dockAreaWidget()->titleBarButton(ads::TitleBarButtonUndock)->setIcon(iconManager.loadIcon("dock-float", 12)); - dockWidget->dockAreaWidget()->titleBarButton(ads::TitleBarButtonTabsMenu)->setIcon(iconManager.loadIcon("menu-down", 12)); - // dock->dockAreaWidget()->titleBarButton(ads::TitleBarButtonAutoHide)->setIcon(iconManager.loadIcon("dock-auto-hide", 12)); + dockWidget->dockAreaWidget()->titleBarButton(ads::TitleBarButtonUndock)->setIcon(iconManager.loadIcon("dock-float", 16)); + dockWidget->dockAreaWidget()->titleBarButton(ads::TitleBarButtonTabsMenu)->setIcon(iconManager.loadIcon("menu-down", 16)); + dockWidget->dockAreaWidget()->titleBarButton(ads::TitleBarButtonAutoHide)->setIcon(iconManager.loadIcon("dock-auto-hide", 16)); + dockWidget->dockAreaWidget()->titleBarButton(ads::TitleBarButtonMinimize)->setIcon(iconManager.loadIcon("dock-minimize", 16)); for (auto tabCloseButton : dockWidget->dockAreaWidget()->findChildren<QAbstractButton*>("tabCloseButton")) tabCloseButton->setIcon(iconManager.loadIcon("close", 12)); @@ -243,15 +244,15 @@ * LAYOUT SCHEME * * 290px 290px * 290px - * |---------|---------|-------------------|---------| - * | Left | Center | Center | Right | - * 2/3 | | Left | | | - * | | | | | - * | | | | | - * |---------| | | | - * 1/3 | Bottom | | | | - * | Left | | | | - * |---------|---------|-------------------|---------| + * |---------|---------|-------------------|---------| + * | Left | Center | Center | Right | + * | | Left | | | 3/4 + * | | | | | + * | | | | | + * | | | |---------| + * | | | | Bottom | 1/4 + * | | | | Right | + * |---------|---------|-------------------|---------| * * *************************************************************/ @@ -268,15 +269,15 @@ addDockWidgetTabToArea(bookPalette, areaCenterLeft); addDockWidgetTabToArea(symbolPalette, areaCenterLeft); - // Left Bottom - auto *areaLeftBottom = addDockWidget(BottomDockWidgetArea, layerPalette, areaLeft); - addDockWidgetTabToArea(alignDistributePalette, areaLeftBottom); - addDockWidgetTabToArea(undoPalette, areaLeftBottom); - // Right Panel auto *areaRight = addDockWidget(RightDockWidgetArea, propertiesPalette, areaCenter); addDockWidget(CenterDockWidgetArea, contentPalette, areaRight); + // Right Bottom + auto *areaRightBottom = addDockWidget(BottomDockWidgetArea, layerPalette, areaRight); + addDockWidgetTabToArea(alignDistributePalette, areaRightBottom); + addDockWidgetTabToArea(undoPalette, areaRightBottom); + // Top Panel // auto * areaTop = addDockWidget(TopDockWidgetArea, dockToolProperties); // areaTop->setAllowedAreas(NoDockWidgetArea); @@ -283,8 +284,8 @@ // areaTop->setDockAreaFlag(CDockAreaWidget::HideSingleWidgetTitleBar, true); // Resizing area height of left and bottom-left - int heightL = areaLeft->height(); - setSplitterSizes(areaLeft, {heightL * 2 / 3, heightL * 1 / 3}); + int heightR = areaRight->height(); + setSplitterSizes(areaRight, {heightR * 3 / 4, heightR * 1 / 4}); // Resizing area width of left, center-left, center and right int widthCL = areaCenter->width(); @@ -293,6 +294,7 @@ // hide panels that are not visible in default workspace + pagePalette->closeDockWidget(); inlinePalette->closeDockWidget(); scrapbookPalette->closeDockWidget(); bookPalette->closeDockWidget(); @@ -302,9 +304,9 @@ outlinePalette->closeDockWidget(); // active palettes - areaLeft->setCurrentDockWidget(pagePalette); + //areaLeft->setCurrentDockWidget(pagePalette); areaRight->setCurrentDockWidget(propertiesPalette); - areaLeftBottom->setCurrentDockWidget(alignDistributePalette); + areaRightBottom->setCurrentDockWidget(alignDistributePalette); // add perspective for a later usage, like reset workspace to default. this->addPerspective("Default"); Index: scribus/scribus.cpp =================================================================== --- scribus/scribus.cpp (Revision 26191) +++ scribus/scribus.cpp (Arbeitskopie) @@ -305,18 +305,19 @@ CDockManager::setConfigFlag(CDockManager::ShowTabTextOnlyForActiveTab, m_prefsManager.appPrefs.uiPrefs.hideLabelsOfInactiveTabs); // Documentation: https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/blob/master/doc/user-guide.md#auto-hide-configuration-flags -// CDockManager::setAutoHideConfigFlags(CDockManager::DefaultAutoHideConfig); + CDockManager::setAutoHideConfigFlags(CDockManager::DefaultAutoHideConfig); // CDockManager::setAutoHideConfigFlag(CDockManager::AutoHideShowOnMouseOver, false); // CDockManager::setAutoHideConfigFlag(CDockManager::AutoHideCloseButtonCollapsesDock, true); // CDockManager::setAutoHideConfigFlag(CDockManager::AutoHideButtonTogglesArea, true); -// CDockManager::setAutoHideConfigFlag(CDockManager::DockAreaHasAutoHideButton, true); + CDockManager::setAutoHideConfigFlag(CDockManager::DockAreaHasAutoHideButton, true); IconManager &iconmanager = IconManager::instance(); CDockManager::iconProvider().registerCustomIcon(TabCloseIcon, iconmanager.loadIcon("close", 12)); CDockManager::iconProvider().registerCustomIcon(DockAreaCloseIcon, iconmanager.loadIcon("close", 12)); - CDockManager::iconProvider().registerCustomIcon(DockAreaMenuIcon, iconmanager.loadIcon("menu-down", 12)); - CDockManager::iconProvider().registerCustomIcon(DockAreaUndockIcon, iconmanager.loadIcon("dock-float", 12)); -// CDockManager::iconProvider().registerCustomIcon(AutoHideIcon, iconmanager.loadIcon("dock-auto-hide", 12)); + CDockManager::iconProvider().registerCustomIcon(DockAreaMenuIcon, iconmanager.loadIcon("menu-down", 16)); + CDockManager::iconProvider().registerCustomIcon(DockAreaUndockIcon, iconmanager.loadIcon("dock-float", 16)); + CDockManager::iconProvider().registerCustomIcon(AutoHideIcon, iconmanager.loadIcon("dock-auto-hide", 16)); + CDockManager::iconProvider().registerCustomIcon(DockAreaMinimizeIcon, iconmanager.loadIcon("dock-minimize", 16)); int retVal=0; //qsrand(1234); @@ -560,11 +561,11 @@ delete m_tocGenerator; } -void ScribusMainWindow::addScToolBar(ScToolBar *tb, const QString & name) +void ScribusMainWindow::addScToolBar(ScToolBar *tb, const QString & name, Qt::ToolBarArea area) { if (!scrToolBars.contains(name)) scrToolBars.insert(name, tb); - addToolBar(tb); + addToolBar(area, tb); } void ScribusMainWindow::initToolBars() @@ -579,7 +580,7 @@ addScToolBar(fileToolBar, fileToolBar->objectName()); addScToolBar(editToolBar, editToolBar->objectName()); - addScToolBar(modeToolBar, modeToolBar->objectName()); + addScToolBar(modeToolBar, modeToolBar->objectName(), Qt::ToolBarArea::LeftToolBarArea); addScToolBar(pdfToolBar, pdfToolBar->objectName()); addScToolBar(viewToolBar, viewToolBar->objectName()); connect(modeToolBar, SIGNAL(visibilityChanged(bool)), scrActions["toolsToolbarTools"], SLOT(setChecked(bool))); Index: scribus/scribus.h =================================================================== --- scribus/scribus.h (Revision 26191) +++ scribus/scribus.h (Arbeitskopie) @@ -142,7 +142,7 @@ QScreen* getScreen() const; void getScreenPosition(int& xPos, int& yPos) const; void getScreenDPI(int& dpiX, int& dpiY) const; - void addScToolBar(ScToolBar *tb, const QString& name); + void addScToolBar(ScToolBar *tb, const QString& name, Qt::ToolBarArea area = Qt::ToolBarArea::TopToolBarArea); bool warningVersion(QWidget *parent); void SetShortCut(); void startUpDialog(); |
|
new icons |
|
Honestly I'd prefer to have the Align and Distribute palette hidden and the Page palette shown by default. |
|
Ok, I will revert the panel layout to the previous state (page + distribute on left side). It is just for the startup layout and users can close, open or rearrange the layout as they want. Later, we could add predefined workspaces for different workflows, like macro typography, micro typography, preflight + proof. At least, if it makes sense. |
|
New patch: 1. The toolbox toolbar is attached on the left side on startup 2. Auto hide feature of the Advanced Docking system is enabled The two icons from above are required. startgui_2024-07-09_01.patch (6,797 bytes)
Index: resources/iconsets/1_7_0/1_7_0.xml =================================================================== --- resources/iconsets/1_7_0/1_7_0.xml (Revision 26191) +++ resources/iconsets/1_7_0/1_7_0.xml (Arbeitskopie) @@ -574,6 +574,8 @@ <icon id="close" file="16/action-close.svg" /> <icon id="dock-float" file="16/action-window-float.svg" /> <icon id="menu-down" file="16/action-menu-down.svg" /> + <icon id="dock-auto-hide" file="16/action-pin.svg" /> + <icon id="dock-minimize" file="16/action-minimize.svg" /> <!-- Panels --> <icon id="panel-action-history" file="16/panel-action-history.svg" /> Index: scribus/manager/dock_manager.cpp =================================================================== --- scribus/manager/dock_manager.cpp (Revision 26191) +++ scribus/manager/dock_manager.cpp (Arbeitskopie) @@ -214,9 +214,10 @@ IconManager &iconManager = IconManager::instance(); dockWidget->dockAreaWidget()->titleBarButton(ads::TitleBarButtonClose)->setIcon(iconManager.loadIcon("close", 12)); - dockWidget->dockAreaWidget()->titleBarButton(ads::TitleBarButtonUndock)->setIcon(iconManager.loadIcon("dock-float", 12)); - dockWidget->dockAreaWidget()->titleBarButton(ads::TitleBarButtonTabsMenu)->setIcon(iconManager.loadIcon("menu-down", 12)); - // dock->dockAreaWidget()->titleBarButton(ads::TitleBarButtonAutoHide)->setIcon(iconManager.loadIcon("dock-auto-hide", 12)); + dockWidget->dockAreaWidget()->titleBarButton(ads::TitleBarButtonUndock)->setIcon(iconManager.loadIcon("dock-float", 16)); + dockWidget->dockAreaWidget()->titleBarButton(ads::TitleBarButtonTabsMenu)->setIcon(iconManager.loadIcon("menu-down", 16)); + dockWidget->dockAreaWidget()->titleBarButton(ads::TitleBarButtonAutoHide)->setIcon(iconManager.loadIcon("dock-auto-hide", 16)); + dockWidget->dockAreaWidget()->titleBarButton(ads::TitleBarButtonMinimize)->setIcon(iconManager.loadIcon("dock-minimize", 16)); for (auto tabCloseButton : dockWidget->dockAreaWidget()->findChildren<QAbstractButton*>("tabCloseButton")) tabCloseButton->setIcon(iconManager.loadIcon("close", 12)); @@ -245,11 +246,11 @@ * 290px 290px * 290px * |---------|---------|-------------------|---------| * | Left | Center | Center | Right | - * 2/3 | | Left | | | + * 3/4 | | Left | | | * | | | | | * | | | | | * |---------| | | | - * 1/3 | Bottom | | | | + * 1/4 | Bottom | | | | * | Left | | | | * |---------|---------|-------------------|---------| * @@ -284,7 +285,7 @@ // Resizing area height of left and bottom-left int heightL = areaLeft->height(); - setSplitterSizes(areaLeft, {heightL * 2 / 3, heightL * 1 / 3}); + setSplitterSizes(areaLeft, {heightL * 3 / 4, heightL * 1 / 4}); // Resizing area width of left, center-left, center and right int widthCL = areaCenter->width(); Index: scribus/scribus.cpp =================================================================== --- scribus/scribus.cpp (Revision 26191) +++ scribus/scribus.cpp (Arbeitskopie) @@ -305,18 +305,19 @@ CDockManager::setConfigFlag(CDockManager::ShowTabTextOnlyForActiveTab, m_prefsManager.appPrefs.uiPrefs.hideLabelsOfInactiveTabs); // Documentation: https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System/blob/master/doc/user-guide.md#auto-hide-configuration-flags -// CDockManager::setAutoHideConfigFlags(CDockManager::DefaultAutoHideConfig); + CDockManager::setAutoHideConfigFlags(CDockManager::DefaultAutoHideConfig); // CDockManager::setAutoHideConfigFlag(CDockManager::AutoHideShowOnMouseOver, false); // CDockManager::setAutoHideConfigFlag(CDockManager::AutoHideCloseButtonCollapsesDock, true); // CDockManager::setAutoHideConfigFlag(CDockManager::AutoHideButtonTogglesArea, true); -// CDockManager::setAutoHideConfigFlag(CDockManager::DockAreaHasAutoHideButton, true); + CDockManager::setAutoHideConfigFlag(CDockManager::DockAreaHasAutoHideButton, true); IconManager &iconmanager = IconManager::instance(); CDockManager::iconProvider().registerCustomIcon(TabCloseIcon, iconmanager.loadIcon("close", 12)); CDockManager::iconProvider().registerCustomIcon(DockAreaCloseIcon, iconmanager.loadIcon("close", 12)); - CDockManager::iconProvider().registerCustomIcon(DockAreaMenuIcon, iconmanager.loadIcon("menu-down", 12)); - CDockManager::iconProvider().registerCustomIcon(DockAreaUndockIcon, iconmanager.loadIcon("dock-float", 12)); -// CDockManager::iconProvider().registerCustomIcon(AutoHideIcon, iconmanager.loadIcon("dock-auto-hide", 12)); + CDockManager::iconProvider().registerCustomIcon(DockAreaMenuIcon, iconmanager.loadIcon("menu-down", 16)); + CDockManager::iconProvider().registerCustomIcon(DockAreaUndockIcon, iconmanager.loadIcon("dock-float", 16)); + CDockManager::iconProvider().registerCustomIcon(AutoHideIcon, iconmanager.loadIcon("dock-auto-hide", 16)); + CDockManager::iconProvider().registerCustomIcon(DockAreaMinimizeIcon, iconmanager.loadIcon("dock-minimize", 16)); int retVal=0; //qsrand(1234); @@ -560,11 +561,11 @@ delete m_tocGenerator; } -void ScribusMainWindow::addScToolBar(ScToolBar *tb, const QString & name) +void ScribusMainWindow::addScToolBar(ScToolBar *tb, const QString & name, Qt::ToolBarArea area) { if (!scrToolBars.contains(name)) scrToolBars.insert(name, tb); - addToolBar(tb); + addToolBar(area, tb); } void ScribusMainWindow::initToolBars() @@ -579,7 +580,7 @@ addScToolBar(fileToolBar, fileToolBar->objectName()); addScToolBar(editToolBar, editToolBar->objectName()); - addScToolBar(modeToolBar, modeToolBar->objectName()); + addScToolBar(modeToolBar, modeToolBar->objectName(), Qt::ToolBarArea::LeftToolBarArea); addScToolBar(pdfToolBar, pdfToolBar->objectName()); addScToolBar(viewToolBar, viewToolBar->objectName()); connect(modeToolBar, SIGNAL(visibilityChanged(bool)), scrActions["toolsToolbarTools"], SLOT(setChecked(bool))); Index: scribus/scribus.h =================================================================== --- scribus/scribus.h (Revision 26191) +++ scribus/scribus.h (Arbeitskopie) @@ -142,7 +142,7 @@ QScreen* getScreen() const; void getScreenPosition(int& xPos, int& yPos) const; void getScreenDPI(int& dpiX, int& dpiY) const; - void addScToolBar(ScToolBar *tb, const QString& name); + void addScToolBar(ScToolBar *tb, const QString& name, Qt::ToolBarArea area = Qt::ToolBarArea::TopToolBarArea); bool warningVersion(QWidget *parent); void SetShortCut(); void startUpDialog(); |
Date Modified | Username | Field | Change |
---|---|---|---|
2023-01-15 13:07 | pmjdebruijn | New Issue | |
2023-01-15 13:07 | pmjdebruijn | File Added: scribus_suggested_default_layout.png | |
2023-01-16 00:01 | jghali | Note Added: 0049936 | |
2023-07-24 17:15 | nitramr | Assigned To | => nitramr |
2023-07-24 17:15 | nitramr | Status | new => assigned |
2023-07-24 17:16 | nitramr | Relationship added | related to 0016979 |
2023-07-24 17:23 | nitramr | Note Added: 0050279 | |
2023-07-24 17:23 | nitramr | File Added: Bildschirmfoto vom 2023-07-24 19-18-29.png | |
2023-07-25 17:35 | ale | Note Added: 0050281 | |
2023-08-09 21:05 | nitramr | Note Added: 0050298 | |
2023-08-09 21:05 | nitramr | File Added: Bildschirmfoto vom 2023-08-09 22-56-18.png | |
2023-08-09 21:05 | nitramr | File Added: Bildschirmfoto vom 2023-08-09 22-58-47.png | |
2023-08-12 08:54 | ale | Note Added: 0050299 | |
2023-08-12 08:54 | ale | File Added: left-right-panes.png | |
2024-07-08 15:48 | nitramr | Note Added: 0051231 | |
2024-07-08 15:48 | nitramr | File Added: Bildschirmfoto vom 2024-07-08 17-25-59.png | |
2024-07-08 15:48 | nitramr | File Added: startgui_2024-07-08_01.patch | |
2024-07-08 15:53 | nitramr | Note Added: 0051232 | |
2024-07-08 15:53 | nitramr | File Added: action-minimize.svg | |
2024-07-08 15:53 | nitramr | File Added: action-pin.svg | |
2024-07-08 16:03 | nitramr | Target Version | => 1.7.0 |
2024-07-08 18:09 | jghali | Note Added: 0051233 | |
2024-07-09 06:34 | nitramr | Note Added: 0051234 | |
2024-07-09 20:01 | nitramr | Note Added: 0051235 | |
2024-07-09 20:01 | nitramr | File Added: startgui_2024-07-09_01.patch | |
2024-07-10 20:56 | cbradney | Status | assigned => resolved |
2024-07-10 20:56 | cbradney | Resolution | open => fixed |
2024-07-10 20:56 | cbradney | Fixed in Version | => 1.7.0.svn |
2024-09-16 20:54 | cbradney | Status | resolved => closed |