View Issue Details

IDProjectCategoryView StatusLast Update
0015896ScribusProperties Palettepublic2024-03-23 22:30
Reporterale Assigned To 
PrioritynormalSeverityfeatureReproducibilityN/A
Status newResolutionopen 
Product Version1.5.6.svn 
Target Version1.7.0 
Summary0015896: [PATCH] Indigo UI: shrink the size of the XYZ pane
Descriptionfollowing martin's Indigo UI project, i've started shrinking the XYZ pane in the properties palette.

some notes:

- the name of the item disappears.
  martin planned, to put in an "advanced" expandable section, i'd prefer to make the name editable in the outline window: it's a better place for it! (a separate patch will follow; please wait for that patch before committing this one)
- the group and ungroup buttons are removed (they are actions, not properties; the are other and better ways to group items)
- martin puts the basepoint at top left (most prominent place!), i'd prefer putting it at the bottom right (it's not so often used...)
- martin puts the "do not export item" button in the "advanced" expandable section.
  as i wrote in 0015894 i did not expect it, but i've found an ok place for it... please discuss there if we can remove the button. i would be really be really glad if we can get rid of it.
TagsNo tags attached.
PatchYes

Relationships

related to 0015813 new Indigo UI: remove the item name from the Properties Palette 
related to 0009048 closednitramr Better control for the origin and basepoint of all frames 
related to 0017180 assignednitramr Indigo UI: Properties Palette Redesign 

Activities

ale

2019-11-01 17:15

manager  

xyz-3.png (20,970 bytes)   
xyz-3.png (20,970 bytes)   

ale

2019-11-01 17:48

manager   ~0046896

Last edited: 2019-11-04 18:25

[there is a newer patch further down...]

here is the patch.

the one open issue, is the rotation icon that cannot be read.
we can of course keep the unicode character... it's probably good enough (and in the current state of the icon, probably even better)

the images can be downloaded from the merge request on gitlab:

https://gitlab.com/scribus/scribus/merge_requests/8

there will be an appimage as soon as the CI has done its work.

just one note: if we can remove the "do not export" button, then i would align the basepoint widget to the right of the panel.

and, as discussed on irc: if somebody can provide better (quality) icons: you're very welcome!

i've not tested it throughly, but i think that the patch is ready for review and commit.
(or as soon i've (somebody has) submitted a patch for the "outline" window... i plan to do it tomorrow...)

indigo-pp-xyz.diff (32,117 bytes)   
diff --git a/resources/iconsets/1_5_1/16/flip-object-horizontal.png b/resources/iconsets/1_5_1/16/flip-object-horizontal.png
index b5053fa7f..ccc1e982a 100644
Binary files a/resources/iconsets/1_5_1/16/flip-object-horizontal.png and b/resources/iconsets/1_5_1/16/flip-object-horizontal.png differ
diff --git a/resources/iconsets/1_5_1/16/flip-object-vertical.png b/resources/iconsets/1_5_1/16/flip-object-vertical.png
index d94b746f7..d3281a0f0 100644
Binary files a/resources/iconsets/1_5_1/16/flip-object-vertical.png and b/resources/iconsets/1_5_1/16/flip-object-vertical.png differ
diff --git a/resources/iconsets/1_5_1/chain-small-closed.png b/resources/iconsets/1_5_1/chain-small-closed.png
new file mode 100644
index 000000000..d5105d0a4
Binary files /dev/null and b/resources/iconsets/1_5_1/chain-small-closed.png differ
diff --git a/resources/iconsets/1_5_1/chain-small-open.png b/resources/iconsets/1_5_1/chain-small-open.png
new file mode 100644
index 000000000..d32371f6a
Binary files /dev/null and b/resources/iconsets/1_5_1/chain-small-open.png differ
diff --git a/resources/iconsets/1_5_1/group.png b/resources/iconsets/1_5_1/group.png
deleted file mode 100644
index d2aae0af6..000000000
Binary files a/resources/iconsets/1_5_1/group.png and /dev/null differ
diff --git a/resources/iconsets/1_5_1/level-bottom.png b/resources/iconsets/1_5_1/level-bottom.png
new file mode 100644
index 000000000..89dd044a8
Binary files /dev/null and b/resources/iconsets/1_5_1/level-bottom.png differ
diff --git a/resources/iconsets/1_5_1/level-down.png b/resources/iconsets/1_5_1/level-down.png
new file mode 100644
index 000000000..de94d3c76
Binary files /dev/null and b/resources/iconsets/1_5_1/level-down.png differ
diff --git a/resources/iconsets/1_5_1/level-top.png b/resources/iconsets/1_5_1/level-top.png
new file mode 100644
index 000000000..d34bc0084
Binary files /dev/null and b/resources/iconsets/1_5_1/level-top.png differ
diff --git a/resources/iconsets/1_5_1/level-up.png b/resources/iconsets/1_5_1/level-up.png
new file mode 100644
index 000000000..d863d84a8
Binary files /dev/null and b/resources/iconsets/1_5_1/level-up.png differ
diff --git a/resources/iconsets/1_5_1/ungroup.png b/resources/iconsets/1_5_1/ungroup.png
deleted file mode 100644
index 52a8f19b9..000000000
Binary files a/resources/iconsets/1_5_1/ungroup.png and /dev/null differ
diff --git a/scribus/ui/propertiespalette_xyz.cpp b/scribus/ui/propertiespalette_xyz.cpp
index 62be16af1..52268ee77 100644
--- a/scribus/ui/propertiespalette_xyz.cpp
+++ b/scribus/ui/propertiespalette_xyz.cpp
@@ -61,32 +61,30 @@ PropertiesPalette_XYZ::PropertiesPalette_XYZ( QWidget* parent) : QWidget(parent)
 	connect(userActionSniffer, SIGNAL(actionStart()), this, SLOT(spinboxStartUserAction()));
 	connect(userActionSniffer, SIGNAL(actionEnd()), this, SLOT(spinboxFinishUserAction()));
 
-	nameEdit->setFocusPolicy(Qt::ClickFocus);
-
 	installSniffer(xposSpin);
 	installSniffer(yposSpin);
 	installSniffer(widthSpin);
 	installSniffer(heightSpin);
 
+	IconManager& im=IconManager::instance();
+
 	keepFrameWHRatioButton->setCheckable( true );
-	keepFrameWHRatioButton->setAutoRaise( true );
-	keepFrameWHRatioButton->setMaximumSize( QSize( 15, 32767 ) );
-	keepFrameWHRatioButton->setChecked(false);
+	{
+		QIcon icon = QIcon();
+		icon.addPixmap(im.loadPixmap("chain-small-closed.png"), QIcon::Normal, QIcon::On);
+		icon.addPixmap(im.loadPixmap("chain-small-open.png"), QIcon::Normal, QIcon::Off);
+		keepFrameWHRatioButton->setIcon(icon);
+	}
 
+	// rotation->setPixmap(im.loadPixmap("rotation.png")); // TODO: using the unicode char might even be better... but i did not manage to load the pixmap in the label
 	rotationSpin->setNewUnit(6);
 	rotationSpin->setWrapping( true );
 	installSniffer(rotationSpin);
-	rotationLabel->setBuddy(rotationSpin);
-
-	IconManager& im=IconManager::instance();
-	levelUp->setIcon(im.loadIcon("16/go-up.png"));
-	levelDown->setIcon(im.loadIcon("16/go-down.png"));
-	levelTop->setIcon(im.loadIcon("16/go-top.png"));
-	levelBottom->setIcon(im.loadIcon("16/go-bottom.png"));
-	levelLabel->setAlignment( Qt::AlignCenter );
 
-	doGroup->setIcon(im.loadIcon("group.png"));
-	doUnGroup->setIcon(im.loadIcon("ungroup.png"));
+	levelUp->setIcon(IconManager::instance().loadIcon("level-up.png"));
+	levelDown->setIcon(IconManager::instance().loadIcon("level-down.png"));
+	levelTop->setIcon(IconManager::instance().loadIcon("level-top.png"));
+	levelBottom->setIcon(IconManager::instance().loadIcon("level-bottom.png"));
 
 	flipH->setIcon(im.loadIcon("16/flip-object-horizontal.png"));
 	flipH->setCheckable( true );
@@ -128,12 +126,9 @@ PropertiesPalette_XYZ::PropertiesPalette_XYZ( QWidget* parent) : QWidget(parent)
 	connect(levelBottom, SIGNAL(clicked()), this, SLOT(handleBack()));
 	connect(basePointWidget, SIGNAL(buttonClicked(int)), this, SLOT(handleBasePoint(int)));
 
-	connect(nameEdit , SIGNAL(Leaved()) , this, SLOT(handleNewName()));
 	connect(doLock   , SIGNAL(clicked()), this, SLOT(handleLock()));
 	connect(noPrint  , SIGNAL(clicked()), this, SLOT(handlePrint()));
 	connect(noResize , SIGNAL(clicked()), this, SLOT(handleLockSize()));
-	connect(doGroup  , SIGNAL(clicked()), this, SLOT(handleGrouping()) );
-	connect(doUnGroup, SIGNAL(clicked()), this, SLOT(handleUngrouping()) );
 
 	m_haveItem = false;
 	xposSpin->showValue(0);
@@ -203,19 +198,16 @@ void PropertiesPalette_XYZ::unsetDoc()
 	m_haveItem = false;
 	m_doc   = nullptr;
 	m_item  = nullptr;
-	nameEdit->clear();
 	xposSpin->setConstants(nullptr);
 	yposSpin->setConstants(nullptr);
 	widthSpin->setConstants(nullptr);
 	heightSpin->setConstants(nullptr);
-	doGroup->setEnabled(false);
-	doUnGroup->setEnabled(false);
 	flipH->setEnabled(false);
 	flipV->setEnabled(false);
-	xposLabel->setText( tr( "&X-Pos:" ) );
-	yposLabel->setText( tr( "&Y-Pos:" ) );
-	widthLabel->setText( tr( "&Width:" ) );
-	heightLabel->setText( tr( "&Height:" ) );
+	xposLabel->setText(tr("&X"));
+	yposLabel->setText(tr("&Y"));
+	widthLabel->setText(tr("&W"));
+	heightLabel->setText(tr("&H"));
 	xposSpin->showValue(0);
 	yposSpin->showValue(0);
 	widthSpin->showValue(0);
@@ -288,16 +280,11 @@ void PropertiesPalette_XYZ::setCurrentItem(PageItem *item)
 	if (!m_doc)
 		setDoc(item->doc());
 
-	disconnect(nameEdit, SIGNAL(Leaved()), this, SLOT(handleNewName()));
-
 	m_haveItem = false;
 	m_item = item;
 
-	nameEdit->setText(m_item->itemName());
 	levelLabel->setText( QString::number(m_item->level()) );
 
-	connect(nameEdit, SIGNAL(Leaved()), this, SLOT(handleNewName()));
-
 //CB replaces old emits from PageItem::emitAllToGUI()
 	disconnect(xposSpin, SIGNAL(valueChanged(double)), this, SLOT(handleNewX()));
 	disconnect(yposSpin, SIGNAL(valueChanged(double)), this, SLOT(handleNewY()));
@@ -344,29 +331,34 @@ void PropertiesPalette_XYZ::setCurrentItem(PageItem *item)
 	connect(flipV   , SIGNAL(clicked()), this, SLOT(handleFlipV()), Qt::UniqueConnection);
 	connect(rotationSpin, SIGNAL(valueChanged(double)), this, SLOT(handleRotation()), Qt::UniqueConnection);
 
-	bool setter = false;
-	xposSpin->setEnabled(!setter);
-	yposSpin->setEnabled(!setter);
-	bool haveSameParent = m_doc->m_Selection->objectsHaveSameParent();
-	levelGroup->setEnabled(haveSameParent && !item->locked());
+	xposSpin->setEnabled(true);
+	yposSpin->setEnabled(true);
+	{
+		bool enabled = m_doc->m_Selection->objectsHaveSameParent() && !item->locked();
+		levelTop->setEnabled(enabled);
+		levelUp->setEnabled(enabled);
+		levelDown->setEnabled(enabled);
+		levelBottom->setEnabled(enabled);
+	}
+	// TODO: what is doing this?
 	if ((m_item->isGroup()) && (!m_item->isSingleSel))
 	{
 		setEnabled(true);
 	}
 	if ((m_item->itemType() == PageItem::Line) && m_lineMode)
 	{
-		xposLabel->setText( tr( "&X1:" ) );
-		yposLabel->setText( tr( "Y&1:" ) );
-		widthLabel->setText( tr( "X&2:" ) );
-		heightLabel->setText( tr( "&Y2:" ) );
+		xposLabel->setText(tr("&X1"));
+		yposLabel->setText(tr("Y&1"));
+		widthLabel->setText(tr("X&2"));
+		heightLabel->setText(tr("&Y2"));
 		rotationSpin->setEnabled(false);
 	}
 	else
 	{
-		xposLabel->setText( tr( "&X-Pos:" ) );
-		yposLabel->setText( tr( "&Y-Pos:" ) );
-		widthLabel->setText( tr( "&Width:" ) );
-		heightLabel->setText( tr( "&Height:" ) );
+		xposLabel->setText(tr("&X"));
+		yposLabel->setText(tr("&Y"));
+		widthLabel->setText(tr("&W"));
+		heightLabel->setText(tr("&H"));
 		rotationSpin->setEnabled(true);
 	}
 	m_haveItem = true;
@@ -389,14 +381,6 @@ void PropertiesPalette_XYZ::setCurrentItem(PageItem *item)
 		rrR = 360 - rrR;
 	noResize->setEnabled(!m_item->isArc());
 	
-	doGroup->setEnabled(false);
-	doUnGroup->setEnabled(false);
-	if ((m_doc->m_Selection->count() > 1) && (haveSameParent))
-		doGroup->setEnabled(true);
-	if (m_doc->m_Selection->count() == 1)
-		doUnGroup->setEnabled(m_item->isGroup());
-	if ((m_doc->appMode == modeEditClip) && (m_item->isGroup()))
-		doUnGroup->setEnabled(false);
 	if (m_item->asOSGFrame())
 	{
 		setEnabled(true);
@@ -413,7 +397,6 @@ void PropertiesPalette_XYZ::handleAppModeChanged(int oldMode, int mode)
 {
 	if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning())
 		return;
-	doUnGroup->setEnabled(mode != modeEdit && mode != modeEditClip && m_item->isGroup());
 	doLock->setEnabled(mode != modeEditClip);
 }
 
@@ -422,8 +405,6 @@ void PropertiesPalette_XYZ::handleSelectionChanged()
 	if (!m_haveDoc || !m_ScMW || m_ScMW->scriptIsRunning())
 		return;
 
-	nameEdit->setEnabled(m_doc->m_Selection->count() == 1);
-
 	PageItem* currItem = currentItemFromSelection();
 	if (m_doc->m_Selection->count() > 1)
 	{
@@ -458,7 +439,6 @@ void PropertiesPalette_XYZ::handleSelectionChanged()
 		heightSpin->setEnabled(true);
 		rotationSpin->setEnabled(true);
 
-		nameEdit->setEnabled(false);
 		flipH->setCheckable( false );
 		flipV->setCheckable( false );
 		flipH->setChecked(false);
@@ -474,12 +454,6 @@ void PropertiesPalette_XYZ::handleSelectionChanged()
 		int itemType = currItem ? (int) currItem->itemType() : -1;
 		
 		m_haveItem = (itemType!=-1);
-		if (itemType == -1)
-		{
-			doGroup->setEnabled(false);
-			doUnGroup->setEnabled(false);
-		}
-		nameEdit->setEnabled(true);
 		basePointWidget->setEnabled(true);
 
 		setEnabled(true);
@@ -1187,6 +1161,7 @@ void PropertiesPalette_XYZ::handleFlipV()
 	m_ScMW->scrActions["itemFlipV"]->toggle();
 }
 
+/*
 void PropertiesPalette_XYZ::handleNewName()
 {
 	if (m_ScMW->scriptIsRunning() || !m_haveDoc || !m_haveItem)
@@ -1233,6 +1208,7 @@ void PropertiesPalette_XYZ::handleNewName()
 		}
 	}
 }
+*/
 
 void PropertiesPalette_XYZ::installSniffer(ScrSpinBox *spinBox)
 {
@@ -1359,20 +1335,3 @@ void PropertiesPalette_XYZ::showFlippedV(bool isFlippedV)
 {
 	flipV->setChecked(isFlippedV);
 }
-
-void PropertiesPalette_XYZ::handleGrouping()
-{
-	m_ScMW->GroupObj();
-	doGroup->setEnabled(false);
-	doUnGroup->setEnabled(true);
-	handleSelectionChanged();
-	//FIXME
-	//TabStack->setItemEnabled(idShapeItem, false);
-}
-
-void PropertiesPalette_XYZ::handleUngrouping()
-{
-	m_ScMW->UnGroupObj();
-	m_doc->invalidateAll();
-	m_doc->regionsChanged()->update(QRect());
-}
diff --git a/scribus/ui/propertiespalette_xyz.h b/scribus/ui/propertiespalette_xyz.h
index 7892c5043..3d31181e5 100644
--- a/scribus/ui/propertiespalette_xyz.h
+++ b/scribus/ui/propertiespalette_xyz.h
@@ -84,9 +84,6 @@ private slots:
 	void handleLock();
 	void handleLockSize();
 	void handlePrint();
-	void handleNewName();
-	void handleGrouping();
-	void handleUngrouping();
 
 protected slots:
 	//virtual void reject();
diff --git a/scribus/ui/propertiespalette_xyzbase.ui b/scribus/ui/propertiespalette_xyzbase.ui
index 06e9c35d5..9171e3d76 100644
--- a/scribus/ui/propertiespalette_xyzbase.ui
+++ b/scribus/ui/propertiespalette_xyzbase.ui
@@ -30,353 +30,104 @@
     <number>0</number>
    </property>
    <item>
-    <widget class="QGroupBox" name="nameGroup">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="title">
-      <string>Name</string>
-     </property>
-     <layout class="QHBoxLayout" name="horizontalLayout">
-      <property name="spacing">
-       <number>2</number>
-      </property>
-      <property name="leftMargin">
-       <number>2</number>
-      </property>
-      <property name="topMargin">
-       <number>2</number>
-      </property>
-      <property name="rightMargin">
-       <number>2</number>
-      </property>
-      <property name="bottomMargin">
-       <number>2</number>
-      </property>
-      <item>
-       <widget class="NameWidget" name="nameEdit">
-        <property name="focusPolicy">
-         <enum>Qt::ClickFocus</enum>
-        </property>
-        <property name="toolTip">
-         <string>Name of selected object</string>
-        </property>
-       </widget>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="geoGroup">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="title">
-      <string>Geometry</string>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout_2">
-      <property name="leftMargin">
-       <number>2</number>
-      </property>
-      <property name="topMargin">
-       <number>2</number>
-      </property>
-      <property name="rightMargin">
-       <number>2</number>
-      </property>
-      <property name="bottomMargin">
-       <number>2</number>
-      </property>
-      <item>
-       <layout class="QGridLayout" name="geoGroupLayout">
-        <property name="leftMargin">
-         <number>5</number>
-        </property>
-        <property name="topMargin">
-         <number>5</number>
-        </property>
-        <property name="rightMargin">
-         <number>5</number>
-        </property>
-        <property name="bottomMargin">
-         <number>5</number>
-        </property>
-        <property name="spacing">
-         <number>4</number>
-        </property>
-        <item row="0" column="0">
-         <widget class="QLabel" name="xposLabel">
-          <property name="text">
-           <string>&amp;X-Pos:</string>
-          </property>
-          <property name="buddy">
-           <cstring>xposSpin</cstring>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="1">
-         <widget class="ScrSpinBox" name="xposSpin">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="toolTip">
-           <string>Horizontal position of current basepoint</string>
-          </property>
-         </widget>
-        </item>
-        <item row="2" column="0">
-         <widget class="QLabel" name="widthLabel">
-          <property name="text">
-           <string>&amp;Width:</string>
-          </property>
-          <property name="buddy">
-           <cstring>widthSpin</cstring>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="0">
-         <widget class="QLabel" name="yposLabel">
-          <property name="text">
-           <string>&amp;Y-Pos:</string>
-          </property>
-          <property name="buddy">
-           <cstring>yposSpin</cstring>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="1">
-         <widget class="ScrSpinBox" name="yposSpin">
-          <property name="toolTip">
-           <string>Vertical position of current basepoint</string>
-          </property>
-         </widget>
-        </item>
-        <item row="2" column="1">
-         <widget class="ScrSpinBox" name="widthSpin">
-          <property name="toolTip">
-           <string>Width of current selection</string>
-          </property>
-         </widget>
-        </item>
-        <item row="3" column="0">
-         <widget class="QLabel" name="heightLabel">
-          <property name="text">
-           <string>&amp;Height:</string>
-          </property>
-          <property name="buddy">
-           <cstring>heightSpin</cstring>
-          </property>
-         </widget>
-        </item>
-        <item row="3" column="1">
-         <widget class="ScrSpinBox" name="heightSpin">
-          <property name="toolTip">
-           <string>Height of current selection</string>
-          </property>
-         </widget>
-        </item>
-        <item row="4" column="0">
-         <widget class="QLabel" name="rotationLabel">
-          <property name="text">
-           <string>&amp;Rotation:</string>
-          </property>
-         </widget>
-        </item>
-        <item row="4" column="1">
-         <widget class="ScrSpinBox" name="rotationSpin">
-          <property name="toolTip">
-           <string>Rotation of object at current basepoint</string>
-          </property>
-          <property name="wrapping">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="5" column="0">
-         <widget class="QLabel" name="basepointLabel">
-          <property name="toolTip">
-           <string>Point from which measurements or rotation angles are referenced</string>
-          </property>
-          <property name="text">
-           <string>Basepoint:</string>
-          </property>
-         </widget>
-        </item>
-        <item row="5" column="1">
-         <widget class="BasePointWidget" name="basePointWidget" native="true"/>
-        </item>
-        <item row="2" column="2" rowspan="2">
-         <widget class="LinkButton" name="keepFrameWHRatioButton">
-          <property name="maximumSize">
-           <size>
-            <width>15</width>
-            <height>32767</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Keep the aspect ratio</string>
-          </property>
-          <property name="text">
-           <string>...</string>
-          </property>
-          <property name="checkable">
-           <bool>true</bool>
-          </property>
-          <property name="autoRaise">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_2">
-     <item>
-      <widget class="QGroupBox" name="levelGroup">
-       <property name="title">
-        <string>Level</string>
+    <layout class="QGridLayout" name="gridLayout_3">
+     <item row="1" column="4">
+      <widget class="QLabel" name="heightLabel">
+       <property name="text">
+        <string>&amp;H</string>
+       </property>
+       <property name="buddy">
+        <cstring>heightSpin</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QLabel" name="xposLabel">
+       <property name="text">
+        <string>&amp;X:</string>
+       </property>
+       <property name="buddy">
+        <cstring>xposSpin</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="5">
+      <widget class="ScrSpinBox" name="heightSpin">
+       <property name="toolTip">
+        <string>Height of current selection</string>
        </property>
-       <layout class="QGridLayout" name="gridLayout">
-        <property name="leftMargin">
-         <number>5</number>
-        </property>
-        <property name="topMargin">
-         <number>5</number>
-        </property>
-        <property name="rightMargin">
-         <number>5</number>
-        </property>
-        <property name="bottomMargin">
-         <number>5</number>
-        </property>
-        <property name="spacing">
-         <number>4</number>
-        </property>
-        <item row="0" column="0">
-         <widget class="QToolButton" name="levelUp">
-          <property name="maximumSize">
-           <size>
-            <width>22</width>
-            <height>22</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Move one level up</string>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="0">
-         <widget class="QToolButton" name="levelDown">
-          <property name="maximumSize">
-           <size>
-            <width>22</width>
-            <height>22</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Move one level down</string>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="1">
-         <widget class="QToolButton" name="levelTop">
-          <property name="maximumSize">
-           <size>
-            <width>22</width>
-            <height>22</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Move to front</string>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="1">
-         <widget class="QToolButton" name="levelBottom">
-          <property name="maximumSize">
-           <size>
-            <width>22</width>
-            <height>22</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Move to back</string>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="2" rowspan="2">
-         <widget class="QLabel" name="levelLabel">
-          <property name="toolTip">
-           <string>Indicates the level the object is on, 1 means the object is at the bottom</string>
-          </property>
-          <property name="text">
-           <string>0</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
       </widget>
      </item>
-     <item>
-      <spacer name="horizontalSpacer">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
+     <item row="0" column="2">
+      <widget class="ScrSpinBox" name="xposSpin">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
        </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
+       <property name="toolTip">
+        <string>Horizontal position of current basepoint</string>
        </property>
-      </spacer>
+      </widget>
+     </item>
+     <item row="1" column="2">
+      <widget class="ScrSpinBox" name="widthSpin">
+       <property name="toolTip">
+        <string>Width of current selection</string>
+       </property>
+      </widget>
      </item>
-     <item>
-      <layout class="QGridLayout" name="gridLayout_2">
-       <item row="0" column="0">
-        <widget class="QToolButton" name="doGroup">
+     <item row="0" column="5">
+      <widget class="ScrSpinBox" name="yposSpin">
+       <property name="toolTip">
+        <string>Vertical position of current basepoint</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="4">
+      <widget class="QLabel" name="yposLabel">
+       <property name="text">
+        <string>&amp;Y:</string>
+       </property>
+       <property name="buddy">
+        <cstring>yposSpin</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <widget class="QLabel" name="widthLabel">
+       <property name="text">
+        <string>&amp;W</string>
+       </property>
+       <property name="buddy">
+        <cstring>widthSpin</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="2" colspan="2">
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <item>
+        <widget class="ScrSpinBox" name="rotationSpin">
          <property name="toolTip">
-          <string>Group the selected objects</string>
+          <string>Rotation of object at current basepoint</string>
          </property>
-         <property name="text">
-          <string/>
+         <property name="wrapping">
+          <bool>true</bool>
          </property>
         </widget>
        </item>
-       <item row="1" column="0">
-        <widget class="QToolButton" name="doUnGroup">
+       <item>
+        <widget class="QToolButton" name="flipV">
          <property name="toolTip">
-          <string>Ungroup the selected group</string>
+          <string>Flip vertically</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="0" column="1">
+       <item>
         <widget class="QToolButton" name="flipH">
          <property name="toolTip">
           <string>Flip horizontally</string>
@@ -386,48 +137,159 @@
          </property>
         </widget>
        </item>
-       <item row="1" column="1">
-        <widget class="QToolButton" name="flipV">
+       <item>
+        <spacer name="horizontalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item row="1" column="6">
+      <widget class="QToolButton" name="noResize">
+       <property name="toolTip">
+        <string>Lock or unlock the size of the object</string>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1">
+      <widget class="QLabel" name="rotation">
+       <property name="text">
+        <string>⟳</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="6">
+      <widget class="QToolButton" name="doLock">
+       <property name="toolTip">
+        <string>Lock or unlock the object</string>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="2" colspan="2">
+      <layout class="QHBoxLayout" name="horizontalLayout_5">
+       <item>
+        <widget class="QToolButton" name="levelTop">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="toolTip">
-          <string>Flip vertically</string>
+          <string>Move to front</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="0" column="2">
-        <widget class="QToolButton" name="doLock">
+       <item>
+        <widget class="QToolButton" name="levelUp">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="toolTip">
-          <string>Lock or unlock the object</string>
+          <string>Move one level up</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="1" column="2">
-        <widget class="QToolButton" name="noPrint">
+       <item>
+        <widget class="QToolButton" name="levelDown">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="toolTip">
-          <string>Enable or disable exporting of the object</string>
+          <string>Move one level down</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="0" column="3">
-        <widget class="QToolButton" name="noResize">
+       <item>
+        <widget class="QToolButton" name="levelBottom">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="toolTip">
-          <string>Lock or unlock the size of the object</string>
+          <string>Move to back</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
+       <item>
+        <widget class="QLabel" name="levelLabel">
+         <property name="toolTip">
+          <string>Indicates the level the object is on, 1 means the object is at the bottom</string>
+         </property>
+         <property name="text">
+          <string>0</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
       </layout>
      </item>
+     <item row="2" column="5" rowspan="3">
+      <widget class="BasePointWidget" name="basePointWidget" native="true"/>
+     </item>
+     <item row="2" column="6">
+      <widget class="QToolButton" name="noPrint">
+       <property name="toolTip">
+        <string>Enable or disable exporting of the object</string>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="3">
+      <widget class="QToolButton" name="keepFrameWHRatioButton">
+       <property name="text">
+        <string>...</string>
+       </property>
+      </widget>
+     </item>
     </layout>
    </item>
    <item>
@@ -446,11 +308,6 @@
   </layout>
  </widget>
  <customwidgets>
-  <customwidget>
-   <class>NameWidget</class>
-   <extends>QLineEdit</extends>
-   <header>ui/propertiespalette_utils.h</header>
-  </customwidget>
   <customwidget>
    <class>ScrSpinBox</class>
    <extends>QDoubleSpinBox</extends>
@@ -462,11 +319,6 @@
    <header>ui/basepointwidget.h</header>
    <container>1</container>
   </customwidget>
-  <customwidget>
-   <class>LinkButton</class>
-   <extends>QToolButton</extends>
-   <header>ui/linkbutton.h</header>
-  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>
indigo-pp-xyz.diff (32,117 bytes)   

PeterBenedek

2019-11-01 19:31

developer   ~0046897

" - martin puts the basepoint at top left (most prominent place!), i'd prefer putting it at the bottom right (it's not so often used...)"

Sorry ale, but I do not agree.
Basepoint function is very important, it must be used many times during editing, in case if the work is serious!
I suggest that if it is in the lower right corner, make bigger (like Martin's basepoint).
Martin's_basepoint.jpg (20,060 bytes)   
Martin's_basepoint.jpg (20,060 bytes)   

jghali

2019-11-01 19:57

administrator   ~0046898

There is one big problem with this patch: it removes the item name edit field without moving it in another place.

PeterBenedek

2019-11-01 20:20

developer   ~0046900

Proposal:

"Move icon" in the Inkscape (symbolic icons) very nice.
What do you think?
Move_icons.jpg (2,654 bytes)   
Move_icons.jpg (2,654 bytes)   

PeterBenedek

2019-11-01 20:34

developer   ~0046901

From field switch order (if you pressed the tabulator button) the H field is left out.

ale

2019-11-01 21:33

manager   ~0046902

@jean, as written above, my plan would be to move the editable item name to the outline window... i really would like to avoid to have it in a "hidden" part of the palette like martin was suggesting.
@peter, yes i like those up and down icons, too can youp rovide 4 png files of the right size? i think that 16 x 16 should be fine.
@peter: i'm fine with using martin's basepoint widget. but i prefer to first get the new laoyut with the existing one and -- as we shortly discussed with craig in irc -- later replace it with a nicer / more useful one. (martin's has also two more anchor points, which means that the logic of the code has to slightly change...)


and yes, the icons need some more polishing... (and we also need the dark theme icons...).

jghali

2019-11-02 05:38

administrator   ~0046905

Last edited: 2019-11-02 05:42

@ale, that would be the wrong way to do it, see my response on 0015897. That would also imply that user working on PDF forms would need to use an additional dialog window, the document outline window, to do their job. And given the performance impact this dialog has when opened, I would prefer to avoid giving users another reason to open it.

cbradney

2019-11-02 06:43

administrator   ~0046907

Agree, this needs more work. Item name should not disappear from this palette.

ale

2019-11-02 07:36

manager   ~0046909

the performance argument is indeed a very valid one.

the main goal of my effort is to make both the properties palette and content palette, with most sections expanded, to use at most half of the vertical space on a typical screen (ok, my screen).

in my experience, very few users have a use for the item name and it's difficult to place it somewhere without using a full line.
(of course, the ones who are participating in this thread are the ones that are most likely to see a use for it... but somebody who creates a book, a flyer or a magazine will probably never edit an item name)

as written above, martin wanted an expanding "advanced" section for the xyz pane.
personally, i don't like the idea: an item should belong to a place or not.
so we should find the right place for each thing, rather than hiding what we don't like.

a (temporary?) compromise, could to create an "advanced" collapsing section for the whole properties palette and put in there things like the "item name" and the "do not export" button...
what do you think about that?

PeterBenedek

2019-11-02 10:08

developer   ~0046911

Last edited: 2019-11-02 10:10

" but somebody who creates a book, a flyer or a magazine will probably never edit an item name"

Only a opinion.
I've been using it for ten years the scribus but I've never edited name of item.

PeterBenedek

2019-11-02 10:33

developer   ~0046912

Proposal:

The values ​​of X and Y shouldn't be side by side, but under each other.
Side by side terrible.

ale

2019-11-02 11:28

manager   ~0046914

Last edited: 2019-11-02 11:31

i've implemented this layout without much thoughts on this specific topic.

i see that the three other main dtp software has them vertical. in two columns
inkscape has it all horizontally: x, y, w, h.

having x,y and w,h horizontally, allows us to use very little space and imo a very logical placement for the three lock buttons (proportions, position, size).

i wonder if side by side is just something that is just as good once somebody gets used to it or if it has real drawbacks.
(the tab order is currently broken, but i will fix it as soon as possible)

personally, in scribus, i don't look at the values as having any meaning. i just go to adjust a single value to something correct and i check visually on the canvas that everything looks ok.
but i agree that if you want to check the x,y coordinates (or the w.h pair) it's more comfortable if they are stacked on top of each other rather than side by side.

if you can suggest a good layout with the three buttons, i can try a different proposal, otherwise i'd suggest to keep it as is and we will see if in practice it is as disturbing as it seems at first sight.
now, that the single items are in place, it's not hard to move them around.

and after having written all this i've tried to shuffle around the fields and buttons... would the attached proposal be better?
the xy wh are for sure to your taste... but are the lock buttons ok?

ale

2019-11-02 11:29

manager  

xyz-4.png (30,362 bytes)   
xyz-4.png (30,362 bytes)   

ale

2019-11-02 11:37

manager   ~0046916

i attache the xcf with a layer per label / button
xyz-4.xcf (75,050 bytes)   
xyz-4.xcf (75,050 bytes)   

PeterBenedek

2019-11-02 12:22

developer   ~0046917

New and old Properties.
I thought so.
Opinion?
xyz-4_modified_PeterB.xcf (80,919 bytes)   
xyz-4_modified_PeterB.xcf (80,919 bytes)   
Basepoint.jpg (32,841 bytes)   
Basepoint.jpg (32,841 bytes)   

PeterBenedek

2019-11-02 13:00

developer   ~0046919

Just a idea...
xyz_PeterB.jpg (34,670 bytes)   
xyz_PeterB.jpg (34,670 bytes)   

ale

2019-11-02 13:24

manager   ~0046923

i don't know, i really don't like the basepoint on the left.
personally, i (almost) never change it... it's probably because i don't rotate so often the items.

i have the feeling that the last proposal with the three columns attracts my eyes fully in the wrong place.

also, i'm trying to use as little vertical (and horizontal) space as possible...

i can try to make a merge request with my poposal above, without the "do not export item", the new level icons, and with a new widget for the base point aligned to the right... (having seen your screenshot above has given me an idea how to easily tweak the current widget to look better... but four of the buttons won't be clickable for now)

it will take a couple of hours...

PeterBenedek

2019-11-02 14:20

developer   ~0046924

The left basepoint is important for the continuity of work.
You choose the alignment and then X-pos or Y-pos.

Set a simple example for you...
alignment.gif (332,316 bytes)   
alignment.gif (332,316 bytes)   

PeterBenedek

2019-11-02 14:26

developer  

xyz_PeterB-2.jpg (34,103 bytes)   
xyz_PeterB-2.jpg (34,103 bytes)   

ale

2019-11-02 16:13

manager   ~0046927

i wrote a very intelligent note to this topic but it somehow got lost.

i will not write it again just this:

here is an appimage with the proposal above, inclusive the new widget for the basepoint (it does not work yet, but you can click the position that correspond at the ones that are implemented in scribus):

https://gitlab.com/a.l.e/scribus/-/jobs/340092171/artifacts/file/Scribus-nightly-x86_64.AppImage

personally, i really like it.

ps.: btw, the new widget is much simpler and cleaner than the previous one : - )

PeterBenedek

2019-11-02 17:49

developer   ~0046929

-- Padlock icon is wrong place (I don't understand the logic).
-- Would be needed a small padding inside the widget.
-- ale! Please! Basepoint widget let it be the left of the panel.

PeterBenedek

2019-11-02 18:51

developer   ~0046930

Compromise?

Please consider the possibility.

PeterBenedek

2019-11-02 19:05

developer   ~0046931

Move icons sequence: I change the order
XYZ_compromise.jpg (17,944 bytes)   
XYZ_compromise.jpg (17,944 bytes)   

ale

2019-11-02 19:30

manager   ~0046932

peter, i really don't understand why you want so hard the basepoint to the left.

in the gif above, i don't understand either why you're changing the basepoint.
you have the snap to item activated and you can align the frames without copy pasting the position.
(it's a clever trick, but there are easier ways to get items to be on top of each other...)

indeed, i've never seen somebody using the basepoint in such an intensive way!

i would say that the most typical use of the base point i can think of is to get the rotation to behave correctly.
but i might also be an edge case...

my reasons for having on the right side are:

- it allows to have a more compact widget.
- normally, what i want to reach is one of fields among x, y, w, and h... and rotation... and it's those fields that i'd like to give the best visibility
- we can use the same widgets for possibly creating an horizontal toolbar by separating this in two.

for the lock buttons, i agree that the logic is not really good.
martin's idea was to have the position (full) lock attached to the x, y fields and the size lock attached to the w and h.
the size constraint is also attached to the w and h.

i guess that the fact that it's easier to place the luck buttons was the reason why martin has put x and y on a line instead of a column.

i've tried to put together one last proposal...

https://gitlab.com/a.l.e/scribus/-/jobs/340133784/artifacts/file/Scribus-nightly-x86_64.AppImage

this time the basepoint is working.

there are some spacing and padding issues, but i'd like to solve them when all the widgets will be reworked and we can go through all the spacings and find a common solution for the whole palette.

you're welcome to try it out in the appimage and see if it's really so terrible to use...
xyz-5.png (16,285 bytes)   
xyz-5.png (16,285 bytes)   

ale

2019-11-02 19:42

manager   ~0046933

your latest proposal has crossed mine.

personally, the part i use most in the xyz panel are the level buttons... followed by the rotation... sometimes i set the width to a given value in mm.

the two proposals are very similar. but i'd prefer to keep on the left side the small fields with rotation and levels... and the big basepoint can easily be reached on the right side.

PeterBenedek

2019-11-02 20:17

developer   ~0046934

"you have the snap to item activated and you can align the frames without copy pasting the position."
It is not the alignment that matters, but the order of the operation.
If you first set a value and then click the basepoint, the end result will be different.
Correct order: set the basepoint --> set the value
That is why the basepoint should be to the left.

Proposal:
Please change the order of the movement buttons (https://bugs.scribus.net/file_download.php?file_id=10691&type=bug)
Correct order: Move to back, Move one level down, Move level one up, Move up

PeterBenedek

2019-11-03 08:09

developer   ~0046938

Last edited: 2019-11-03 08:10

Hi ale.

Thank you for your work, and your time.
Basepoint is bigger, that's great.
X below Y, thats excellent.

Final request :-)
In your original proposal the basepoint was below the H field.
Is this possible?

ale_original.jpg (13,524 bytes)   
ale_original.jpg (13,524 bytes)   
peter_request.jpg (8,649 bytes)   
peter_request.jpg (8,649 bytes)   

ale

2019-11-03 11:40

manager   ~0046939

Last edited: 2019-11-03 11:44

a new appimage with the order of the level ups an downs reversed and left aligned right basepoint...

https://gitlab.com/a.l.e/scribus/-/jobs/340305155/artifacts/file/Scribus-nightly-x86_64.AppImage


the behavior when enlarging the palette is not correct yet...
this is a general issue with the panels...
i'd like to find a solution for it when all the panes have been adapted. (then we will know what's the minimal and maximal width)

ale

2019-11-03 11:43

manager  

xyz-6.png (17,362 bytes)   
xyz-6.png (17,362 bytes)   

PeterBenedek

2019-11-03 12:14

developer   ~0046940

I am very grateful for it.

Two little things.
1) basepoint flipp horizontally icon is wrong
2) basepoint tool middle left icon bigger than the rest (yours too, but not so much: basepoint_middle_left_size.jpg)

thanks again
basepoint_middle_left_size.jpg (10,138 bytes)   
basepoint_middle_left_size.jpg (10,138 bytes)   

ale

2019-11-03 12:47

manager   ~0046941

a new appimage with both things (hopefully) fixed!

https://gitlab.com/a.l.e/scribus/-/jobs/340325646/artifacts/file/Scribus-nightly-x86_64.AppImage

thanks for reporting the two issue!

PeterBenedek

2019-11-03 13:32

developer   ~0046943

Last edited: 2019-11-03 13:34

Icons on the Flip buttons need to be replace because, they represent the operation incorrectly.

Flip_buttons.jpg (10,972 bytes)   
Flip_buttons.jpg (10,972 bytes)   

ale

2019-11-03 14:48

manager   ~0046945

oooops. uploaded.

https://gitlab.com/a.l.e/scribus/-/jobs/340353267/artifacts/file/Scribus-nightly-x86_64.AppImage

i was testing with the wrong shape (a line...) and i did not see that it was not correct...

PeterBenedek

2019-11-03 15:26

developer   ~0046946

Perfect :-)

ale

2019-11-04 17:16

manager   ~0046955

here is a new patch...

https://gitlab.com/scribus/scribus/merge_requests/11
indigo-pp-xyz-peter.diff (52,026 bytes)   
diff --git a/resources/iconsets/1_5_1/16/flip-object-horizontal.png b/resources/iconsets/1_5_1/16/flip-object-horizontal.png
index b5053fa7f..32b36a363 100644
Binary files a/resources/iconsets/1_5_1/16/flip-object-horizontal.png and b/resources/iconsets/1_5_1/16/flip-object-horizontal.png differ
diff --git a/resources/iconsets/1_5_1/16/flip-object-vertical.png b/resources/iconsets/1_5_1/16/flip-object-vertical.png
index d94b746f7..6602230d6 100644
Binary files a/resources/iconsets/1_5_1/16/flip-object-vertical.png and b/resources/iconsets/1_5_1/16/flip-object-vertical.png differ
diff --git a/resources/iconsets/1_5_1/16/level-bottom.png b/resources/iconsets/1_5_1/16/level-bottom.png
new file mode 100644
index 000000000..d97871f60
Binary files /dev/null and b/resources/iconsets/1_5_1/16/level-bottom.png differ
diff --git a/resources/iconsets/1_5_1/16/level-down.png b/resources/iconsets/1_5_1/16/level-down.png
new file mode 100644
index 000000000..a7022c426
Binary files /dev/null and b/resources/iconsets/1_5_1/16/level-down.png differ
diff --git a/resources/iconsets/1_5_1/16/level-top.png b/resources/iconsets/1_5_1/16/level-top.png
new file mode 100644
index 000000000..f0a4400cb
Binary files /dev/null and b/resources/iconsets/1_5_1/16/level-top.png differ
diff --git a/resources/iconsets/1_5_1/16/level-up.png b/resources/iconsets/1_5_1/16/level-up.png
new file mode 100644
index 000000000..7d64fe3b7
Binary files /dev/null and b/resources/iconsets/1_5_1/16/level-up.png differ
diff --git a/resources/iconsets/1_5_1/rotation.png b/resources/iconsets/1_5_1/rotation.png
new file mode 100644
index 000000000..4288effc9
Binary files /dev/null and b/resources/iconsets/1_5_1/rotation.png differ
diff --git a/scribus/CMakeLists.txt b/scribus/CMakeLists.txt
index a92433cb1..29dd78740 100644
--- a/scribus/CMakeLists.txt
+++ b/scribus/CMakeLists.txt
@@ -157,6 +157,7 @@ set(SCRIBUS_UI_SRC
 	ui/prefs_pdfexportbase.ui
 	ui/prefs_tableofcontentsbase.ui
 	ui/prefs_documentitemattributesbase.ui
+	ui/basepointwidgetbase.ui
 	ui/printdialogbase.ui
 	ui/propertiespalette_groupbase.ui
 	ui/propertiespalette_imagebase.ui
diff --git a/scribus/ui/basepointwidget.cpp b/scribus/ui/basepointwidget.cpp
index c6dca8f09..d9af4482d 100644
--- a/scribus/ui/basepointwidget.cpp
+++ b/scribus/ui/basepointwidget.cpp
@@ -7,197 +7,84 @@ for which a new license (GPL+exception) is in place.
 
 #include "basepointwidget.h"
 
-BasePointWidget::BasePointWidget(QWidget *pa, int mode) : QWidget(pa)
-{
-	m_mode = mode;
-	if (m_mode == 0)
-	{
-		setMinimumSize(QSize(48, 48));
-		setMaximumSize(QSize(48, 48));
-	}
-	else
-	{
-		setMinimumSize(QSize(48, 16));
-		setMaximumSize(QSize(48, 16));
-	}
-	setMouseTracking(true);
-	selectedBase = 0;
-	hooveredBase = -1;
-	Mpressed = false;
-} 
+#include <QButtonGroup>
+#include "iconmanager.h"
 
-void BasePointWidget::paintEvent(QPaintEvent *e)
+BasePointWidget::BasePointWidget(QWidget *parent) : QWidget(parent)
 {
-	QPainter p;
-	p.begin(this);
-	p.setRenderHint(QPainter::Antialiasing, true);
-	p.setBrush(palette().color(QPalette::Window));
-	p.setPen(Qt::NoPen);
-	p.drawRect(0, 0, width(), height());
-	p.setBrush(Qt::black);
-	p.setPen(QPen(palette().color(QPalette::WindowText), 1));
-	if (m_mode == 0)
-	{
-		p.drawEllipse( 4,  4, 10, 10);
-		p.drawEllipse(34,  4, 10, 10);
-		p.drawEllipse(19, 19, 10, 10);
-		p.drawEllipse( 4, 34, 10, 10);
-		p.drawEllipse(34, 34, 10, 10);
-	}
-	else
-	{
-		p.drawEllipse( 4,  4, 10, 10);
-		p.drawEllipse(19,  4, 10, 10);
-		p.drawEllipse(34,  4, 10, 10);
-	}
-	p.setPen(QPen(palette().color(QPalette::WindowText), 2));
-	if (m_mode == 0)
-	{
-		p.drawLine(8, 8, 33, 8);
-		p.drawLine(8, 38, 33, 38);
-		p.drawLine(8, 8, 8, 33);
-		p.drawLine(38, 8, 38, 33);
-	}
-	else
-		p.drawLine(8, 8, 33, 8);
-	p.setBrush(Qt::white);
-	p.setPen(QPen(palette().color(QPalette::WindowText), 2));
-	if (m_mode == 0)
-	{
-		p.drawEllipse( 3,  3, 10, 10);
-		p.drawEllipse(33,  3, 10, 10);
-		p.drawEllipse(18, 18, 10, 10);
-		p.drawEllipse( 3, 33, 10, 10);
-		p.drawEllipse(33, 33, 10, 10);
-	}
-	else
-	{
-		p.drawEllipse( 3,  3, 10, 10);
-		p.drawEllipse(18,  3, 10, 10);
-		p.drawEllipse(33,  3, 10, 10);
-	}
-	if (hooveredBase > -1)
-	{
-		p.setBrush(Qt::NoBrush);
-		p.setPen(QPen(palette().color(QPalette::Highlight), 1));
-		if (hooveredBase == 0)
-			p.drawEllipse( 4,  4, 8, 8);
-		else if (hooveredBase == 1)
-			p.drawEllipse(34,  4, 8, 8);
-		else if (hooveredBase == 2)
-		{
-			if (m_mode == 0)
-				p.drawEllipse(19, 19, 8, 8);
-			else
-				p.drawEllipse(19,  4, 8, 8);
-		}
-		else if (hooveredBase == 3)
-			p.drawEllipse( 4, 34, 8, 8);
-		else if (hooveredBase == 4)
-			p.drawEllipse(34, 34, 8, 8);
-	}
-	p.setBrush(palette().color(QPalette::WindowText));
-	p.setPen(Qt::NoPen);
-	if (selectedBase == 0)
-		p.drawEllipse( 5, 5, 6, 6);
-	else if (selectedBase == 1)
-		p.drawEllipse(35, 5, 6, 6);
-	else if (selectedBase == 2)
-	{
-		if (m_mode == 0)
-			p.drawEllipse(20, 20, 6, 6);
-		else
-			p.drawEllipse(20,  5, 6, 6);
-	}
-	else if (selectedBase == 3)
-		p.drawEllipse( 5, 35, 6, 6);
-	else if (selectedBase == 4)
-		p.drawEllipse(35, 35, 6, 6);
-	p.end();
-}
+	setupUi(this);
 
-void BasePointWidget::mousePressEvent(QMouseEvent *m)
-{
-	m->accept();
-	Mpressed = true;
-}
+	auto group = new QButtonGroup(this);
+	group->addButton(buttonNE);
+	group->addButton(buttonNW);
+	group->addButton(buttonCenter);
+	group->addButton(buttonSE);
+	group->addButton(buttonSW);
 
-void BasePointWidget::mouseReleaseEvent(QMouseEvent *m)
-{
-	m->accept();
-	if (Mpressed)
-	{
-		QPoint p = m->pos();
-		if (m_mode == 0)
-		{
-			if (QRect( 3,  3, 10, 10).contains(p))
-				selectedBase = 0;
-			else if (QRect(33,  3, 10, 10).contains(p))
-				selectedBase = 1;
-			else if (QRect(18, 18, 10, 10).contains(p))
-				selectedBase = 2;
-			else if (QRect( 3, 33, 10, 10).contains(p))
-				selectedBase = 3;
-			else if (QRect(33, 33, 10, 10).contains(p))
-				selectedBase = 4;
-		}
-		else
-		{
-			if (QRect( 3,  3, 9, 9).contains(p))
-				selectedBase = 0;
-			else if (QRect(33,  3, 10, 10).contains(p))
-				selectedBase = 1;
-			else if (QRect(18,  3, 10, 10).contains(p))
-				selectedBase = 2;
-		}
-		emit buttonClicked(selectedBase);
-	}
-	update();
-}
+	buttonE->setEnabled(false);
+	buttonN->setEnabled(false);
+	buttonW->setEnabled(false);
+	buttonS->setEnabled(false);
 
-void BasePointWidget::mouseMoveEvent(QMouseEvent *m)
-{
-	m->accept();
-	QPoint p = m->pos();
-	hooveredBase = -1;
-	if (m_mode == 0)
-	{
-		if (QRect( 3,  3, 10, 10).contains(p))
-			hooveredBase = 0;
-		else if (QRect(33,  3, 10, 10).contains(p))
-			hooveredBase = 1;
-		else if (QRect(18, 18, 10, 10).contains(p))
-			hooveredBase = 2;
-		else if (QRect( 3, 33, 10, 10).contains(p))
-			hooveredBase = 3;
-		else if (QRect(33, 33, 10, 10).contains(p))
-			hooveredBase = 4;
-	}
-	else
-	{
-		if (QRect( 3,  3, 10, 10).contains(p))
-			hooveredBase = 0;
-		else if (QRect(33,  3, 10, 10).contains(p))
-			hooveredBase = 1;
-		else if (QRect(18,  3, 10, 10).contains(p))
-			hooveredBase = 2;
-	}
-	update();
-}
+	IconManager& im=IconManager::instance();
+
+	loadIcon(im, buttonNE);
+	loadIcon(im, buttonN);
+	loadIcon(im, buttonNW);
+	loadIcon(im, buttonE);
+	loadIcon(im, buttonCenter);
+	loadIcon(im, buttonW);
+	loadIcon(im, buttonSE);
+	loadIcon(im, buttonS);
+	loadIcon(im, buttonSW);
 
-void BasePointWidget::leaveEvent(QEvent*)
+	connect(buttonNE, &QToolButton::clicked, [this]() { emit buttonClicked(0); });
+	connect(buttonNW, &QToolButton::clicked, [this]() { emit buttonClicked(1); });
+	connect(buttonCenter, &QToolButton::clicked, [this]() { emit buttonClicked(2); });
+	connect(buttonSE, &QToolButton::clicked, [this]() { emit buttonClicked(3); });
+	connect(buttonSW, &QToolButton::clicked, [this]() { emit buttonClicked(4); });
+} 
+
+void BasePointWidget::loadIcon(IconManager& im, QToolButton* button)
 {
-	hooveredBase = -1;
-	update();
+	QIcon icon = QIcon();
+	icon.addPixmap(im.loadPixmap("16/baseline-checked.png"), QIcon::Normal, QIcon::On);
+	icon.addPixmap(im.loadPixmap("16/baseline-unchecked.png"), QIcon::Normal, QIcon::Off);
+	button->setIcon(icon);
 }
 
 int BasePointWidget::checkedId()
 {
-	return selectedBase;
+	if (buttonNE->isChecked())
+		return 0;
+	else if (buttonNW->isChecked())
+		return 1;
+	else if (buttonCenter->isChecked())
+		return 2;
+	else if (buttonSE->isChecked())
+		return 3;
+	else if (buttonSW->isChecked())
+		return 4;
+	return 0;
 }
 
 void BasePointWidget::setCheckedId(int id)
 {
-	selectedBase = id;
-	update();
+	switch (id) {
+		case 0:
+			buttonNE->setChecked(true);
+			break;
+		case 1:
+			buttonNW->setChecked(true);
+			break;
+		case 2:
+			buttonCenter->setChecked(true);
+			break;
+		case 3:
+			buttonSE->setChecked(true);
+			break;
+		case 4:
+			buttonSE->setChecked(true);
+			break;
+	}
 }
diff --git a/scribus/ui/basepointwidget.h b/scribus/ui/basepointwidget.h
index abfde3c9f..0ae85bd2c 100644
--- a/scribus/ui/basepointwidget.h
+++ b/scribus/ui/basepointwidget.h
@@ -7,18 +7,19 @@ for which a new license (GPL+exception) is in place.
 #ifndef BASEPOINTWIDGET_H
 #define BASEPOINTWIDGET_H
 
+#include "ui_basepointwidgetbase.h"
+
 #include <QWidget>
-#include <QPaintEvent>
-#include <QMouseEvent>
-#include <QPainter>
 #include "scribusapi.h"
 
-class SCRIBUS_API BasePointWidget : public QWidget
+class IconManager;
+
+class SCRIBUS_API BasePointWidget : public QWidget, public Ui::BasePointWidgetBase
 {
 	Q_OBJECT
 
 public:
-	BasePointWidget(QWidget *pa, int mode = 0);
+	BasePointWidget(QWidget *parent);
 	~BasePointWidget() {}
 	/**
 	  BasePoint values:
@@ -30,16 +31,8 @@ public:
 	  */
 	int checkedId();
 	void setCheckedId(int id);
-	void paintEvent(QPaintEvent *e);
-	void mousePressEvent(QMouseEvent *m);
-	void mouseReleaseEvent(QMouseEvent *);
-	void mouseMoveEvent(QMouseEvent *m);
-	void leaveEvent(QEvent*);
 private:
-	int m_mode;
-	int selectedBase;
-	int hooveredBase;
-	bool Mpressed;
+	void loadIcon(IconManager& im, QToolButton* button);
 signals:
 	void buttonClicked(int);
 };
diff --git a/scribus/ui/basepointwidgetbase.ui b/scribus/ui/basepointwidgetbase.ui
new file mode 100644
index 000000000..66d3a24f0
--- /dev/null
+++ b/scribus/ui/basepointwidgetbase.ui
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>BasePointWidgetBase</class>
+ <widget class="QWidget" name="BasePointWidgetBase">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>62</width>
+    <height>51</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <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>
+   <property name="spacing">
+    <number>1</number>
+   </property>
+   <item row="1" column="0">
+    <widget class="QToolButton" name="buttonE">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="2">
+    <widget class="QToolButton" name="buttonN">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="3">
+    <widget class="QToolButton" name="buttonW">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="3">
+    <widget class="QToolButton" name="buttonNW">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0">
+    <widget class="QToolButton" name="buttonNE">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+     <property name="checked">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="2">
+    <widget class="QToolButton" name="buttonCenter">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0">
+    <widget class="QToolButton" name="buttonSE">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="2">
+    <widget class="QToolButton" name="buttonS">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="3">
+    <widget class="QToolButton" name="buttonSW">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>buttonNE</tabstop>
+  <tabstop>buttonN</tabstop>
+  <tabstop>buttonNW</tabstop>
+  <tabstop>buttonE</tabstop>
+  <tabstop>buttonCenter</tabstop>
+  <tabstop>buttonW</tabstop>
+  <tabstop>buttonSE</tabstop>
+  <tabstop>buttonS</tabstop>
+  <tabstop>buttonSW</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/scribus/ui/propertiespalette_xyz.cpp b/scribus/ui/propertiespalette_xyz.cpp
index 62be16af1..8666a0188 100644
--- a/scribus/ui/propertiespalette_xyz.cpp
+++ b/scribus/ui/propertiespalette_xyz.cpp
@@ -61,32 +61,35 @@ PropertiesPalette_XYZ::PropertiesPalette_XYZ( QWidget* parent) : QWidget(parent)
 	connect(userActionSniffer, SIGNAL(actionStart()), this, SLOT(spinboxStartUserAction()));
 	connect(userActionSniffer, SIGNAL(actionEnd()), this, SLOT(spinboxFinishUserAction()));
 
-	nameEdit->setFocusPolicy(Qt::ClickFocus);
-
 	installSniffer(xposSpin);
 	installSniffer(yposSpin);
 	installSniffer(widthSpin);
 	installSniffer(heightSpin);
 
-	keepFrameWHRatioButton->setCheckable( true );
-	keepFrameWHRatioButton->setAutoRaise( true );
-	keepFrameWHRatioButton->setMaximumSize( QSize( 15, 32767 ) );
+	IconManager& im=IconManager::instance();
+
+	// keepFrameWHRatioButton->setCheckable(true);
+	// {
+	// 	QIcon icon = QIcon();
+	// 	icon.addPixmap(im.loadPixmap("chain-small-closed.png"), QIcon::Normal, QIcon::On);
+	// 	icon.addPixmap(im.loadPixmap("chain-small-open.png"), QIcon::Normal, QIcon::Off);
+	// 	keepFrameWHRatioButton->setIcon(icon);
+	// }
+
+	keepFrameWHRatioButton->setCheckable(true);
+	keepFrameWHRatioButton->setAutoRaise(true);
+	keepFrameWHRatioButton->setMaximumSize(QSize(15, 32767));
 	keepFrameWHRatioButton->setChecked(false);
 
+	// rotation->setPixmap(im.loadPixmap("rotation.png")); // TODO: using the unicode char might even be better... but i did not manage to load the pixmap in the label
 	rotationSpin->setNewUnit(6);
 	rotationSpin->setWrapping( true );
 	installSniffer(rotationSpin);
-	rotationLabel->setBuddy(rotationSpin);
-
-	IconManager& im=IconManager::instance();
-	levelUp->setIcon(im.loadIcon("16/go-up.png"));
-	levelDown->setIcon(im.loadIcon("16/go-down.png"));
-	levelTop->setIcon(im.loadIcon("16/go-top.png"));
-	levelBottom->setIcon(im.loadIcon("16/go-bottom.png"));
-	levelLabel->setAlignment( Qt::AlignCenter );
 
-	doGroup->setIcon(im.loadIcon("group.png"));
-	doUnGroup->setIcon(im.loadIcon("ungroup.png"));
+	levelUp->setIcon(IconManager::instance().loadIcon("16/level-up.png"));
+	levelDown->setIcon(IconManager::instance().loadIcon("16/level-down.png"));
+	levelTop->setIcon(IconManager::instance().loadIcon("16/level-top.png"));
+	levelBottom->setIcon(IconManager::instance().loadIcon("16/level-bottom.png"));
 
 	flipH->setIcon(im.loadIcon("16/flip-object-horizontal.png"));
 	flipH->setCheckable( true );
@@ -99,12 +102,6 @@ PropertiesPalette_XYZ::PropertiesPalette_XYZ( QWidget* parent) : QWidget(parent)
 	a.addPixmap(im.loadPixmap("16/lock-unlocked.png"), QIcon::Normal, QIcon::Off);
 	doLock->setIcon(a);
 
-	noPrint->setCheckable( true );
-	QIcon a2 = QIcon();
-	a2.addPixmap(im.loadPixmap("NoPrint.png"), QIcon::Normal, QIcon::On);
-	a2.addPixmap(im.loadPixmap("16/document-print.png"), QIcon::Normal, QIcon::Off);
-	noPrint->setIcon(a2);
-
 	noResize->setCheckable( true );
 	QIcon a3 = QIcon();
 	a3.addPixmap(im.loadPixmap("framenoresize.png"), QIcon::Normal, QIcon::On);
@@ -128,12 +125,8 @@ PropertiesPalette_XYZ::PropertiesPalette_XYZ( QWidget* parent) : QWidget(parent)
 	connect(levelBottom, SIGNAL(clicked()), this, SLOT(handleBack()));
 	connect(basePointWidget, SIGNAL(buttonClicked(int)), this, SLOT(handleBasePoint(int)));
 
-	connect(nameEdit , SIGNAL(Leaved()) , this, SLOT(handleNewName()));
 	connect(doLock   , SIGNAL(clicked()), this, SLOT(handleLock()));
-	connect(noPrint  , SIGNAL(clicked()), this, SLOT(handlePrint()));
 	connect(noResize , SIGNAL(clicked()), this, SLOT(handleLockSize()));
-	connect(doGroup  , SIGNAL(clicked()), this, SLOT(handleGrouping()) );
-	connect(doUnGroup, SIGNAL(clicked()), this, SLOT(handleUngrouping()) );
 
 	m_haveItem = false;
 	xposSpin->showValue(0);
@@ -203,19 +196,16 @@ void PropertiesPalette_XYZ::unsetDoc()
 	m_haveItem = false;
 	m_doc   = nullptr;
 	m_item  = nullptr;
-	nameEdit->clear();
 	xposSpin->setConstants(nullptr);
 	yposSpin->setConstants(nullptr);
 	widthSpin->setConstants(nullptr);
 	heightSpin->setConstants(nullptr);
-	doGroup->setEnabled(false);
-	doUnGroup->setEnabled(false);
 	flipH->setEnabled(false);
 	flipV->setEnabled(false);
-	xposLabel->setText( tr( "&X-Pos:" ) );
-	yposLabel->setText( tr( "&Y-Pos:" ) );
-	widthLabel->setText( tr( "&Width:" ) );
-	heightLabel->setText( tr( "&Height:" ) );
+	xposLabel->setText(tr("&X"));
+	yposLabel->setText(tr("&Y"));
+	widthLabel->setText(tr("&W"));
+	heightLabel->setText(tr("&H"));
 	xposSpin->showValue(0);
 	yposSpin->showValue(0);
 	widthSpin->showValue(0);
@@ -235,20 +225,20 @@ void PropertiesPalette_XYZ::setLineMode(int lineMode)
 {
 	if (lineMode == 0)
 	{
-		xposLabel->setText( tr( "&X-Pos:" ) );
-		yposLabel->setText( tr( "&Y-Pos:" ) );
-		widthLabel->setText( tr( "&Width:" ) );
-		heightLabel->setText( tr( "&Height:" ) );
+		xposLabel->setText(tr("&X"));
+		yposLabel->setText(tr("&Y"));
+		widthLabel->setText(tr("&W"));
+		heightLabel->setText(tr("&H"));
 		rotationSpin->setEnabled(true);
 		heightSpin->setEnabled(false);
 		m_lineMode = false;
 	}
 	else
 	{
-		xposLabel->setText( tr( "&X1:" ) );
-		yposLabel->setText( tr( "Y&1:" ) );
-		widthLabel->setText( tr( "X&2:" ) );
-		heightLabel->setText( tr( "&Y2:" ) );
+		xposLabel->setText(tr("&X1:"));
+		yposLabel->setText(tr("Y&1:"));
+		widthLabel->setText(tr("X&2:"));
+		heightLabel->setText(tr("&Y2:"));
 		rotationSpin->setEnabled(false);
 		heightSpin->setEnabled(true);
 		m_lineMode = true;
@@ -288,23 +278,17 @@ void PropertiesPalette_XYZ::setCurrentItem(PageItem *item)
 	if (!m_doc)
 		setDoc(item->doc());
 
-	disconnect(nameEdit, SIGNAL(Leaved()), this, SLOT(handleNewName()));
-
 	m_haveItem = false;
 	m_item = item;
 
-	nameEdit->setText(m_item->itemName());
 	levelLabel->setText( QString::number(m_item->level()) );
 
-	connect(nameEdit, SIGNAL(Leaved()), this, SLOT(handleNewName()));
-
 //CB replaces old emits from PageItem::emitAllToGUI()
 	disconnect(xposSpin, SIGNAL(valueChanged(double)), this, SLOT(handleNewX()));
 	disconnect(yposSpin, SIGNAL(valueChanged(double)), this, SLOT(handleNewY()));
 	disconnect(widthSpin, SIGNAL(valueChanged(double)), this, SLOT(handleNewW()));
 	disconnect(heightSpin, SIGNAL(valueChanged(double)), this, SLOT(handleNewH()));
 	disconnect(doLock, SIGNAL(clicked()), this, SLOT(handleLock()));
-	disconnect(noPrint, SIGNAL(clicked()), this, SLOT(handlePrint()));
 	disconnect(noResize, SIGNAL(clicked()), this, SLOT(handleLockSize()));
 	disconnect(flipH, SIGNAL(clicked()), this, SLOT(handleFlipH()));
 	disconnect(flipV, SIGNAL(clicked()), this, SLOT(handleFlipV()));
@@ -323,7 +307,6 @@ void PropertiesPalette_XYZ::setCurrentItem(PageItem *item)
 	flipH->setCheckable(checkableFlip);
 	flipV->setCheckable(checkableFlip);
 
-	noPrint->setChecked(!item->printEnabled());
 	showFlippedH(item->imageFlippedH());
 	showFlippedV(item->imageFlippedV());
 	double rr = item->rotation();
@@ -338,35 +321,39 @@ void PropertiesPalette_XYZ::setCurrentItem(PageItem *item)
 	connect(widthSpin   , SIGNAL(valueChanged(double)), this, SLOT(handleNewW()), Qt::UniqueConnection);
 	connect(heightSpin  , SIGNAL(valueChanged(double)), this, SLOT(handleNewH()), Qt::UniqueConnection);
 	connect(doLock  , SIGNAL(clicked()), this, SLOT(handleLock()), Qt::UniqueConnection);
-	connect(noPrint , SIGNAL(clicked()), this, SLOT(handlePrint()), Qt::UniqueConnection);
 	connect(noResize, SIGNAL(clicked()), this, SLOT(handleLockSize()), Qt::UniqueConnection);
 	connect(flipH   , SIGNAL(clicked()), this, SLOT(handleFlipH()), Qt::UniqueConnection);
 	connect(flipV   , SIGNAL(clicked()), this, SLOT(handleFlipV()), Qt::UniqueConnection);
 	connect(rotationSpin, SIGNAL(valueChanged(double)), this, SLOT(handleRotation()), Qt::UniqueConnection);
 
-	bool setter = false;
-	xposSpin->setEnabled(!setter);
-	yposSpin->setEnabled(!setter);
-	bool haveSameParent = m_doc->m_Selection->objectsHaveSameParent();
-	levelGroup->setEnabled(haveSameParent && !item->locked());
+	xposSpin->setEnabled(true);
+	yposSpin->setEnabled(true);
+	{
+		bool enabled = m_doc->m_Selection->objectsHaveSameParent() && !item->locked();
+		levelTop->setEnabled(enabled);
+		levelUp->setEnabled(enabled);
+		levelDown->setEnabled(enabled);
+		levelBottom->setEnabled(enabled);
+	}
+	// TODO: what is doing this?
 	if ((m_item->isGroup()) && (!m_item->isSingleSel))
 	{
 		setEnabled(true);
 	}
 	if ((m_item->itemType() == PageItem::Line) && m_lineMode)
 	{
-		xposLabel->setText( tr( "&X1:" ) );
-		yposLabel->setText( tr( "Y&1:" ) );
-		widthLabel->setText( tr( "X&2:" ) );
-		heightLabel->setText( tr( "&Y2:" ) );
+		xposLabel->setText(tr("&X1"));
+		yposLabel->setText(tr("Y&1"));
+		widthLabel->setText(tr("X&2"));
+		heightLabel->setText(tr("&Y2"));
 		rotationSpin->setEnabled(false);
 	}
 	else
 	{
-		xposLabel->setText( tr( "&X-Pos:" ) );
-		yposLabel->setText( tr( "&Y-Pos:" ) );
-		widthLabel->setText( tr( "&Width:" ) );
-		heightLabel->setText( tr( "&Height:" ) );
+		xposLabel->setText(tr("&X"));
+		yposLabel->setText(tr("&Y"));
+		widthLabel->setText(tr("&W"));
+		heightLabel->setText(tr("&H"));
 		rotationSpin->setEnabled(true);
 	}
 	m_haveItem = true;
@@ -389,14 +376,6 @@ void PropertiesPalette_XYZ::setCurrentItem(PageItem *item)
 		rrR = 360 - rrR;
 	noResize->setEnabled(!m_item->isArc());
 	
-	doGroup->setEnabled(false);
-	doUnGroup->setEnabled(false);
-	if ((m_doc->m_Selection->count() > 1) && (haveSameParent))
-		doGroup->setEnabled(true);
-	if (m_doc->m_Selection->count() == 1)
-		doUnGroup->setEnabled(m_item->isGroup());
-	if ((m_doc->appMode == modeEditClip) && (m_item->isGroup()))
-		doUnGroup->setEnabled(false);
 	if (m_item->asOSGFrame())
 	{
 		setEnabled(true);
@@ -413,7 +392,6 @@ void PropertiesPalette_XYZ::handleAppModeChanged(int oldMode, int mode)
 {
 	if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning())
 		return;
-	doUnGroup->setEnabled(mode != modeEdit && mode != modeEditClip && m_item->isGroup());
 	doLock->setEnabled(mode != modeEditClip);
 }
 
@@ -422,8 +400,6 @@ void PropertiesPalette_XYZ::handleSelectionChanged()
 	if (!m_haveDoc || !m_ScMW || m_ScMW->scriptIsRunning())
 		return;
 
-	nameEdit->setEnabled(m_doc->m_Selection->count() == 1);
-
 	PageItem* currItem = currentItemFromSelection();
 	if (m_doc->m_Selection->count() > 1)
 	{
@@ -441,10 +417,10 @@ void PropertiesPalette_XYZ::handleSelectionChanged()
 			m_ScMW->view->RCenter = FPoint(gx, gy + gh);
 		else if (bp == 4)
 			m_ScMW->view->RCenter = FPoint(gx + gw, gy + gh);
-		xposLabel->setText( tr( "&X-Pos:" ) );
-		yposLabel->setText( tr( "&Y-Pos:" ) );
-		widthLabel->setText( tr( "&Width:" ) );
-		heightLabel->setText( tr( "&Height:" ) );
+		xposLabel->setText(tr("&X"));
+		yposLabel->setText(tr("&Y"));
+		widthLabel->setText(tr("&W"));
+		heightLabel->setText(tr("&H"));
 
 		xposSpin->showValue(gx);
 		yposSpin->showValue(gy);
@@ -458,7 +434,6 @@ void PropertiesPalette_XYZ::handleSelectionChanged()
 		heightSpin->setEnabled(true);
 		rotationSpin->setEnabled(true);
 
-		nameEdit->setEnabled(false);
 		flipH->setCheckable( false );
 		flipV->setCheckable( false );
 		flipH->setChecked(false);
@@ -474,12 +449,6 @@ void PropertiesPalette_XYZ::handleSelectionChanged()
 		int itemType = currItem ? (int) currItem->itemType() : -1;
 		
 		m_haveItem = (itemType!=-1);
-		if (itemType == -1)
-		{
-			doGroup->setEnabled(false);
-			doUnGroup->setEnabled(false);
-		}
-		nameEdit->setEnabled(true);
 		basePointWidget->setEnabled(true);
 
 		setEnabled(true);
@@ -509,10 +478,10 @@ void PropertiesPalette_XYZ::handleSelectionChanged()
 		switch (itemType)
 		{
 		case -1:
-			xposLabel->setText( tr( "&X-Pos:" ) );
-			yposLabel->setText( tr( "&Y-Pos:" ) );
-			widthLabel->setText( tr( "&Width:" ) );
-			heightLabel->setText( tr( "&Height:" ) );
+			xposLabel->setText(tr("&X"));
+			yposLabel->setText(tr("&Y"));
+			widthLabel->setText(tr("&W"));
+			heightLabel->setText(tr("&H"));
 
 			xposSpin->showValue(0);
 			yposSpin->showValue(0);
@@ -1166,13 +1135,6 @@ void PropertiesPalette_XYZ::handleLockSize()
 	m_ScMW->scrActions["itemLockSize"]->toggle();
 }
 
-void PropertiesPalette_XYZ::handlePrint()
-{
-	if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning())
-		return;
-	m_ScMW->scrActions["itemPrintingEnabled"]->toggle();
-}
-
 void PropertiesPalette_XYZ::handleFlipH()
 {
 	if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning())
@@ -1187,6 +1149,7 @@ void PropertiesPalette_XYZ::handleFlipV()
 	m_ScMW->scrActions["itemFlipV"]->toggle();
 }
 
+/*
 void PropertiesPalette_XYZ::handleNewName()
 {
 	if (m_ScMW->scriptIsRunning() || !m_haveDoc || !m_haveItem)
@@ -1233,6 +1196,7 @@ void PropertiesPalette_XYZ::handleNewName()
 		}
 	}
 }
+*/
 
 void PropertiesPalette_XYZ::installSniffer(ScrSpinBox *spinBox)
 {
@@ -1345,11 +1309,6 @@ void PropertiesPalette_XYZ::showSizeLocked(bool isSizeLocked)
 	noResize->setChecked(isSizeLocked);
 }
 
-void PropertiesPalette_XYZ::showPrintingEnabled(bool isPrintingEnabled)
-{
-	noPrint->setChecked(!isPrintingEnabled);
-}
-
 void PropertiesPalette_XYZ::showFlippedH(bool isFlippedH)
 {
 	flipH->setChecked(isFlippedH);
@@ -1359,20 +1318,3 @@ void PropertiesPalette_XYZ::showFlippedV(bool isFlippedV)
 {
 	flipV->setChecked(isFlippedV);
 }
-
-void PropertiesPalette_XYZ::handleGrouping()
-{
-	m_ScMW->GroupObj();
-	doGroup->setEnabled(false);
-	doUnGroup->setEnabled(true);
-	handleSelectionChanged();
-	//FIXME
-	//TabStack->setItemEnabled(idShapeItem, false);
-}
-
-void PropertiesPalette_XYZ::handleUngrouping()
-{
-	m_ScMW->UnGroupObj();
-	m_doc->invalidateAll();
-	m_doc->regionsChanged()->update(QRect());
-}
diff --git a/scribus/ui/propertiespalette_xyz.h b/scribus/ui/propertiespalette_xyz.h
index 7892c5043..4c2c2c3be 100644
--- a/scribus/ui/propertiespalette_xyz.h
+++ b/scribus/ui/propertiespalette_xyz.h
@@ -14,10 +14,10 @@ for which a new license (GPL+exception) is in place.
 #include "linkbutton.h"
 #include "sclistboxpixmap.h"
 #include "scguardedptr.h"
+#include "pageitem.h"
 
 class BasePointWidget;
 class NameWidget;
-class PageItem;
 class ScribusDoc;
 class Selection;
 class ScribusMainWindow;
@@ -61,7 +61,6 @@ public slots:
 	void showRotation(double r);
 	void showLocked(bool);
 	void showSizeLocked(bool);
-	void showPrintingEnabled(bool);
 	void showFlippedH(bool);
 	void showFlippedV(bool);
 
@@ -83,10 +82,6 @@ private slots:
 	void handleBasePoint(int m);
 	void handleLock();
 	void handleLockSize();
-	void handlePrint();
-	void handleNewName();
-	void handleGrouping();
-	void handleUngrouping();
 
 protected slots:
 	//virtual void reject();
diff --git a/scribus/ui/propertiespalette_xyzbase.ui b/scribus/ui/propertiespalette_xyzbase.ui
index 06e9c35d5..f97d98476 100644
--- a/scribus/ui/propertiespalette_xyzbase.ui
+++ b/scribus/ui/propertiespalette_xyzbase.ui
@@ -30,404 +30,265 @@
     <number>0</number>
    </property>
    <item>
-    <widget class="QGroupBox" name="nameGroup">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="title">
-      <string>Name</string>
-     </property>
-     <layout class="QHBoxLayout" name="horizontalLayout">
-      <property name="spacing">
-       <number>2</number>
-      </property>
-      <property name="leftMargin">
-       <number>2</number>
-      </property>
-      <property name="topMargin">
-       <number>2</number>
-      </property>
-      <property name="rightMargin">
-       <number>2</number>
-      </property>
-      <property name="bottomMargin">
-       <number>2</number>
-      </property>
-      <item>
-       <widget class="NameWidget" name="nameEdit">
-        <property name="focusPolicy">
-         <enum>Qt::ClickFocus</enum>
-        </property>
-        <property name="toolTip">
-         <string>Name of selected object</string>
-        </property>
-       </widget>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="geoGroup">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="title">
-      <string>Geometry</string>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout_2">
-      <property name="leftMargin">
-       <number>2</number>
-      </property>
-      <property name="topMargin">
-       <number>2</number>
-      </property>
-      <property name="rightMargin">
-       <number>2</number>
-      </property>
-      <property name="bottomMargin">
-       <number>2</number>
-      </property>
-      <item>
-       <layout class="QGridLayout" name="geoGroupLayout">
-        <property name="leftMargin">
-         <number>5</number>
-        </property>
-        <property name="topMargin">
-         <number>5</number>
-        </property>
-        <property name="rightMargin">
-         <number>5</number>
-        </property>
-        <property name="bottomMargin">
-         <number>5</number>
-        </property>
-        <property name="spacing">
-         <number>4</number>
-        </property>
-        <item row="0" column="0">
-         <widget class="QLabel" name="xposLabel">
-          <property name="text">
-           <string>&amp;X-Pos:</string>
-          </property>
-          <property name="buddy">
-           <cstring>xposSpin</cstring>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="1">
-         <widget class="ScrSpinBox" name="xposSpin">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="toolTip">
-           <string>Horizontal position of current basepoint</string>
-          </property>
-         </widget>
-        </item>
-        <item row="2" column="0">
-         <widget class="QLabel" name="widthLabel">
-          <property name="text">
-           <string>&amp;Width:</string>
-          </property>
-          <property name="buddy">
-           <cstring>widthSpin</cstring>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="0">
-         <widget class="QLabel" name="yposLabel">
-          <property name="text">
-           <string>&amp;Y-Pos:</string>
-          </property>
-          <property name="buddy">
-           <cstring>yposSpin</cstring>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="1">
-         <widget class="ScrSpinBox" name="yposSpin">
-          <property name="toolTip">
-           <string>Vertical position of current basepoint</string>
-          </property>
-         </widget>
-        </item>
-        <item row="2" column="1">
-         <widget class="ScrSpinBox" name="widthSpin">
-          <property name="toolTip">
-           <string>Width of current selection</string>
-          </property>
-         </widget>
-        </item>
-        <item row="3" column="0">
-         <widget class="QLabel" name="heightLabel">
-          <property name="text">
-           <string>&amp;Height:</string>
-          </property>
-          <property name="buddy">
-           <cstring>heightSpin</cstring>
-          </property>
-         </widget>
-        </item>
-        <item row="3" column="1">
-         <widget class="ScrSpinBox" name="heightSpin">
-          <property name="toolTip">
-           <string>Height of current selection</string>
-          </property>
-         </widget>
-        </item>
-        <item row="4" column="0">
-         <widget class="QLabel" name="rotationLabel">
-          <property name="text">
-           <string>&amp;Rotation:</string>
-          </property>
-         </widget>
-        </item>
-        <item row="4" column="1">
-         <widget class="ScrSpinBox" name="rotationSpin">
-          <property name="toolTip">
-           <string>Rotation of object at current basepoint</string>
-          </property>
-          <property name="wrapping">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="5" column="0">
-         <widget class="QLabel" name="basepointLabel">
-          <property name="toolTip">
-           <string>Point from which measurements or rotation angles are referenced</string>
-          </property>
-          <property name="text">
-           <string>Basepoint:</string>
-          </property>
-         </widget>
-        </item>
-        <item row="5" column="1">
-         <widget class="BasePointWidget" name="basePointWidget" native="true"/>
-        </item>
-        <item row="2" column="2" rowspan="2">
-         <widget class="LinkButton" name="keepFrameWHRatioButton">
-          <property name="maximumSize">
-           <size>
-            <width>15</width>
-            <height>32767</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Keep the aspect ratio</string>
-          </property>
-          <property name="text">
-           <string>...</string>
-          </property>
-          <property name="checkable">
-           <bool>true</bool>
-          </property>
-          <property name="autoRaise">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_2">
-     <item>
-      <widget class="QGroupBox" name="levelGroup">
-       <property name="title">
-        <string>Level</string>
+    <layout class="QGridLayout" name="gridLayout_3">
+     <item row="0" column="1">
+      <widget class="QLabel" name="xposLabel">
+       <property name="text">
+        <string>&amp;X:</string>
+       </property>
+       <property name="buddy">
+        <cstring>xposSpin</cstring>
        </property>
-       <layout class="QGridLayout" name="gridLayout">
-        <property name="leftMargin">
-         <number>5</number>
-        </property>
-        <property name="topMargin">
-         <number>5</number>
-        </property>
-        <property name="rightMargin">
-         <number>5</number>
-        </property>
-        <property name="bottomMargin">
-         <number>5</number>
-        </property>
-        <property name="spacing">
-         <number>4</number>
-        </property>
-        <item row="0" column="0">
-         <widget class="QToolButton" name="levelUp">
-          <property name="maximumSize">
-           <size>
-            <width>22</width>
-            <height>22</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Move one level up</string>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="0">
-         <widget class="QToolButton" name="levelDown">
-          <property name="maximumSize">
-           <size>
-            <width>22</width>
-            <height>22</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Move one level down</string>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="1">
-         <widget class="QToolButton" name="levelTop">
-          <property name="maximumSize">
-           <size>
-            <width>22</width>
-            <height>22</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Move to front</string>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="1">
-         <widget class="QToolButton" name="levelBottom">
-          <property name="maximumSize">
-           <size>
-            <width>22</width>
-            <height>22</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Move to back</string>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="2" rowspan="2">
-         <widget class="QLabel" name="levelLabel">
-          <property name="toolTip">
-           <string>Indicates the level the object is on, 1 means the object is at the bottom</string>
-          </property>
-          <property name="text">
-           <string>0</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
       </widget>
      </item>
-     <item>
-      <spacer name="horizontalSpacer">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
+     <item row="0" column="2">
+      <widget class="ScrSpinBox" name="xposSpin">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
        </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
+       <property name="toolTip">
+        <string>Horizontal position of current basepoint</string>
        </property>
-      </spacer>
+      </widget>
      </item>
-     <item>
-      <layout class="QGridLayout" name="gridLayout_2">
-       <item row="0" column="0">
-        <widget class="QToolButton" name="doGroup">
+     <item row="2" column="2" colspan="2">
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <item>
+        <widget class="ScrSpinBox" name="rotationSpin">
+         <property name="toolTip">
+          <string>Rotation of object at current basepoint</string>
+         </property>
+         <property name="wrapping">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="flipH">
          <property name="toolTip">
-          <string>Group the selected objects</string>
+          <string>Flip horizontally</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="1" column="0">
-        <widget class="QToolButton" name="doUnGroup">
+       <item>
+        <widget class="QToolButton" name="flipV">
          <property name="toolTip">
-          <string>Ungroup the selected group</string>
+          <string>Flip vertically</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="0" column="1">
-        <widget class="QToolButton" name="flipH">
+       <item>
+        <spacer name="horizontalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item row="1" column="6">
+      <widget class="QToolButton" name="noResize">
+       <property name="toolTip">
+        <string>Lock or unlock the size of the object</string>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1">
+      <widget class="QLabel" name="rotation">
+       <property name="text">
+        <string>⟳</string>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="2" colspan="2">
+      <layout class="QHBoxLayout" name="horizontalLayout_5">
+       <item>
+        <widget class="QToolButton" name="levelBottom">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="toolTip">
-          <string>Flip horizontally</string>
+          <string>Move to back</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="1" column="1">
-        <widget class="QToolButton" name="flipV">
+       <item>
+        <widget class="QToolButton" name="levelDown">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="toolTip">
-          <string>Flip vertically</string>
+          <string>Move one level down</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="0" column="2">
-        <widget class="QToolButton" name="doLock">
+       <item>
+        <widget class="QToolButton" name="levelUp">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="toolTip">
-          <string>Lock or unlock the object</string>
+          <string>Move one level up</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="1" column="2">
-        <widget class="QToolButton" name="noPrint">
+       <item>
+        <widget class="QToolButton" name="levelTop">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="toolTip">
-          <string>Enable or disable exporting of the object</string>
+          <string>Move to front</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="0" column="3">
-        <widget class="QToolButton" name="noResize">
+       <item>
+        <widget class="QLabel" name="levelLabel">
          <property name="toolTip">
-          <string>Lock or unlock the size of the object</string>
+          <string>Indicates the level the object is on, 1 means the object is at the bottom</string>
          </property>
          <property name="text">
-          <string/>
+          <string>0</string>
          </property>
         </widget>
        </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
       </layout>
      </item>
+     <item row="1" column="1">
+      <widget class="QLabel" name="yposLabel">
+       <property name="text">
+        <string>&amp;Y:</string>
+       </property>
+       <property name="buddy">
+        <cstring>yposSpin</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="2">
+      <widget class="ScrSpinBox" name="yposSpin">
+       <property name="toolTip">
+        <string>Vertical position of current basepoint</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="3">
+      <widget class="QLabel" name="widthLabel">
+       <property name="text">
+        <string>&amp;W</string>
+       </property>
+       <property name="buddy">
+        <cstring>widthSpin</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="3">
+      <widget class="QLabel" name="heightLabel">
+       <property name="text">
+        <string>&amp;H</string>
+       </property>
+       <property name="buddy">
+        <cstring>heightSpin</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="4">
+      <widget class="ScrSpinBox" name="widthSpin">
+       <property name="toolTip">
+        <string>Width of current selection</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="4">
+      <widget class="ScrSpinBox" name="heightSpin">
+       <property name="toolTip">
+        <string>Height of current selection</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="6">
+      <widget class="QToolButton" name="doLock">
+       <property name="toolTip">
+        <string>Lock or unlock the object</string>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="5" rowspan="2">
+      <widget class="LinkButton" name="keepFrameWHRatioButton">
+       <property name="minimumSize">
+        <size>
+         <width>8</width>
+         <height>43</height>
+        </size>
+       </property>
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="checkable">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="4" rowspan="3" alignment="Qt::AlignLeft">
+      <widget class="BasePointWidget" name="basePointWidget" native="true"/>
+     </item>
     </layout>
    </item>
    <item>
@@ -446,11 +307,6 @@
   </layout>
  </widget>
  <customwidgets>
-  <customwidget>
-   <class>NameWidget</class>
-   <extends>QLineEdit</extends>
-   <header>ui/propertiespalette_utils.h</header>
-  </customwidget>
   <customwidget>
    <class>ScrSpinBox</class>
    <extends>QDoubleSpinBox</extends>
@@ -468,6 +324,21 @@
    <header>ui/linkbutton.h</header>
   </customwidget>
  </customwidgets>
+ <tabstops>
+  <tabstop>xposSpin</tabstop>
+  <tabstop>yposSpin</tabstop>
+  <tabstop>widthSpin</tabstop>
+  <tabstop>heightSpin</tabstop>
+  <tabstop>keepFrameWHRatioButton</tabstop>
+  <tabstop>rotationSpin</tabstop>
+  <tabstop>flipH</tabstop>
+  <tabstop>levelBottom</tabstop>
+  <tabstop>levelDown</tabstop>
+  <tabstop>levelUp</tabstop>
+  <tabstop>levelTop</tabstop>
+  <tabstop>doLock</tabstop>
+  <tabstop>noResize</tabstop>
+ </tabstops>
  <resources/>
  <connections/>
 </ui>
indigo-pp-xyz-peter.diff (52,026 bytes)   

PeterBenedek

2019-11-04 18:03

developer   ~0046957

Last edited: 2019-11-04 18:04

I miss the padding of panel.
Martin's solution in Indigo project: http://forums.scribus.net/index.php?action=dlattach;topic=1617.0;attach=1989;image

ale

2019-11-04 18:24

manager   ~0046958

Last edited: 2019-11-05 06:55

@peterbenedek , i'd like to look at it towards the end of the implementation of the UI panels.

currently, there are so many things that are not finished yet and i don't know what is wrong because of the older panels and how exactly the whole palette will look like at the end of the process.

i'd like to suggest that i finish the panels in the properties panel and we can then, when everything is new in, talk about it again?
before starting the huge work on the text panel...

as soon as the xyz is in, i'd like to get in touch with martin: i need explanations on the color panels... he might also have more general feedback.

PeterBenedek

2019-11-04 18:46

developer   ~0046960

I mean.
Ok.
They did a fantastic job.

PeterBenedek

2019-11-05 08:34

developer   ~0046968

Last edited: 2019-11-05 08:38

You don't have to do anything, just listen to this...

Therefore, Basepoint is important to be first in the line of operation (related ticket 0015903)...
I made a flowchart of the problem:

Task: Adjust the height of the object, top to bottom.
Explanation: All operations in the XYZ panel depend on the position of the currently selected base point, even if you do not need to set it before each operation.

Basepoint_left.jpg (137,266 bytes)   
Basepoint_left.jpg (137,266 bytes)   

ale

2019-11-05 13:49

manager   ~0046974

Last edited: 2019-11-05 13:50

peter, i have understood your point very well.
and you're 100% right.

but i also believe that most of the time, most users want to look at the values or set them without changing the basepoint.

i found it very interesting to see how intensively you use it, but i don't think i have ever seen anybody changing the basepoint at all.
i also think that if you look for speed, scribus provides better ways to tweak your items, without the need to go to the properties palette.
(personally, in most cases i would go for alt(-shift)-arrow or a guide.)

in the past, i've never read any complaint that the "old" scribus placement of the basepoinit would be bad.
and that's not because it was good (it was terrible), but because most people don't use it. or when they use it, they're in a slow workflow anyway.

bubu

2019-11-05 19:17

reporter   ~0046978

Hi devs, finally I found this discussion. I'm so happy to see you developing this feature.

I'm nobody here just a translator and a user. But I try tho help you.

As a user...
1. I agree to remove the label of the object from this palette. I never renamed object in normal document, only when I created PDF forms, but in PDF properties palette there are a possibility to rename the object. https://gitlab.com/scribus/scribus/merge_requests/8#note_239173966
2. I usually use origin tool. It's a useful tool. The original "vertical" Scribus XYZ palette was clear: origin tool belongs to X,Y,W,H fields _and_ rotate field. This is broken in new proposals here.
3. Original origin tool was better: It was clear that it has 5 states. When I see this new tool - inspired by InDesign - I think there is 9 states... but it's not true. And new tool is more checkbox like and not radio button like. When I see more squares (=checkboxes) I think I can select multiple states... but it's not true, I can select only one state (like radio buttons). So circles - original look - is better here.

I don't want to criticize, but to help. So here is sketch mockup, how can we join origin tool to X, Y, W, H fields and rotate field. I hope this helps you.

ale

2019-11-05 21:35

manager   ~0046980

i plan to use the same widget also for the lines, so i would like to avoid the old 5 circles widget.

i don't know why martin suggested 9 squares, but if we stick with 5 possible values, then i agree that we should make it more clear which buttons can be clicked and which not.
it's probably just a matter of using a different color for those buttons... or simply hiding them.
but i think that the final goal was to have 9 possible states.

i really like the widget you propose above, but it's a bit harder to draw... (basically, the code must draw it; with the boxes martin suggests, it's just a bunch of buttons with a png on top of each; "automatically" layouted)

if you have a proposal for better icons, they're very welcome. but, if possible, i'd like to keep the grid of buttons: it makes things much easier on the programming side.
as said, the other constraint is that it should be easy, to use the same schema (and widget) also for the lines (with only three possible values).

concerning the basepoint on the left: personally i don't "like" the fact that, then, the other buttons are layouted in a "random" way.
where i could see a usable solution, is the proposal a, but with the flip buttons below the rotation input field

b is too cramped for me.

also, the levels are harder to reach... and that's the z part of xyz : - )

my conclusion?

if possible i'd like to stick with the patch as is and get it accepted as fast as possible.
once it's in, we can further discuss where to place the basepoint widget.
and proposal a is not a bad start, if you both really are so uncomfortable with the widget on the right.

ale

2019-11-06 08:07

manager   ~0046986

here is a branch with what i could "easily" (still more than an hour of work i could not use for the color panel... mostly spent on fighting designer's grid awkwardness) do out of bubu's a proposal.

https://gitlab.com/a.l.e/scribus/tree/indigo-pp-xyz-bubu

https://gitlab.com/a.l.e/scribus/-/jobs/342954448/artifacts/file/Scribus-nightly-x86_64.AppImage

two comments:

- i'm not sure it would look good, but on the semantics side, i would switch levels and locks...
- the basepoint widget could shrink a bit and/or get better icons... drawing a square behind the circles might be possible.

my position has not changed:

- the levels are a bit hidden (switching levels and locks might help)
- i'd prefer to see the previous patch being committed asap and continue the discussion in a different ticket.
xyz-bubu-01.png (8,620 bytes)   
xyz-bubu-01.png (8,620 bytes)   

PeterBenedek

2019-11-06 08:45

developer   ~0046988

ale, this fantastic. The basepoint tool is finally convenient to use
I am grateful for it.

bubu

2019-11-06 08:50

reporter   ~0046989

Thank you ale, this layout is much better!

ale

2019-11-06 10:22

manager   ~0046991

yes @peterbenedek, but now it's the levels that are not convenient to use : - (
and the rotation.
(if i change the basepoint, before the next movement, i have to take care to reset it to the top left; and if i don't change the basepoint, i have to move around my item to fix its position *and* look for the rotation in the middle of the widget).
i really, think that this layout is worse for those who do not use often the basepoint.

i wonder, if the basepoint shouldn't automatically go back to the top left if you have not used any function that rely on it for more than one minute (or other more or less short time : - )
and you could set the default basepoint in the document settings / preferences.

and the basepoint widget feels too big to me... but i hope that you both will be able to improve on that : - ) (while respecting the fact that it's a 3 x 3 grid!)
after this patch has been accepted!

ale

2019-11-08 09:30

manager   ~0047034

here is the "bubu" patch...

please pick one of the two latest diff files

(the new pngs can be downloaded from gitlab, see the links above)
xyz-bubu.diff (54,014 bytes)   
diff --git a/resources/iconsets/1_5_1/16/basepoint-checked.png b/resources/iconsets/1_5_1/16/basepoint-checked.png
new file mode 100644
index 000000000..328a6c389
Binary files /dev/null and b/resources/iconsets/1_5_1/16/basepoint-checked.png differ
diff --git a/resources/iconsets/1_5_1/16/basepoint-unchecked.png b/resources/iconsets/1_5_1/16/basepoint-unchecked.png
new file mode 100644
index 000000000..15581f9d1
Binary files /dev/null and b/resources/iconsets/1_5_1/16/basepoint-unchecked.png differ
diff --git a/resources/iconsets/1_5_1/16/flip-object-horizontal.png b/resources/iconsets/1_5_1/16/flip-object-horizontal.png
index b5053fa7f..32b36a363 100644
Binary files a/resources/iconsets/1_5_1/16/flip-object-horizontal.png and b/resources/iconsets/1_5_1/16/flip-object-horizontal.png differ
diff --git a/resources/iconsets/1_5_1/16/flip-object-vertical.png b/resources/iconsets/1_5_1/16/flip-object-vertical.png
index d94b746f7..6602230d6 100644
Binary files a/resources/iconsets/1_5_1/16/flip-object-vertical.png and b/resources/iconsets/1_5_1/16/flip-object-vertical.png differ
diff --git a/resources/iconsets/1_5_1/16/level-bottom.png b/resources/iconsets/1_5_1/16/level-bottom.png
new file mode 100644
index 000000000..d97871f60
Binary files /dev/null and b/resources/iconsets/1_5_1/16/level-bottom.png differ
diff --git a/resources/iconsets/1_5_1/16/level-down.png b/resources/iconsets/1_5_1/16/level-down.png
new file mode 100644
index 000000000..a7022c426
Binary files /dev/null and b/resources/iconsets/1_5_1/16/level-down.png differ
diff --git a/resources/iconsets/1_5_1/16/level-top.png b/resources/iconsets/1_5_1/16/level-top.png
new file mode 100644
index 000000000..f0a4400cb
Binary files /dev/null and b/resources/iconsets/1_5_1/16/level-top.png differ
diff --git a/resources/iconsets/1_5_1/16/level-up.png b/resources/iconsets/1_5_1/16/level-up.png
new file mode 100644
index 000000000..7d64fe3b7
Binary files /dev/null and b/resources/iconsets/1_5_1/16/level-up.png differ
diff --git a/resources/iconsets/1_5_1/chain-small-closed.png b/resources/iconsets/1_5_1/chain-small-closed.png
new file mode 100644
index 000000000..d5105d0a4
Binary files /dev/null and b/resources/iconsets/1_5_1/chain-small-closed.png differ
diff --git a/resources/iconsets/1_5_1/chain-small-open.png b/resources/iconsets/1_5_1/chain-small-open.png
new file mode 100644
index 000000000..d32371f6a
Binary files /dev/null and b/resources/iconsets/1_5_1/chain-small-open.png differ
diff --git a/resources/iconsets/1_5_1/group.png b/resources/iconsets/1_5_1/group.png
deleted file mode 100644
index d2aae0af6..000000000
Binary files a/resources/iconsets/1_5_1/group.png and /dev/null differ
diff --git a/resources/iconsets/1_5_1/rotation.png b/resources/iconsets/1_5_1/rotation.png
new file mode 100644
index 000000000..4288effc9
Binary files /dev/null and b/resources/iconsets/1_5_1/rotation.png differ
diff --git a/resources/iconsets/1_5_1/ungroup.png b/resources/iconsets/1_5_1/ungroup.png
deleted file mode 100644
index 52a8f19b9..000000000
Binary files a/resources/iconsets/1_5_1/ungroup.png and /dev/null differ
diff --git a/scribus/CMakeLists.txt b/scribus/CMakeLists.txt
index a92433cb1..29dd78740 100644
--- a/scribus/CMakeLists.txt
+++ b/scribus/CMakeLists.txt
@@ -157,6 +157,7 @@ set(SCRIBUS_UI_SRC
 	ui/prefs_pdfexportbase.ui
 	ui/prefs_tableofcontentsbase.ui
 	ui/prefs_documentitemattributesbase.ui
+	ui/basepointwidgetbase.ui
 	ui/printdialogbase.ui
 	ui/propertiespalette_groupbase.ui
 	ui/propertiespalette_imagebase.ui
diff --git a/scribus/ui/basepointwidget.cpp b/scribus/ui/basepointwidget.cpp
index c6dca8f09..8d141a47b 100644
--- a/scribus/ui/basepointwidget.cpp
+++ b/scribus/ui/basepointwidget.cpp
@@ -7,197 +7,86 @@ for which a new license (GPL+exception) is in place.
 
 #include "basepointwidget.h"
 
-BasePointWidget::BasePointWidget(QWidget *pa, int mode) : QWidget(pa)
-{
-	m_mode = mode;
-	if (m_mode == 0)
-	{
-		setMinimumSize(QSize(48, 48));
-		setMaximumSize(QSize(48, 48));
-	}
-	else
-	{
-		setMinimumSize(QSize(48, 16));
-		setMaximumSize(QSize(48, 16));
-	}
-	setMouseTracking(true);
-	selectedBase = 0;
-	hooveredBase = -1;
-	Mpressed = false;
-} 
+#include <QButtonGroup>
+#include "iconmanager.h"
 
-void BasePointWidget::paintEvent(QPaintEvent *e)
+BasePointWidget::BasePointWidget(QWidget *parent) : QWidget(parent)
 {
-	QPainter p;
-	p.begin(this);
-	p.setRenderHint(QPainter::Antialiasing, true);
-	p.setBrush(palette().color(QPalette::Window));
-	p.setPen(Qt::NoPen);
-	p.drawRect(0, 0, width(), height());
-	p.setBrush(Qt::black);
-	p.setPen(QPen(palette().color(QPalette::WindowText), 1));
-	if (m_mode == 0)
-	{
-		p.drawEllipse( 4,  4, 10, 10);
-		p.drawEllipse(34,  4, 10, 10);
-		p.drawEllipse(19, 19, 10, 10);
-		p.drawEllipse( 4, 34, 10, 10);
-		p.drawEllipse(34, 34, 10, 10);
-	}
-	else
-	{
-		p.drawEllipse( 4,  4, 10, 10);
-		p.drawEllipse(19,  4, 10, 10);
-		p.drawEllipse(34,  4, 10, 10);
-	}
-	p.setPen(QPen(palette().color(QPalette::WindowText), 2));
-	if (m_mode == 0)
-	{
-		p.drawLine(8, 8, 33, 8);
-		p.drawLine(8, 38, 33, 38);
-		p.drawLine(8, 8, 8, 33);
-		p.drawLine(38, 8, 38, 33);
-	}
-	else
-		p.drawLine(8, 8, 33, 8);
-	p.setBrush(Qt::white);
-	p.setPen(QPen(palette().color(QPalette::WindowText), 2));
-	if (m_mode == 0)
-	{
-		p.drawEllipse( 3,  3, 10, 10);
-		p.drawEllipse(33,  3, 10, 10);
-		p.drawEllipse(18, 18, 10, 10);
-		p.drawEllipse( 3, 33, 10, 10);
-		p.drawEllipse(33, 33, 10, 10);
-	}
-	else
-	{
-		p.drawEllipse( 3,  3, 10, 10);
-		p.drawEllipse(18,  3, 10, 10);
-		p.drawEllipse(33,  3, 10, 10);
-	}
-	if (hooveredBase > -1)
-	{
-		p.setBrush(Qt::NoBrush);
-		p.setPen(QPen(palette().color(QPalette::Highlight), 1));
-		if (hooveredBase == 0)
-			p.drawEllipse( 4,  4, 8, 8);
-		else if (hooveredBase == 1)
-			p.drawEllipse(34,  4, 8, 8);
-		else if (hooveredBase == 2)
-		{
-			if (m_mode == 0)
-				p.drawEllipse(19, 19, 8, 8);
-			else
-				p.drawEllipse(19,  4, 8, 8);
-		}
-		else if (hooveredBase == 3)
-			p.drawEllipse( 4, 34, 8, 8);
-		else if (hooveredBase == 4)
-			p.drawEllipse(34, 34, 8, 8);
-	}
-	p.setBrush(palette().color(QPalette::WindowText));
-	p.setPen(Qt::NoPen);
-	if (selectedBase == 0)
-		p.drawEllipse( 5, 5, 6, 6);
-	else if (selectedBase == 1)
-		p.drawEllipse(35, 5, 6, 6);
-	else if (selectedBase == 2)
-	{
-		if (m_mode == 0)
-			p.drawEllipse(20, 20, 6, 6);
-		else
-			p.drawEllipse(20,  5, 6, 6);
-	}
-	else if (selectedBase == 3)
-		p.drawEllipse( 5, 35, 6, 6);
-	else if (selectedBase == 4)
-		p.drawEllipse(35, 35, 6, 6);
-	p.end();
-}
+	setupUi(this);
 
-void BasePointWidget::mousePressEvent(QMouseEvent *m)
-{
-	m->accept();
-	Mpressed = true;
-}
+	auto group = new QButtonGroup(this);
+	group->addButton(buttonNE);
+	group->addButton(buttonNW);
+	group->addButton(buttonCenter);
+	group->addButton(buttonSE);
+	group->addButton(buttonSW);
 
-void BasePointWidget::mouseReleaseEvent(QMouseEvent *m)
-{
-	m->accept();
-	if (Mpressed)
-	{
-		QPoint p = m->pos();
-		if (m_mode == 0)
-		{
-			if (QRect( 3,  3, 10, 10).contains(p))
-				selectedBase = 0;
-			else if (QRect(33,  3, 10, 10).contains(p))
-				selectedBase = 1;
-			else if (QRect(18, 18, 10, 10).contains(p))
-				selectedBase = 2;
-			else if (QRect( 3, 33, 10, 10).contains(p))
-				selectedBase = 3;
-			else if (QRect(33, 33, 10, 10).contains(p))
-				selectedBase = 4;
-		}
-		else
-		{
-			if (QRect( 3,  3, 9, 9).contains(p))
-				selectedBase = 0;
-			else if (QRect(33,  3, 10, 10).contains(p))
-				selectedBase = 1;
-			else if (QRect(18,  3, 10, 10).contains(p))
-				selectedBase = 2;
-		}
-		emit buttonClicked(selectedBase);
-	}
-	update();
-}
+	buttonE->setVisible(false);
+	buttonN->setVisible(false);
+	buttonW->setVisible(false);
+	buttonS->setVisible(false);
 
-void BasePointWidget::mouseMoveEvent(QMouseEvent *m)
-{
-	m->accept();
-	QPoint p = m->pos();
-	hooveredBase = -1;
-	if (m_mode == 0)
-	{
-		if (QRect( 3,  3, 10, 10).contains(p))
-			hooveredBase = 0;
-		else if (QRect(33,  3, 10, 10).contains(p))
-			hooveredBase = 1;
-		else if (QRect(18, 18, 10, 10).contains(p))
-			hooveredBase = 2;
-		else if (QRect( 3, 33, 10, 10).contains(p))
-			hooveredBase = 3;
-		else if (QRect(33, 33, 10, 10).contains(p))
-			hooveredBase = 4;
-	}
-	else
-	{
-		if (QRect( 3,  3, 10, 10).contains(p))
-			hooveredBase = 0;
-		else if (QRect(33,  3, 10, 10).contains(p))
-			hooveredBase = 1;
-		else if (QRect(18,  3, 10, 10).contains(p))
-			hooveredBase = 2;
-	}
-	update();
+	IconManager& im=IconManager::instance();
+
+	loadIcon(im, buttonNE);
+	loadIcon(im, buttonN);
+	loadIcon(im, buttonNW);
+	loadIcon(im, buttonE);
+	loadIcon(im, buttonCenter);
+	loadIcon(im, buttonW);
+	loadIcon(im, buttonSE);
+	loadIcon(im, buttonS);
+	loadIcon(im, buttonSW);
+
+	setStyleSheet("QToolButton {border: none;}");
+
+	connect(buttonNE, &QToolButton::clicked, [this]() { emit buttonClicked(0); });
+	connect(buttonNW, &QToolButton::clicked, [this]() { emit buttonClicked(1); });
+	connect(buttonCenter, &QToolButton::clicked, [this]() { emit buttonClicked(2); });
+	connect(buttonSE, &QToolButton::clicked, [this]() { emit buttonClicked(3); });
+	connect(buttonSW, &QToolButton::clicked, [this]() { emit buttonClicked(4); });
 }
 
-void BasePointWidget::leaveEvent(QEvent*)
+void BasePointWidget::loadIcon(IconManager& im, QToolButton* button)
 {
-	hooveredBase = -1;
-	update();
+	QIcon icon = QIcon();
+	icon.addPixmap(im.loadPixmap("16/basepoint-checked.png"), QIcon::Normal, QIcon::On);
+	icon.addPixmap(im.loadPixmap("16/basepoint-unchecked.png"), QIcon::Normal, QIcon::Off);
+	button->setIcon(icon);
 }
 
 int BasePointWidget::checkedId()
 {
-	return selectedBase;
+	if (buttonNE->isChecked())
+		return 0;
+	else if (buttonNW->isChecked())
+		return 1;
+	else if (buttonCenter->isChecked())
+		return 2;
+	else if (buttonSE->isChecked())
+		return 3;
+	else if (buttonSW->isChecked())
+		return 4;
+	return 0;
 }
 
 void BasePointWidget::setCheckedId(int id)
 {
-	selectedBase = id;
-	update();
+	switch (id) {
+		case 0:
+			buttonNE->setChecked(true);
+			break;
+		case 1:
+			buttonNW->setChecked(true);
+			break;
+		case 2:
+			buttonCenter->setChecked(true);
+			break;
+		case 3:
+			buttonSE->setChecked(true);
+			break;
+		case 4:
+			buttonSE->setChecked(true);
+			break;
+	}
 }
diff --git a/scribus/ui/basepointwidget.h b/scribus/ui/basepointwidget.h
index abfde3c9f..0ae85bd2c 100644
--- a/scribus/ui/basepointwidget.h
+++ b/scribus/ui/basepointwidget.h
@@ -7,18 +7,19 @@ for which a new license (GPL+exception) is in place.
 #ifndef BASEPOINTWIDGET_H
 #define BASEPOINTWIDGET_H
 
+#include "ui_basepointwidgetbase.h"
+
 #include <QWidget>
-#include <QPaintEvent>
-#include <QMouseEvent>
-#include <QPainter>
 #include "scribusapi.h"
 
-class SCRIBUS_API BasePointWidget : public QWidget
+class IconManager;
+
+class SCRIBUS_API BasePointWidget : public QWidget, public Ui::BasePointWidgetBase
 {
 	Q_OBJECT
 
 public:
-	BasePointWidget(QWidget *pa, int mode = 0);
+	BasePointWidget(QWidget *parent);
 	~BasePointWidget() {}
 	/**
 	  BasePoint values:
@@ -30,16 +31,8 @@ public:
 	  */
 	int checkedId();
 	void setCheckedId(int id);
-	void paintEvent(QPaintEvent *e);
-	void mousePressEvent(QMouseEvent *m);
-	void mouseReleaseEvent(QMouseEvent *);
-	void mouseMoveEvent(QMouseEvent *m);
-	void leaveEvent(QEvent*);
 private:
-	int m_mode;
-	int selectedBase;
-	int hooveredBase;
-	bool Mpressed;
+	void loadIcon(IconManager& im, QToolButton* button);
 signals:
 	void buttonClicked(int);
 };
diff --git a/scribus/ui/basepointwidgetbase.ui b/scribus/ui/basepointwidgetbase.ui
new file mode 100644
index 000000000..66d3a24f0
--- /dev/null
+++ b/scribus/ui/basepointwidgetbase.ui
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>BasePointWidgetBase</class>
+ <widget class="QWidget" name="BasePointWidgetBase">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>62</width>
+    <height>51</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <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>
+   <property name="spacing">
+    <number>1</number>
+   </property>
+   <item row="1" column="0">
+    <widget class="QToolButton" name="buttonE">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="2">
+    <widget class="QToolButton" name="buttonN">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="3">
+    <widget class="QToolButton" name="buttonW">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="3">
+    <widget class="QToolButton" name="buttonNW">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0">
+    <widget class="QToolButton" name="buttonNE">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+     <property name="checked">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="2">
+    <widget class="QToolButton" name="buttonCenter">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0">
+    <widget class="QToolButton" name="buttonSE">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="2">
+    <widget class="QToolButton" name="buttonS">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="3">
+    <widget class="QToolButton" name="buttonSW">
+     <property name="minimumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16</width>
+       <height>16</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="checkable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>buttonNE</tabstop>
+  <tabstop>buttonN</tabstop>
+  <tabstop>buttonNW</tabstop>
+  <tabstop>buttonE</tabstop>
+  <tabstop>buttonCenter</tabstop>
+  <tabstop>buttonW</tabstop>
+  <tabstop>buttonSE</tabstop>
+  <tabstop>buttonS</tabstop>
+  <tabstop>buttonSW</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/scribus/ui/propertiespalette_xyz.cpp b/scribus/ui/propertiespalette_xyz.cpp
index 4eb8a45ed..9f86ff715 100644
--- a/scribus/ui/propertiespalette_xyz.cpp
+++ b/scribus/ui/propertiespalette_xyz.cpp
@@ -62,32 +62,35 @@ PropertiesPalette_XYZ::PropertiesPalette_XYZ( QWidget* parent) : QWidget(parent)
 	connect(userActionSniffer, SIGNAL(actionStart()), this, SLOT(spinboxStartUserAction()));
 	connect(userActionSniffer, SIGNAL(actionEnd()), this, SLOT(spinboxFinishUserAction()));
 
-	nameEdit->setFocusPolicy(Qt::ClickFocus);
-
 	installSniffer(xposSpin);
 	installSniffer(yposSpin);
 	installSniffer(widthSpin);
 	installSniffer(heightSpin);
 
-	keepFrameWHRatioButton->setCheckable( true );
-	keepFrameWHRatioButton->setAutoRaise( true );
-	keepFrameWHRatioButton->setMaximumSize( QSize( 15, 32767 ) );
+	IconManager& im=IconManager::instance();
+
+	// keepFrameWHRatioButton->setCheckable(true);
+	// {
+	// 	QIcon icon = QIcon();
+	// 	icon.addPixmap(im.loadPixmap("chain-small-closed.png"), QIcon::Normal, QIcon::On);
+	// 	icon.addPixmap(im.loadPixmap("chain-small-open.png"), QIcon::Normal, QIcon::Off);
+	// 	keepFrameWHRatioButton->setIcon(icon);
+	// }
+
+	keepFrameWHRatioButton->setCheckable(true);
+	keepFrameWHRatioButton->setAutoRaise(true);
+	keepFrameWHRatioButton->setMaximumSize(QSize(15, 32767));
 	keepFrameWHRatioButton->setChecked(false);
 
+	// rotation->setPixmap(im.loadPixmap("rotation.png")); // TODO: using the unicode char might even be better... but i did not manage to load the pixmap in the label
 	rotationSpin->setNewUnit(6);
 	rotationSpin->setWrapping( true );
 	installSniffer(rotationSpin);
-	rotationLabel->setBuddy(rotationSpin);
-
-	IconManager& im=IconManager::instance();
-	levelUp->setIcon(im.loadIcon("16/go-up.png"));
-	levelDown->setIcon(im.loadIcon("16/go-down.png"));
-	levelTop->setIcon(im.loadIcon("16/go-top.png"));
-	levelBottom->setIcon(im.loadIcon("16/go-bottom.png"));
-	levelLabel->setAlignment( Qt::AlignCenter );
 
-	doGroup->setIcon(im.loadIcon("group.png"));
-	doUnGroup->setIcon(im.loadIcon("ungroup.png"));
+	levelUp->setIcon(IconManager::instance().loadIcon("16/level-up.png"));
+	levelDown->setIcon(IconManager::instance().loadIcon("16/level-down.png"));
+	levelTop->setIcon(IconManager::instance().loadIcon("16/level-top.png"));
+	levelBottom->setIcon(IconManager::instance().loadIcon("16/level-bottom.png"));
 
 	flipH->setIcon(im.loadIcon("16/flip-object-horizontal.png"));
 	flipH->setCheckable( true );
@@ -100,12 +103,6 @@ PropertiesPalette_XYZ::PropertiesPalette_XYZ( QWidget* parent) : QWidget(parent)
 	a.addPixmap(im.loadPixmap("16/lock-unlocked.png"), QIcon::Normal, QIcon::Off);
 	doLock->setIcon(a);
 
-	noPrint->setCheckable( true );
-	QIcon a2 = QIcon();
-	a2.addPixmap(im.loadPixmap("NoPrint.png"), QIcon::Normal, QIcon::On);
-	a2.addPixmap(im.loadPixmap("16/document-print.png"), QIcon::Normal, QIcon::Off);
-	noPrint->setIcon(a2);
-
 	noResize->setCheckable( true );
 	QIcon a3 = QIcon();
 	a3.addPixmap(im.loadPixmap("framenoresize.png"), QIcon::Normal, QIcon::On);
@@ -129,12 +126,8 @@ PropertiesPalette_XYZ::PropertiesPalette_XYZ( QWidget* parent) : QWidget(parent)
 	connect(levelBottom, SIGNAL(clicked()), this, SLOT(handleBack()));
 	connect(basePointWidget, SIGNAL(buttonClicked(int)), this, SLOT(handleBasePoint(int)));
 
-	connect(nameEdit , SIGNAL(Leaved()) , this, SLOT(handleNewName()));
 	connect(doLock   , SIGNAL(clicked()), this, SLOT(handleLock()));
-	connect(noPrint  , SIGNAL(clicked()), this, SLOT(handlePrint()));
 	connect(noResize , SIGNAL(clicked()), this, SLOT(handleLockSize()));
-	connect(doGroup  , SIGNAL(clicked()), this, SLOT(handleGrouping()) );
-	connect(doUnGroup, SIGNAL(clicked()), this, SLOT(handleUngrouping()) );
 
 	m_haveItem = false;
 	xposSpin->showValue(0);
@@ -204,19 +197,16 @@ void PropertiesPalette_XYZ::unsetDoc()
 	m_haveItem = false;
 	m_doc   = nullptr;
 	m_item  = nullptr;
-	nameEdit->clear();
 	xposSpin->setConstants(nullptr);
 	yposSpin->setConstants(nullptr);
 	widthSpin->setConstants(nullptr);
 	heightSpin->setConstants(nullptr);
-	doGroup->setEnabled(false);
-	doUnGroup->setEnabled(false);
 	flipH->setEnabled(false);
 	flipV->setEnabled(false);
-	xposLabel->setText( tr( "&X-Pos:" ) );
-	yposLabel->setText( tr( "&Y-Pos:" ) );
-	widthLabel->setText( tr( "&Width:" ) );
-	heightLabel->setText( tr( "&Height:" ) );
+	xposLabel->setText(tr("&X"));
+	yposLabel->setText(tr("&Y"));
+	widthLabel->setText(tr("&W"));
+	heightLabel->setText(tr("&H"));
 	xposSpin->showValue(0);
 	yposSpin->showValue(0);
 	widthSpin->showValue(0);
@@ -236,20 +226,20 @@ void PropertiesPalette_XYZ::setLineMode(int lineMode)
 {
 	if (lineMode == 0)
 	{
-		xposLabel->setText( tr( "&X-Pos:" ) );
-		yposLabel->setText( tr( "&Y-Pos:" ) );
-		widthLabel->setText( tr( "&Width:" ) );
-		heightLabel->setText( tr( "&Height:" ) );
+		xposLabel->setText(tr("&X"));
+		yposLabel->setText(tr("&Y"));
+		widthLabel->setText(tr("&W"));
+		heightLabel->setText(tr("&H"));
 		rotationSpin->setEnabled(true);
 		heightSpin->setEnabled(false);
 		m_lineMode = false;
 	}
 	else
 	{
-		xposLabel->setText( tr( "&X1:" ) );
-		yposLabel->setText( tr( "Y&1:" ) );
-		widthLabel->setText( tr( "X&2:" ) );
-		heightLabel->setText( tr( "&Y2:" ) );
+		xposLabel->setText(tr("&X1:"));
+		yposLabel->setText(tr("Y&1:"));
+		widthLabel->setText(tr("X&2:"));
+		heightLabel->setText(tr("&Y2:"));
 		rotationSpin->setEnabled(false);
 		heightSpin->setEnabled(true);
 		m_lineMode = true;
@@ -289,23 +279,17 @@ void PropertiesPalette_XYZ::setCurrentItem(PageItem *item)
 	if (!m_doc)
 		setDoc(item->doc());
 
-	disconnect(nameEdit, SIGNAL(Leaved()), this, SLOT(handleNewName()));
-
 	m_haveItem = false;
 	m_item = item;
 
-	nameEdit->setText(m_item->itemName());
 	levelLabel->setText( QString::number(m_item->level()) );
 
-	connect(nameEdit, SIGNAL(Leaved()), this, SLOT(handleNewName()));
-
 //CB replaces old emits from PageItem::emitAllToGUI()
 	disconnect(xposSpin, SIGNAL(valueChanged(double)), this, SLOT(handleNewX()));
 	disconnect(yposSpin, SIGNAL(valueChanged(double)), this, SLOT(handleNewY()));
 	disconnect(widthSpin, SIGNAL(valueChanged(double)), this, SLOT(handleNewW()));
 	disconnect(heightSpin, SIGNAL(valueChanged(double)), this, SLOT(handleNewH()));
 	disconnect(doLock, SIGNAL(clicked()), this, SLOT(handleLock()));
-	disconnect(noPrint, SIGNAL(clicked()), this, SLOT(handlePrint()));
 	disconnect(noResize, SIGNAL(clicked()), this, SLOT(handleLockSize()));
 	disconnect(flipH, SIGNAL(clicked()), this, SLOT(handleFlipH()));
 	disconnect(flipV, SIGNAL(clicked()), this, SLOT(handleFlipV()));
@@ -324,7 +308,6 @@ void PropertiesPalette_XYZ::setCurrentItem(PageItem *item)
 	flipH->setCheckable(checkableFlip);
 	flipV->setCheckable(checkableFlip);
 
-	noPrint->setChecked(!item->printEnabled());
 	showFlippedH(item->imageFlippedH());
 	showFlippedV(item->imageFlippedV());
 	double rr = item->rotation();
@@ -339,35 +322,39 @@ void PropertiesPalette_XYZ::setCurrentItem(PageItem *item)
 	connect(widthSpin   , SIGNAL(valueChanged(double)), this, SLOT(handleNewW()), Qt::UniqueConnection);
 	connect(heightSpin  , SIGNAL(valueChanged(double)), this, SLOT(handleNewH()), Qt::UniqueConnection);
 	connect(doLock  , SIGNAL(clicked()), this, SLOT(handleLock()), Qt::UniqueConnection);
-	connect(noPrint , SIGNAL(clicked()), this, SLOT(handlePrint()), Qt::UniqueConnection);
 	connect(noResize, SIGNAL(clicked()), this, SLOT(handleLockSize()), Qt::UniqueConnection);
 	connect(flipH   , SIGNAL(clicked()), this, SLOT(handleFlipH()), Qt::UniqueConnection);
 	connect(flipV   , SIGNAL(clicked()), this, SLOT(handleFlipV()), Qt::UniqueConnection);
 	connect(rotationSpin, SIGNAL(valueChanged(double)), this, SLOT(handleRotation()), Qt::UniqueConnection);
 
-	bool setter = false;
-	xposSpin->setEnabled(!setter);
-	yposSpin->setEnabled(!setter);
-	bool haveSameParent = m_doc->m_Selection->objectsHaveSameParent();
-	levelGroup->setEnabled(haveSameParent && !item->locked());
+	xposSpin->setEnabled(true);
+	yposSpin->setEnabled(true);
+	{
+		bool enabled = m_doc->m_Selection->objectsHaveSameParent() && !item->locked();
+		levelTop->setEnabled(enabled);
+		levelUp->setEnabled(enabled);
+		levelDown->setEnabled(enabled);
+		levelBottom->setEnabled(enabled);
+	}
+	// TODO: what is doing this?
 	if ((m_item->isGroup()) && (!m_item->isSingleSel))
 	{
 		setEnabled(true);
 	}
 	if ((m_item->itemType() == PageItem::Line) && m_lineMode)
 	{
-		xposLabel->setText( tr( "&X1:" ) );
-		yposLabel->setText( tr( "Y&1:" ) );
-		widthLabel->setText( tr( "X&2:" ) );
-		heightLabel->setText( tr( "&Y2:" ) );
+		xposLabel->setText(tr("&X1"));
+		yposLabel->setText(tr("Y&1"));
+		widthLabel->setText(tr("X&2"));
+		heightLabel->setText(tr("&Y2"));
 		rotationSpin->setEnabled(false);
 	}
 	else
 	{
-		xposLabel->setText( tr( "&X-Pos:" ) );
-		yposLabel->setText( tr( "&Y-Pos:" ) );
-		widthLabel->setText( tr( "&Width:" ) );
-		heightLabel->setText( tr( "&Height:" ) );
+		xposLabel->setText(tr("&X"));
+		yposLabel->setText(tr("&Y"));
+		widthLabel->setText(tr("&W"));
+		heightLabel->setText(tr("&H"));
 		rotationSpin->setEnabled(true);
 	}
 	m_haveItem = true;
@@ -390,14 +377,6 @@ void PropertiesPalette_XYZ::setCurrentItem(PageItem *item)
 		rrR = 360 - rrR;
 	noResize->setEnabled(!m_item->isArc());
 	
-	doGroup->setEnabled(false);
-	doUnGroup->setEnabled(false);
-	if ((m_doc->m_Selection->count() > 1) && (haveSameParent))
-		doGroup->setEnabled(true);
-	if (m_doc->m_Selection->count() == 1)
-		doUnGroup->setEnabled(m_item->isGroup());
-	if ((m_doc->appMode == modeEditClip) && (m_item->isGroup()))
-		doUnGroup->setEnabled(false);
 	if (m_item->asOSGFrame())
 	{
 		setEnabled(true);
@@ -414,7 +393,6 @@ void PropertiesPalette_XYZ::handleAppModeChanged(int oldMode, int mode)
 {
 	if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning())
 		return;
-	doUnGroup->setEnabled(mode != modeEdit && mode != modeEditClip && m_item->isGroup());
 	doLock->setEnabled(mode != modeEditClip);
 }
 
@@ -423,8 +401,6 @@ void PropertiesPalette_XYZ::handleSelectionChanged()
 	if (!m_haveDoc || !m_ScMW || m_ScMW->scriptIsRunning())
 		return;
 
-	nameEdit->setEnabled(m_doc->m_Selection->count() == 1);
-
 	PageItem* currItem = currentItemFromSelection();
 	if (m_doc->m_Selection->count() > 1)
 	{
@@ -442,10 +418,10 @@ void PropertiesPalette_XYZ::handleSelectionChanged()
 			m_ScMW->view->RCenter = FPoint(gx, gy + gh);
 		else if (bp == 4)
 			m_ScMW->view->RCenter = FPoint(gx + gw, gy + gh);
-		xposLabel->setText( tr( "&X-Pos:" ) );
-		yposLabel->setText( tr( "&Y-Pos:" ) );
-		widthLabel->setText( tr( "&Width:" ) );
-		heightLabel->setText( tr( "&Height:" ) );
+		xposLabel->setText(tr("&X"));
+		yposLabel->setText(tr("&Y"));
+		widthLabel->setText(tr("&W"));
+		heightLabel->setText(tr("&H"));
 
 		xposSpin->showValue(gx);
 		yposSpin->showValue(gy);
@@ -459,7 +435,6 @@ void PropertiesPalette_XYZ::handleSelectionChanged()
 		heightSpin->setEnabled(true);
 		rotationSpin->setEnabled(true);
 
-		nameEdit->setEnabled(false);
 		flipH->setCheckable( false );
 		flipV->setCheckable( false );
 		flipH->setChecked(false);
@@ -475,12 +450,6 @@ void PropertiesPalette_XYZ::handleSelectionChanged()
 		int itemType = currItem ? (int) currItem->itemType() : -1;
 		
 		m_haveItem = (itemType!=-1);
-		if (itemType == -1)
-		{
-			doGroup->setEnabled(false);
-			doUnGroup->setEnabled(false);
-		}
-		nameEdit->setEnabled(true);
 		basePointWidget->setEnabled(true);
 
 		setEnabled(true);
@@ -510,10 +479,10 @@ void PropertiesPalette_XYZ::handleSelectionChanged()
 		switch (itemType)
 		{
 		case -1:
-			xposLabel->setText( tr( "&X-Pos:" ) );
-			yposLabel->setText( tr( "&Y-Pos:" ) );
-			widthLabel->setText( tr( "&Width:" ) );
-			heightLabel->setText( tr( "&Height:" ) );
+			xposLabel->setText(tr("&X"));
+			yposLabel->setText(tr("&Y"));
+			widthLabel->setText(tr("&W"));
+			heightLabel->setText(tr("&H"));
 
 			xposSpin->showValue(0);
 			yposSpin->showValue(0);
@@ -1155,13 +1124,6 @@ void PropertiesPalette_XYZ::handleLockSize()
 	m_ScMW->scrActions["itemLockSize"]->toggle();
 }
 
-void PropertiesPalette_XYZ::handlePrint()
-{
-	if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning())
-		return;
-	m_ScMW->scrActions["itemPrintingEnabled"]->toggle();
-}
-
 void PropertiesPalette_XYZ::handleFlipH()
 {
 	if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning())
@@ -1176,6 +1138,7 @@ void PropertiesPalette_XYZ::handleFlipV()
 	m_ScMW->scrActions["itemFlipV"]->toggle();
 }
 
+/*
 void PropertiesPalette_XYZ::handleNewName()
 {
 	if (m_ScMW->scriptIsRunning() || !m_haveDoc || !m_haveItem)
@@ -1222,6 +1185,7 @@ void PropertiesPalette_XYZ::handleNewName()
 		}
 	}
 }
+*/
 
 void PropertiesPalette_XYZ::installSniffer(ScrSpinBox *spinBox)
 {
@@ -1334,11 +1298,6 @@ void PropertiesPalette_XYZ::showSizeLocked(bool isSizeLocked)
 	noResize->setChecked(isSizeLocked);
 }
 
-void PropertiesPalette_XYZ::showPrintingEnabled(bool isPrintingEnabled)
-{
-	noPrint->setChecked(!isPrintingEnabled);
-}
-
 void PropertiesPalette_XYZ::showFlippedH(bool isFlippedH)
 {
 	flipH->setChecked(isFlippedH);
@@ -1348,20 +1307,3 @@ void PropertiesPalette_XYZ::showFlippedV(bool isFlippedV)
 {
 	flipV->setChecked(isFlippedV);
 }
-
-void PropertiesPalette_XYZ::handleGrouping()
-{
-	m_ScMW->GroupObj();
-	doGroup->setEnabled(false);
-	doUnGroup->setEnabled(true);
-	handleSelectionChanged();
-	//FIXME
-	//TabStack->setItemEnabled(idShapeItem, false);
-}
-
-void PropertiesPalette_XYZ::handleUngrouping()
-{
-	m_ScMW->UnGroupObj();
-	m_doc->invalidateAll();
-	m_doc->regionsChanged()->update(QRect());
-}
diff --git a/scribus/ui/propertiespalette_xyz.h b/scribus/ui/propertiespalette_xyz.h
index 7892c5043..4c2c2c3be 100644
--- a/scribus/ui/propertiespalette_xyz.h
+++ b/scribus/ui/propertiespalette_xyz.h
@@ -14,10 +14,10 @@ for which a new license (GPL+exception) is in place.
 #include "linkbutton.h"
 #include "sclistboxpixmap.h"
 #include "scguardedptr.h"
+#include "pageitem.h"
 
 class BasePointWidget;
 class NameWidget;
-class PageItem;
 class ScribusDoc;
 class Selection;
 class ScribusMainWindow;
@@ -61,7 +61,6 @@ public slots:
 	void showRotation(double r);
 	void showLocked(bool);
 	void showSizeLocked(bool);
-	void showPrintingEnabled(bool);
 	void showFlippedH(bool);
 	void showFlippedV(bool);
 
@@ -83,10 +82,6 @@ private slots:
 	void handleBasePoint(int m);
 	void handleLock();
 	void handleLockSize();
-	void handlePrint();
-	void handleNewName();
-	void handleGrouping();
-	void handleUngrouping();
 
 protected slots:
 	//virtual void reject();
diff --git a/scribus/ui/propertiespalette_xyzbase.ui b/scribus/ui/propertiespalette_xyzbase.ui
index 06e9c35d5..bc7e21453 100644
--- a/scribus/ui/propertiespalette_xyzbase.ui
+++ b/scribus/ui/propertiespalette_xyzbase.ui
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>280</width>
+    <width>635</width>
     <height>333</height>
    </rect>
   </property>
@@ -30,404 +30,289 @@
     <number>0</number>
    </property>
    <item>
-    <widget class="QGroupBox" name="nameGroup">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="title">
-      <string>Name</string>
-     </property>
-     <layout class="QHBoxLayout" name="horizontalLayout">
-      <property name="spacing">
-       <number>2</number>
-      </property>
-      <property name="leftMargin">
-       <number>2</number>
-      </property>
-      <property name="topMargin">
-       <number>2</number>
-      </property>
-      <property name="rightMargin">
-       <number>2</number>
-      </property>
-      <property name="bottomMargin">
-       <number>2</number>
-      </property>
-      <item>
-       <widget class="NameWidget" name="nameEdit">
-        <property name="focusPolicy">
-         <enum>Qt::ClickFocus</enum>
-        </property>
-        <property name="toolTip">
-         <string>Name of selected object</string>
-        </property>
-       </widget>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="geoGroup">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="title">
-      <string>Geometry</string>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout_2">
-      <property name="leftMargin">
-       <number>2</number>
-      </property>
-      <property name="topMargin">
-       <number>2</number>
-      </property>
-      <property name="rightMargin">
-       <number>2</number>
-      </property>
-      <property name="bottomMargin">
-       <number>2</number>
-      </property>
-      <item>
-       <layout class="QGridLayout" name="geoGroupLayout">
-        <property name="leftMargin">
-         <number>5</number>
-        </property>
-        <property name="topMargin">
-         <number>5</number>
-        </property>
-        <property name="rightMargin">
-         <number>5</number>
-        </property>
-        <property name="bottomMargin">
-         <number>5</number>
-        </property>
-        <property name="spacing">
-         <number>4</number>
-        </property>
-        <item row="0" column="0">
-         <widget class="QLabel" name="xposLabel">
-          <property name="text">
-           <string>&amp;X-Pos:</string>
-          </property>
-          <property name="buddy">
-           <cstring>xposSpin</cstring>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="1">
-         <widget class="ScrSpinBox" name="xposSpin">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="toolTip">
-           <string>Horizontal position of current basepoint</string>
-          </property>
-         </widget>
-        </item>
-        <item row="2" column="0">
-         <widget class="QLabel" name="widthLabel">
-          <property name="text">
-           <string>&amp;Width:</string>
-          </property>
-          <property name="buddy">
-           <cstring>widthSpin</cstring>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="0">
-         <widget class="QLabel" name="yposLabel">
-          <property name="text">
-           <string>&amp;Y-Pos:</string>
-          </property>
-          <property name="buddy">
-           <cstring>yposSpin</cstring>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="1">
-         <widget class="ScrSpinBox" name="yposSpin">
-          <property name="toolTip">
-           <string>Vertical position of current basepoint</string>
-          </property>
-         </widget>
-        </item>
-        <item row="2" column="1">
-         <widget class="ScrSpinBox" name="widthSpin">
-          <property name="toolTip">
-           <string>Width of current selection</string>
-          </property>
-         </widget>
-        </item>
-        <item row="3" column="0">
-         <widget class="QLabel" name="heightLabel">
-          <property name="text">
-           <string>&amp;Height:</string>
-          </property>
-          <property name="buddy">
-           <cstring>heightSpin</cstring>
-          </property>
-         </widget>
-        </item>
-        <item row="3" column="1">
-         <widget class="ScrSpinBox" name="heightSpin">
-          <property name="toolTip">
-           <string>Height of current selection</string>
-          </property>
-         </widget>
-        </item>
-        <item row="4" column="0">
-         <widget class="QLabel" name="rotationLabel">
-          <property name="text">
-           <string>&amp;Rotation:</string>
-          </property>
-         </widget>
-        </item>
-        <item row="4" column="1">
-         <widget class="ScrSpinBox" name="rotationSpin">
-          <property name="toolTip">
-           <string>Rotation of object at current basepoint</string>
-          </property>
-          <property name="wrapping">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="5" column="0">
-         <widget class="QLabel" name="basepointLabel">
-          <property name="toolTip">
-           <string>Point from which measurements or rotation angles are referenced</string>
-          </property>
-          <property name="text">
-           <string>Basepoint:</string>
-          </property>
-         </widget>
-        </item>
-        <item row="5" column="1">
-         <widget class="BasePointWidget" name="basePointWidget" native="true"/>
-        </item>
-        <item row="2" column="2" rowspan="2">
-         <widget class="LinkButton" name="keepFrameWHRatioButton">
-          <property name="maximumSize">
-           <size>
-            <width>15</width>
-            <height>32767</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Keep the aspect ratio</string>
-          </property>
-          <property name="text">
-           <string>...</string>
-          </property>
-          <property name="checkable">
-           <bool>true</bool>
-          </property>
-          <property name="autoRaise">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_2">
-     <item>
-      <widget class="QGroupBox" name="levelGroup">
-       <property name="title">
-        <string>Level</string>
+    <layout class="QGridLayout" name="gridLayout_3">
+     <item row="1" column="5">
+      <widget class="QLabel" name="heightLabel">
+       <property name="text">
+        <string>&amp;H</string>
+       </property>
+       <property name="buddy">
+        <cstring>heightSpin</cstring>
        </property>
-       <layout class="QGridLayout" name="gridLayout">
-        <property name="leftMargin">
-         <number>5</number>
-        </property>
-        <property name="topMargin">
-         <number>5</number>
-        </property>
-        <property name="rightMargin">
-         <number>5</number>
-        </property>
-        <property name="bottomMargin">
-         <number>5</number>
-        </property>
-        <property name="spacing">
-         <number>4</number>
-        </property>
-        <item row="0" column="0">
-         <widget class="QToolButton" name="levelUp">
-          <property name="maximumSize">
-           <size>
-            <width>22</width>
-            <height>22</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Move one level up</string>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="0">
-         <widget class="QToolButton" name="levelDown">
-          <property name="maximumSize">
-           <size>
-            <width>22</width>
-            <height>22</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Move one level down</string>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="1">
-         <widget class="QToolButton" name="levelTop">
-          <property name="maximumSize">
-           <size>
-            <width>22</width>
-            <height>22</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Move to front</string>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="1">
-         <widget class="QToolButton" name="levelBottom">
-          <property name="maximumSize">
-           <size>
-            <width>22</width>
-            <height>22</height>
-           </size>
-          </property>
-          <property name="toolTip">
-           <string>Move to back</string>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="2" rowspan="2">
-         <widget class="QLabel" name="levelLabel">
-          <property name="toolTip">
-           <string>Indicates the level the object is on, 1 means the object is at the bottom</string>
-          </property>
-          <property name="text">
-           <string>0</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
       </widget>
      </item>
-     <item>
-      <spacer name="horizontalSpacer">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
+     <item row="0" column="7" rowspan="2">
+      <widget class="LinkButton" name="keepFrameWHRatioButton">
+       <property name="minimumSize">
+        <size>
+         <width>8</width>
+         <height>43</height>
+        </size>
+       </property>
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="checkable">
+        <bool>true</bool>
        </property>
-       <property name="sizeHint" stdset="0">
+      </widget>
+     </item>
+     <item row="0" column="5">
+      <widget class="QLabel" name="widthLabel">
+       <property name="text">
+        <string>&amp;W</string>
+       </property>
+       <property name="buddy">
+        <cstring>widthSpin</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QLabel" name="xposLabel">
+       <property name="text">
+        <string>&amp;X:</string>
+       </property>
+       <property name="buddy">
+        <cstring>xposSpin</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="5" colspan="2">
+      <layout class="QHBoxLayout" name="horizontalLayout_3">
+       <item>
+        <widget class="QToolButton" name="noResize">
+         <property name="toolTip">
+          <string>Lock or unlock the size of the object</string>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="doLock">
+         <property name="toolTip">
+          <string>Lock or unlock the object</string>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer_4">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item row="1" column="1">
+      <widget class="QLabel" name="yposLabel">
+       <property name="text">
+        <string>&amp;Y:</string>
+       </property>
+       <property name="buddy">
+        <cstring>yposSpin</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="2" rowspan="3">
+      <widget class="BasePointWidget" name="basePointWidget" native="true">
+       <property name="minimumSize">
         <size>
-         <width>40</width>
+         <width>20</width>
          <height>20</height>
         </size>
        </property>
-      </spacer>
+      </widget>
      </item>
-     <item>
-      <layout class="QGridLayout" name="gridLayout_2">
-       <item row="0" column="0">
-        <widget class="QToolButton" name="doGroup">
+     <item row="1" column="6">
+      <widget class="ScrSpinBox" name="heightSpin">
+       <property name="toolTip">
+        <string>Height of current selection</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="6">
+      <widget class="ScrSpinBox" name="widthSpin">
+       <property name="toolTip">
+        <string>Width of current selection</string>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="5" colspan="2">
+      <layout class="QHBoxLayout" name="horizontalLayout_5">
+       <item>
+        <widget class="QToolButton" name="levelBottom">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="toolTip">
-          <string>Group the selected objects</string>
+          <string>Move to back</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="1" column="0">
-        <widget class="QToolButton" name="doUnGroup">
+       <item>
+        <widget class="QToolButton" name="levelDown">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="toolTip">
-          <string>Ungroup the selected group</string>
+          <string>Move one level down</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="0" column="1">
-        <widget class="QToolButton" name="flipH">
+       <item>
+        <widget class="QToolButton" name="levelUp">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="toolTip">
-          <string>Flip horizontally</string>
+          <string>Move one level up</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="1" column="1">
-        <widget class="QToolButton" name="flipV">
+       <item>
+        <widget class="QToolButton" name="levelTop">
+         <property name="maximumSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
          <property name="toolTip">
-          <string>Flip vertically</string>
+          <string>Move to front</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="0" column="2">
-        <widget class="QToolButton" name="doLock">
+       <item>
+        <widget class="QLabel" name="levelLabel">
          <property name="toolTip">
-          <string>Lock or unlock the object</string>
+          <string>Indicates the level the object is on, 1 means the object is at the bottom</string>
          </property>
          <property name="text">
-          <string/>
+          <string>0</string>
          </property>
         </widget>
        </item>
-       <item row="1" column="2">
-        <widget class="QToolButton" name="noPrint">
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item row="2" column="4">
+      <widget class="ScrSpinBox" name="rotationSpin">
+       <property name="toolTip">
+        <string>Rotation of object at current basepoint</string>
+       </property>
+       <property name="wrapping">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="3">
+      <widget class="QLabel" name="rotation">
+       <property name="text">
+        <string>⟳</string>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="4">
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QToolButton" name="flipV">
          <property name="toolTip">
-          <string>Enable or disable exporting of the object</string>
+          <string>Flip vertically</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
-       <item row="0" column="3">
-        <widget class="QToolButton" name="noResize">
+       <item>
+        <widget class="QToolButton" name="flipH">
          <property name="toolTip">
-          <string>Lock or unlock the size of the object</string>
+          <string>Flip horizontally</string>
          </property>
          <property name="text">
           <string/>
          </property>
         </widget>
        </item>
+       <item>
+        <spacer name="horizontalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
       </layout>
      </item>
+     <item row="0" column="2" colspan="3">
+      <widget class="ScrSpinBox" name="xposSpin">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip">
+        <string>Horizontal position of current basepoint</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="2" colspan="3">
+      <widget class="ScrSpinBox" name="yposSpin">
+       <property name="toolTip">
+        <string>Vertical position of current basepoint</string>
+       </property>
+      </widget>
+     </item>
     </layout>
    </item>
    <item>
@@ -446,11 +331,6 @@
   </layout>
  </widget>
  <customwidgets>
-  <customwidget>
-   <class>NameWidget</class>
-   <extends>QLineEdit</extends>
-   <header>ui/propertiespalette_utils.h</header>
-  </customwidget>
   <customwidget>
    <class>ScrSpinBox</class>
    <extends>QDoubleSpinBox</extends>
@@ -468,6 +348,14 @@
    <header>ui/linkbutton.h</header>
   </customwidget>
  </customwidgets>
+ <tabstops>
+  <tabstop>xposSpin</tabstop>
+  <tabstop>yposSpin</tabstop>
+  <tabstop>levelBottom</tabstop>
+  <tabstop>levelDown</tabstop>
+  <tabstop>levelUp</tabstop>
+  <tabstop>levelTop</tabstop>
+ </tabstops>
  <resources/>
  <connections/>
 </ui>
xyz-bubu.diff (54,014 bytes)   

ranjithsiji

2019-11-27 07:09

reporter   ~0047150

What is the status of this feature? Will it go into the main code?

cbradney

2019-12-08 21:48

administrator   ~0047218

I've not so fond of https://bugs.scribus.net/file_download.php?file_id=10714&type=bug
It all feels too scrunched up, no label for level. Label for rotation is hidden next to the basepoint contorl. Flip H/V could easily be groups next to locking if you want to have 4 icons together. You could consider grouping the level in a 2x2 group?

ale

2019-12-08 22:08

manager   ~0047219

- what kind of label would you want for the levels?
  for the number? personally, i feel that we could remove the number altogether (it's probably of little to no practical use)
  the icon are exactly the same as they are in inkscape...
  and i think that they are rather clear in their meaning.
  i don't think that a text label is needed (there are tooltips that explain what each button does)
- the rotation icon feels indeed a bit lost.
  currently, it's just a unicode character and it should be replaced by an icon.
  i welcome propositions to improve the placement of the rotation (if possible keeping it next to the flip buttons)
- i'd prefer not to have the flipping and the locking together.
  imo, rotation and flips belong together.

personally, i would welcome it, if this patch would finally be accepted as is.

as long as the issues are with the placement of the buttons, it's all in an .ui file and it's easy for anybody to tweak it and propose a new version for discussion.
(or make screenshots and reshuffle the items)

personally, for the next step i'd like to focus on having the basepoint to support lines and to make the xyz + shape always shown in propeties palette (no expanding / collapsing for them, like in the main part of the text panel)
but as long as this patch is not accepted i'm a bit stuck...
(the line panel is mostly ready... and depends on this...)

jfl

2020-01-06 13:54

reporter   ~0047319

About the item name: couldn't the "Name" field be removed completely? The editable field on it's own would make it clear enough that this is the name of the item. Alternatively, "Name" could be moved to the left of the edit field:
Name: _____________________

ale

2020-01-10 10:45

manager   ~0047329

Last edited: 2020-01-10 13:32

here the current state:

- item name on top, but separated (i'm still for moving to a collapsing at the end of the PP)
- better placement for the rotation
- i suggest putting the current level in the tooltip over the level down / up buttons. i really can't find a different solution that does not require way to much space and "attention" compared to the usefulness of the information (normally, you just care if an item is above or below another, not the level value... in my experience it has almost only been useful for debugging purposes... not in production)
- i'm tempted to switch the flipping buttons with the level ones and make the buttons on the right side right aligned (and remove the alignment with the x,y / h,w fields)

and here the appimage:

https://gitlab.com/a.l.e/scribus/-/jobs/399164588/artifacts/file/Scribus-nightly-x86_64.AppImage

indigo-pp-xyz-20200110.png (19,552 bytes)   
indigo-pp-xyz-20200110.png (19,552 bytes)   

ale

2020-01-10 10:47

manager   ~0047330

here is a mockup of the proposal above, with flip and levels switched and locking on the right side.
(the xy/hw fields do not yet have the same width, sorry)

ranjithsiji

2020-02-07 04:01

reporter   ~0047366

This is verygood and I fully support to get it on the upstream code. If we can rework all other pallets like this then that will be great for scribus

nitramr

2023-05-23 22:06

developer   ~0050182

Hi,

this is my current proposal for the XYZ panel. Name input and print button are in the "advanced panel" and not visible here.
The "all" lock (formerly frame lock) on the left disable almost all buttons and inputs on the right side. I think this separation is much more obvious than in the previous interface.

BTW: the basepoint widget is already implemented for version 1.7.0. It already supports all 9 base points as a 3 point mode for lines. And as you can see, the rotation of the item is represented too.

ale

2023-05-24 07:24

manager   ~0050183

Last edited: 2023-05-24 07:27

nicely cleaned up and compacted.

having a look at it after a long time, i wonder if x, y and w, h should not be on the same row...

i played a bit with the screenshot and here is what come out...

it somehow feels a bit more "calm" to me...

p.s.: i'm not sure about what to do with the second lock... i wonder if we should simply have two of them, one in the properties palette and one in the content one, independent from each other.

PeterBenedek

2023-05-24 10:29

developer   ~0050184

Hi everybody,
Maybe split into tabs...?
01.png (5,120 bytes)   
01.png (5,120 bytes)   
02.png (19,578 bytes)   
02.png (19,578 bytes)   
03.png (6,374 bytes)   
03.png (6,374 bytes)   
04.png (11,537 bytes)   
04.png (11,537 bytes)   

nitramr

2023-05-24 12:27

developer   ~0050185

@ale
#: "having a look at it after a long time, i wonder if x, y and w, h should not be on the same row..."
=> I think the reason it looks weird is because of the bottom label. The eye does not recognize X/Y and W/H inputs as a group. Looking at other players in the game, it looks like a standard UI, having the base point widget in the top left, the next column is the X/Y manipulation, and the third column is the W/H manipulation. (at least for desktop publishing software, vector image software, like Sketch or Figma having it like you proposed).

In my view, there is no reason to reinvent the wheel. Even if it didn't work or was stupid, Adobe or Serif would probably change it because they make money off their tools.

#: "i'm not sure about what to do with the second lock... i wonder if we should simply have two of them, one in the properties palette and one in the content one, independent from each other."
=> I described it wrongly. The lock button next to the width and height input is the frame size lock, the "all" one locks everything (rotation, size, layer). See the attached image of the feature mapping.

@PeterBenedek
Interesting approach. To me, it looks like a more explanatory user interface, grouping items by functions and explaining features. On the other hand, however, it takes up much more space than before and increases the number of user clicks. My question is: What problem does this concept address?


Overall, I think it makes sense to question the buttons and functions. The lock buttons could be confusing. I also think it might make sense to not only rearrange items from the XYZ panel as its own items. I think it makes more sense to see the whole frame properties window at once, and regroup features thematically, possibly introducing new ones as well. For example, InDesign and Publisher have a "Shear" feature next to size and rotation manipulation. Scribus only has this in the Bezier node window.

PeterBenedek

2023-05-24 13:23

developer   ~0050186

"What problem does this concept address?"
* minimizes the Properties -- size of the X,Y,Z panel
* the panel will be more organized
* It does not require the introduction of new elements, it uses the existing functions of Scribus

"On the other hand, however, it takes up much more space..."
On the contrary. The panel has never been so small.

" increases the number of user clicks"
* This is the price of transparency...

PeterBenedek

2023-05-24 14:11

developer   ~0050187

"What problem does this concept address?"
ale wrote: "following martin's Indigo UI project, i've started shrinking the XYZ pane in the properties palette."

Here is a screenshot, about concept.
00.png (89,202 bytes)   
00.png (89,202 bytes)   

ale

2023-05-24 18:30

manager   ~0050188

Last edited: 2023-05-24 18:31

just two short further notes from my side:

- i'd prefer not to have further tabs... personally, i mostly use the fields in this dialog for information... and the ones i actively use are mostly the levels buttons (since there is no comfortable alternative)... tabs would make that rather cumbersome.
  as far i can tell, the goal of the UI work is to make it easier for the user to have an overview and access the scribus features, not to hide them away...

- if i look at the screenshot above, i feel the vertical layouts for x/y, w/h as pleasing in a ribbon layout (most of the screenshots), but not really in a panel (page plus).
  but that's not so important: i'm ok with any layout as long as it is compact and looks clean.

bubu

2023-05-24 18:37

reporter   ~0050189

After all these years of waiting, I'm so glad it's started! Thank you for trying again! I applaud your perseverance! �

I think it is important to have uniform design principles that are applied consistently on the interface. Are there any?

Which are affected here (as I see):
1) Be logically organized
2) Be compact (as much widgets as possible on the screen; no empty space)
3) Be quick to use (as few clicks as possible to access a function)
4) Follow industry practices (non-Scribus users can learn quickly)

I see that @PeterBenedek prefers principle 1., but @nitramr prefers principles 2, 3, 4. I also find 2. and 3 more important.

Perhaps you can reach unity in the development of each interface more quickly if the design principles are common! I'm really rooting for you guys!

nitramr

2023-11-05 18:48

developer   ~0050420

Hi all,

I updated the UI concept of the XYZ section. In one screenshot, you can see labels below a group of controls, this is a new custom container widget I made. This widget has a property to hide the label, so we could have a global application setting to show/hide the labels to have a condensed or professional mode.

What do you think about to move the name field and export button to a new "export" section? IMO, it is not geometry related.

And what do you think about the new concept?

ale

2023-11-05 20:12

manager   ~0050422

without having tried it, i like the version without the labels.
and i probably would still welcome the name being removed from the xyz palette. (i wonder if i could go to a newly created "item" section; the print visibility would somehow fit in there)

i'm just a bit worried that the panel gets even wider but the input fields are getting smaller, so it might be ok.

JLuc

2023-11-05 22:09

developer   ~0050423

I've never used the name of the item...
or if i ever have, that was so long ago i've forgotten everything about it.
That would be very hacky a DTP process isnt ?

bubu

2023-11-05 23:21

reporter   ~0050424

It's very nice. Thanks, nitramr.
The property to hide the label is a brilliant idea.
I'm just thinking can I suggest a better layout... not really.
The name property is important for scripting. But can go in another palette with printing property too.
image2.png (42,844 bytes)   
image2.png (42,844 bytes)   

nitramr

2023-11-08 18:44

developer   ~0050427

Last edited: 2023-11-08 18:45

@ale the palette width is almost the same as before, but the height is ca. half the previous height.

The second screenshot shows the implemented proposal from @ale and @bubu . Makes sense because the base point widget rotates with rotation input changes.
Without the labels, it is even smaller. :)

The UI structure is this (rows):
1. Box editing (Position + Size)
2. Transformation (Rotation, Mirroring)
3. Actions (Lock, Group, Layer) --> Actions don't change the geometry of the item.
4. Item properties --> will move into a separate section

cbradney

2023-11-08 22:46

administrator   ~0050428

Last edited: 2023-11-08 22:46

Its looking very nice Martin

ale

2023-11-09 06:32

manager   ~0050429

Last edited: 2023-11-09 06:33

while writing about the width, i also checked and also came to the conclusion that it's not wider than the current 1.6 state.

at the same time, i have the feeling that during the past years the text and properties palette got wider and i would not be unhappy to see it shrink it a bit again.
(well, it might also be related to the way smaller resolution on my current monitor; on top of it, before 1.7, the tools were not docked to the left by default: that also makes a difference)

but, of course, reducing the height is way more important!

personally, the main goal should be that the xyz, shape, line, and color section can be open at the same time on a "normal" 1920 x1080 monitor.
(which was not possible even in my old high resolution monitor!)

and in that insight, your patches go in the very right direction!

ps.: i played around a bit with the PP and when all other sections but the xyz are closed, i can shrink it to a width that i consider visually optimal for me... (see the screenshot)
when everything is open, the minimal width is a bit wider than 1.6.
but that's not a reason for not optimizing the height first!
ui-slim.png (142,258 bytes)   
ui-slim.png (142,258 bytes)   

bubu

2023-11-09 07:50

reporter   ~0050430

Martin, I appreciate your work! I was so looking forward to these times. Thank you for implementig our idea. I checked it: it's a little bit higher, but really narrower. The decision should be left to the main developers.
comp2.png (95,971 bytes)   
comp2.png (95,971 bytes)   

Issue History

Date Modified Username Field Change
2019-11-01 17:15 ale New Issue
2019-11-01 17:15 ale File Added: xyz-3.png
2019-11-01 17:48 ale File Added: indigo-pp-xyz.diff
2019-11-01 17:48 ale Note Added: 0046896
2019-11-01 19:31 PeterBenedek File Added: Martin's_basepoint.jpg
2019-11-01 19:31 PeterBenedek Note Added: 0046897
2019-11-01 19:57 jghali Note Added: 0046898
2019-11-01 19:57 jghali Summary Inidigo UI: shrink the size of the XYZ pane => Indigo UI: shrink the size of the XYZ pane
2019-11-01 20:20 PeterBenedek File Added: Move_icons.jpg
2019-11-01 20:20 PeterBenedek Note Added: 0046900
2019-11-01 20:34 PeterBenedek Note Added: 0046901
2019-11-01 21:33 ale Note Added: 0046902
2019-11-02 05:38 jghali Note Added: 0046905
2019-11-02 05:42 jghali Note Edited: 0046905
2019-11-02 06:43 cbradney Note Added: 0046907
2019-11-02 07:36 ale Note Added: 0046909
2019-11-02 10:08 PeterBenedek Note Added: 0046911
2019-11-02 10:10 PeterBenedek Note Edited: 0046911
2019-11-02 10:33 PeterBenedek Note Added: 0046912
2019-11-02 11:28 ale File Added: xyz-4.png
2019-11-02 11:28 ale Note Added: 0046914
2019-11-02 11:29 ale File Deleted: xyz-4.png
2019-11-02 11:29 ale File Added: xyz-4.png
2019-11-02 11:31 ale Note Edited: 0046914
2019-11-02 11:37 ale File Added: xyz-4.xcf
2019-11-02 11:37 ale Note Added: 0046916
2019-11-02 12:22 PeterBenedek File Added: xyz_modified.jpg
2019-11-02 12:22 PeterBenedek File Added: xyz-4_modified_PeterB.xcf
2019-11-02 12:22 PeterBenedek File Added: Basepoint.jpg
2019-11-02 12:22 PeterBenedek Note Added: 0046917
2019-11-02 13:00 PeterBenedek File Added: xyz_PeterB.jpg
2019-11-02 13:00 PeterBenedek Note Added: 0046919
2019-11-02 13:24 ale Note Added: 0046923
2019-11-02 14:20 PeterBenedek File Added: xyz_02_PeterB.jpg
2019-11-02 14:20 PeterBenedek File Added: alignment.gif
2019-11-02 14:20 PeterBenedek Note Added: 0046924
2019-11-02 14:26 PeterBenedek File Deleted: xyz_02_PeterB.jpg
2019-11-02 14:26 PeterBenedek File Added: xyz_PeterB-2.jpg
2019-11-02 16:13 ale Note Added: 0046927
2019-11-02 17:38 PeterBenedek File Deleted: xyz_modified.jpg
2019-11-02 17:49 PeterBenedek Note Added: 0046929
2019-11-02 18:51 PeterBenedek File Added: XYZ_compromise.jpg
2019-11-02 18:51 PeterBenedek Note Added: 0046930
2019-11-02 19:02 PeterBenedek File Deleted: XYZ_compromise.jpg
2019-11-02 19:05 PeterBenedek File Added: XYZ_compromise.jpg
2019-11-02 19:05 PeterBenedek Note Added: 0046931
2019-11-02 19:30 ale File Added: xyz-5.png
2019-11-02 19:30 ale Note Added: 0046932
2019-11-02 19:42 ale Note Added: 0046933
2019-11-02 20:17 PeterBenedek Note Added: 0046934
2019-11-03 08:09 PeterBenedek File Added: ale_original.jpg
2019-11-03 08:09 PeterBenedek File Added: peter_request.jpg
2019-11-03 08:09 PeterBenedek Note Added: 0046938
2019-11-03 08:10 PeterBenedek Note Edited: 0046938
2019-11-03 11:40 ale Note Added: 0046939
2019-11-03 11:41 ale Note Edited: 0046939
2019-11-03 11:43 ale File Added: xyz-6.png
2019-11-03 11:44 ale Note Edited: 0046939
2019-11-03 12:14 PeterBenedek File Added: basepoint_flipp_horizontally.jpg
2019-11-03 12:14 PeterBenedek File Added: basepoint_middle_left_size.jpg
2019-11-03 12:14 PeterBenedek Note Added: 0046940
2019-11-03 12:47 ale Note Added: 0046941
2019-11-03 13:02 PeterBenedek File Added: Flip.jpg
2019-11-03 13:22 PeterBenedek File Deleted: Flip.jpg
2019-11-03 13:32 PeterBenedek File Added: Flip_buttons.jpg
2019-11-03 13:32 PeterBenedek Note Added: 0046943
2019-11-03 13:34 PeterBenedek Note Edited: 0046943
2019-11-03 14:48 ale Note Added: 0046945
2019-11-03 15:26 PeterBenedek Note Added: 0046946
2019-11-04 17:16 ale File Added: indigo-pp-xyz-peter.diff
2019-11-04 17:16 ale Note Added: 0046955
2019-11-04 17:17 ale Summary Indigo UI: shrink the size of the XYZ pane => [PATCH] Indigo UI: shrink the size of the XYZ pane
2019-11-04 17:17 ale Patch No => Yes
2019-11-04 18:03 PeterBenedek Note Added: 0046957
2019-11-04 18:04 PeterBenedek Note Edited: 0046957
2019-11-04 18:24 ale Note Added: 0046958
2019-11-04 18:24 ale Note Edited: 0046958
2019-11-04 18:25 ale Note Edited: 0046896
2019-11-04 18:46 PeterBenedek Note Added: 0046960
2019-11-05 06:55 ale Note Edited: 0046958
2019-11-05 07:41 ale Relationship added related to 0015813
2019-11-05 08:34 PeterBenedek File Added: Basepoint_left.jpg
2019-11-05 08:34 PeterBenedek Note Added: 0046968
2019-11-05 08:38 PeterBenedek Note Edited: 0046968
2019-11-05 13:49 ale Note Added: 0046974
2019-11-05 13:50 ale Note Edited: 0046974
2019-11-05 14:06 ale Relationship added related to 0009048
2019-11-05 19:17 bubu File Added: Scribus, shrink the size of the XYZ pane.svg.png
2019-11-05 19:17 bubu Note Added: 0046978
2019-11-05 21:35 ale Note Added: 0046980
2019-11-06 08:07 ale File Added: xyz-bubu-01.png
2019-11-06 08:07 ale Note Added: 0046986
2019-11-06 08:45 PeterBenedek Note Added: 0046988
2019-11-06 08:50 bubu Note Added: 0046989
2019-11-06 10:22 ale Note Added: 0046991
2019-11-08 09:30 ale File Added: xyz-bubu.diff
2019-11-08 09:30 ale Note Added: 0047034
2019-11-27 07:09 ranjithsiji Note Added: 0047150
2019-12-08 21:48 cbradney Note Added: 0047218
2019-12-08 22:08 ale Note Added: 0047219
2020-01-06 13:54 jfl Note Added: 0047319
2020-01-10 10:45 ale File Added: indigo-pp-xyz-20200110.png
2020-01-10 10:45 ale Note Added: 0047329
2020-01-10 10:47 ale File Added: indigo-pp-xyz-20200110-switched.png
2020-01-10 10:47 ale Note Added: 0047330
2020-01-10 13:32 ale Note Edited: 0047329
2020-02-07 04:01 ranjithsiji Note Added: 0047366
2023-05-23 22:06 nitramr Note Added: 0050182
2023-05-23 22:06 nitramr File Added: Bildschirmfoto vom 2023-05-23 23-58-02.png
2023-05-24 07:24 ale Note Added: 0050183
2023-05-24 07:24 ale File Added: Bildschirmfoto vom 2023-05-23 23-58-02-order.png
2023-05-24 07:27 ale Note Edited: 0050183
2023-05-24 10:29 PeterBenedek Note Added: 0050184
2023-05-24 10:29 PeterBenedek File Added: 01.png
2023-05-24 10:29 PeterBenedek File Added: 02.png
2023-05-24 10:29 PeterBenedek File Added: 03.png
2023-05-24 10:29 PeterBenedek File Added: 04.png
2023-05-24 12:27 nitramr Note Added: 0050185
2023-05-24 12:27 nitramr File Added: Bildschirmfoto 2023-05-24 um 13.45.43.png
2023-05-24 12:27 nitramr File Added: Bildschirmfoto 2023-05-24 um 13.45.17.png
2023-05-24 13:23 PeterBenedek Note Added: 0050186
2023-05-24 14:11 PeterBenedek Note Added: 0050187
2023-05-24 14:11 PeterBenedek File Added: 00.png
2023-05-24 18:30 ale Note Added: 0050188
2023-05-24 18:31 ale Note Edited: 0050188
2023-05-24 18:37 bubu Note Added: 0050189
2023-05-27 16:21 cbradney Target Version => 1.7.0
2023-11-05 18:48 nitramr Note Added: 0050420
2023-11-05 18:48 nitramr File Added: Bildschirmfoto vom 2023-11-05 19-24-53.png
2023-11-05 18:48 nitramr File Added: Bildschirmfoto vom 2023-11-05 19-31-49.png
2023-11-05 20:12 ale Note Added: 0050422
2023-11-05 22:09 JLuc Note Added: 0050423
2023-11-05 23:21 bubu Note Added: 0050424
2023-11-05 23:21 bubu File Added: image2.png
2023-11-08 18:44 nitramr Note Added: 0050427
2023-11-08 18:44 nitramr File Added: Bildschirmfoto vom 2023-11-08 19-17-57.png
2023-11-08 18:44 nitramr File Added: Bildschirmfoto vom 2023-11-08 19-28-21.png
2023-11-08 18:44 nitramr File Added: Bildschirmfoto vom 2023-11-08 19-43-35.png
2023-11-08 18:45 nitramr Note Edited: 0050427
2023-11-08 22:46 cbradney Note Added: 0050428
2023-11-08 22:46 cbradney Note Edited: 0050428
2023-11-09 06:32 ale Note Added: 0050429
2023-11-09 06:32 ale File Added: ui-slim.png
2023-11-09 06:33 ale Note Edited: 0050429
2023-11-09 07:50 bubu Note Added: 0050430
2023-11-09 07:50 bubu File Added: comp2.png
2024-03-23 22:30 nitramr Relationship added related to 0017180