View Issue Details

IDProjectCategoryView StatusLast Update
0000356ScribusUser Interfacepublic2004-06-14 23:20
Reporteradaran Assigned Toale  
PrioritynormalSeveritytweakReproducibilityalways
Status closedResolutionfixed 
Platformx86OSLinuxOS Version2.6.4
Product Version1.1.5 
Summary0000356: Margin Dialog not intuituve enough
DescriptionWhen trying to figure out why my Margin Guides don't snap (see other bug), I noticed a few things that bothered me a little in the Page -> Manage Guides dialog:

a.) When clicking the "New" button, a new guide at 0.00 is created, and the "0.00" is selected. However, there is no selection of the newly created guide in the upper list of guides - none of them is. This can be a bit confusing, because the user isn't sure at first if he is really editing the guide he has just created.

b.) A guide beeing edited does not show it's new position value in the list while typing. This should be the case since there is no "change" button to apply guide changes, the only way to apply a change is to click on another margin or close the dialog.

c.) The impression the user gets from b, which is that guides are not edited "in place" leads to confusion with the New button: The user might assume that he has to enter the position of the guide he wants to create first and then click the New - button, which is not the case.

d.) When changing a guide, and then clicking "New" the change is lost.

e.) When deleting a guide, the guide with the highest position value is selected after the deletion, not the guide that was below the deleted one and filled its place. This behavior deviates from standards in other applications (to the best of my knowledge and experiences).

f.) Pressing return should not close the dialog, but only update the guides position value in the list. Because there is no feedback that the guide has actually been changed (see b), the user will expect to have to do something else to make a change to a guide (at least I did) and often presses return - which closes the dialog.
TagsNo tags attached.
Patch

Relationships

has duplicate 0000512 closedsubik Better guide dialog 
related to 0003837 acknowledged Metabug: Master pages/Page templates 
child of 0003821 acknowledged Metabug: Usability 

Activities

ale

2004-03-24 09:22

manager   ~0000778

Last edited: 2004-03-24 09:22

if you want it i can take care of this bugreport... as soon as i have some spare time :-)

(for the guides part!)

edited on: 03-24-04 10:22

adaran

2004-05-27 11:16

reporter   ~0001586

also see bug 0000356

plinnell

2004-06-04 01:42

viewer   ~0001653

see also comments please from 0000512

2004-06-08 07:10

 

guidemanager.diff (4,230 bytes)   
--- guidemanager.cpp~	2004-06-03 10:54:22.000000000 +0200
+++ guidemanager.cpp	2004-06-05 12:31:44.837359624 +0200
@@ -18,21 +18,12 @@
 
 /***************************************************************************
  * guides manager for scribus
- * .inspired by tabmanager.cpp and guidemanager.cpp by franz shmid
- * .porting structure and functionality of the tabmanager to the guides
- * .the dialog layout hasn't been modified
- * .first steps in unifying the variable naming schema...
- * .a couple of bugs have been corrected (delete was enabled even when
- *  there were no more guides/tabs)
- * .a couple of enhancements: guides can be "moved"; to delete all the guides,
- *  just keep on clicking on delete; guides can be entered
- *  without using the mouse (click on add, write the measure, press
- *  tab, press space, enter the next guide)
- * .open questions: should i use GetUnit or directly access the array?
- *  why do the VerXXX variables refer to the horizontal guides? Should
- *  i change this? Should the precision depend on the unit used? Why are
- *  all the methods and properties public? Only LocHor and LocVer should
- *  be public! 
+ * - bug 356:
+ *   a: ok
+ *   d: ok
+ *   e: ok
+ *   f: press tab to make it update! (no focus in/out signal for qspinbox)
+ * - added the esc key
  ***************************************************************************/
 
 #include "guidemanager.h"
@@ -185,6 +176,7 @@
 	
 	Cancel = new QPushButton(this, "Cancel");
 	Cancel->setText( tr("Cancel"));
+    Cancel->setAccel(QKeySequence("Esc"));
 	Layout5->addWidget(Cancel);
 	
 	QSpacerItem* spacer_3 = new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum );
@@ -207,6 +199,8 @@
 	connect(VerDel, SIGNAL(clicked()), this, SLOT(DelVerVal()));
 	connect(VerSpin, SIGNAL(valueChanged(int)), this, SLOT(ChangeVerVal()));
 	connect(Lock, SIGNAL(clicked()), this, SLOT(HandleLock()));
+
+	// connect(VerSpin, SIGNAL(focusIn()), this, SLOT(FocusInEvent()));
 	
 	UpdateHorList();
 	UpdateVerList();
@@ -238,7 +232,10 @@
 	QValueList<double>::Iterator it;
 	it = LocHor.at(selHor);
 	it = LocHor.remove(it);
-	selHor = LocHor.isEmpty() ? -1 : static_cast<int>(LocHor.count() - 1);
+    if (LocHor.isEmpty())
+        selHor = -1;
+    else if (selHor > static_cast<int>(LocHor.count()-1))
+        selHor--;
 	if (selHor == -1)
 		HorDel->setEnabled(false);
 	UpdateHorList();
@@ -249,7 +246,10 @@
 	QValueList<double>::Iterator it;
 	it = LocVer.at(selVer);
 	it = LocVer.remove(it);
-	selVer = LocVer.isEmpty() ? -1 : static_cast<int>(LocVer.count() - 1);
+    if (LocVer.isEmpty())
+        selVer = -1;
+    else if (selVer > static_cast<int>(LocVer.count()-1))
+        selVer--;
 	if (selVer == -1)
 		VerDel->setEnabled(false);
 	UpdateVerList();
@@ -257,6 +257,11 @@
 	
 void GuideManager::AddHorVal()
 {
+    if (HorSpin->hasFocus())
+        HorSpin->clearFocus();
+    if (VerSpin->hasFocus())
+        VerSpin->clearFocus();
+
 	LocHor.prepend(0);
 	selHor = 0;
 	
@@ -266,12 +271,19 @@
 	
 	HorDel->setEnabled(true);
 	UpdateHorList();
+    HorList->setCurrentItem(0);
+    HorList->setSelected(0,true);
 	HorSpin->setFocus();
 	HorSpin->selectAll();
 }
 	
 void GuideManager::AddVerVal()
 {
+    if (HorSpin->hasFocus())
+        HorSpin->clearFocus();
+    if (VerSpin->hasFocus())
+        VerSpin->clearFocus();
+
 	LocVer.prepend(0);
 	selVer = 0;
 	
@@ -281,6 +293,8 @@
 	
 	VerDel->setEnabled(true);
 	UpdateVerList();
+    VerList->setCurrentItem(0);
+    VerList->setSelected(0,true);
 	VerSpin->setFocus();
 	VerSpin->selectAll();
 }
@@ -402,6 +416,7 @@
 
 	if (selHor != -1)
 		HorList->setCurrentItem(selHor);
+
 	HorSpin->setEnabled(selHor != -1 ? true : false);
 	HorSpin->setValue(selHor != -1 ? (LocHor[selHor] * UmReFaktor * 10000.0) / 10000.0 : 0);
 
@@ -414,10 +429,10 @@
 	disconnect(VerList, SIGNAL(highlighted(QListBoxItem*)), this, SLOT(selVerIte(QListBoxItem*)));
 	disconnect(VerSpin, SIGNAL(valueChanged(int)), this, SLOT(ChangeVerVal()));
 	
-	QString tmp;
-	
 	VerList->clear();
 	
+	QString tmp;
+	
 	for (uint i = 0; i < LocVer.count(); ++ i)
 		VerList->insertItem(tmp.setNum(qRound(LocVer[i] * UmReFaktor * 10000.0) / 10000.0, 'f', 4) +
 					 GetUnit());
guidemanager.diff (4,230 bytes)   

ale

2004-06-08 07:24

manager   ~0001671

+ * - bug 356:
+ * a: ok
+ * d: ok
+ * e: ok
+ * f: press tab to make it update! (no focus in/out signal for qspinbox)
+ * - added the esc key

i hope that the patch resolves most of the usability problems related with the guide manager.

the biggest regret i have, is not having being able to selective handle the return button.

i wanted to normally let the user close the dialog with the return key but, if she was in the spin box, just update the value in the list and go out of the field... sadly, there was no way to know if the spinbox in focus...

so, you will have to keep the good habit of hitting the tab key to get out of the field! (btw, you can "add" the guideline, edit it, tab, space, and you're ready to edit the next guideline... it's quite effective once you're used to it!)

simply comment here if you have good ideas :-)

ale

2004-06-08 07:34

manager   ~0001672

some comments about the other bug report (which is already closed)

# 1) To add guide, I type value and then click to Add button
# (whole Guide dialog is still open)

as said, just tab out of the field (or click somewhere else)...

# 2) To change guide, there should be button "Edit".
# After clicking on it, should be displayed next dialog with more options.
# One for value and another for example "Multiples of this value" for
# guides in typed value multiples.

scribus doesn't normally use those edit button...

do you have other suggestion for the buttons?

# 3) There should be option to lock every guide separate.
# Locked guide should be displayed for example with other color in work space.

i see the interest of it... but i wonder if it wouldn't be better to separate the guides in the template from those in the document... and the first ones would then be locked while editing the doc.

# 4) When I select guide in dialog, this guide should be highlighted
# in work space with other color or by blinking.

if 3) then 4) would be interesting...

cbradney

2004-06-14 23:20

administrator   ~0001733

Tested. Fixed.

Issue History

Date Modified Username Field Change
2004-03-23 17:25 adaran New Issue
2004-03-24 09:22 ale Note Added: 0000778
2004-03-24 09:22 ale Note Edited: 0000778
2004-03-25 15:56 cbradney Status new => assigned
2004-03-25 15:56 cbradney Assigned To => ale
2004-04-07 15:03 cbradney Category General => User Interface
2004-05-27 11:16 adaran Note Added: 0001586
2004-06-04 01:41 plinnell Relationship added has duplicate 0000512
2004-06-04 01:42 plinnell Note Added: 0001653
2004-06-08 07:10 ale File Added: guidemanager.diff
2004-06-08 07:24 ale Note Added: 0001671
2004-06-08 07:34 ale Note Added: 0001672
2004-06-08 21:49 fschmid Status assigned => resolved
2004-06-08 21:49 fschmid Resolution open => fixed
2004-06-14 23:20 cbradney Status resolved => closed
2004-06-14 23:20 cbradney Note Added: 0001733
2006-05-15 18:25 christoph_s Relationship added child of 0003821
2006-05-18 19:46 christoph_s Relationship added related to 0003837