[prev in list] [next in list] [prev in thread] [next in thread] 

List:       lyx-devel
Subject:    [patch] Fix UI GuiTabular
From:       Vincent van Ravesteijn <V.F.vanRavesteijn () tudelft ! nl>
Date:       2008-11-17 11:03:16
Message-ID: 49214F74.9000303 () tudelft ! nl
[Download RAW message or body]

Solving:
- The GuiTabular dialog has an auto-apply policy. The buttoncontroller 
however changes the Close button into Cancel, while pressing Cancel does 
apply the settings. Therefore I added a new ButtonPolicy: AutoApplyPolicy.
- When editing the width edit field is not finished by an enter but by 
tab, a mouseclick or something else, the value is not applied.
- The default of valign is TOP and not MIDDLE. This is defined in 
various constructors in InsetTabular.cpp.

OK to apply in trunk and branch ?

Vincent


["fix_guitabular.patch" (text/plain)]

Index: src/frontends/qt4/ButtonPolicy.h
===================================================================
--- src/frontends/qt4/ButtonPolicy.h	(revision 27602)
+++ src/frontends/qt4/ButtonPolicy.h	(working copy)
@@ -23,7 +23,7 @@
     dialogs. Only the policy is implemented here.  Separate ButtonController
     classes are needed for each GUI implementation.
 
-		Policy                    | ReadOnly | Apply Button | Repeated Apply
+    Policy                    | ReadOnly | Apply Button | Repeated Apply
     ========================================================================
     OkCancel                  |     N    |      N        |      -
     OkCancelReadOnly          |     Y    |      N        |      -
@@ -31,6 +31,7 @@
     OkApplyCancelReadOnly     |     Y    |      Y        |      Y
     NoRepeatedApply           |     N    |      Y        |      N
     NoRepeatedApplyReadOnly   |     Y    |      Y        |      N
+    AutoApply                 |     N    |      N        |      -	
     Preferences               |     N    |      Y        | No (Ok-Close)
     Ignorant                  |    N/A   |     N/A       |     N/A
     ========================================================================
@@ -121,7 +122,7 @@
 		OkApplyCancelReadOnlyPolicy,
 
 		/** Ok, Apply and Cancel buttons for dialogs where repeated
- *    Apply is allowed.
+			Apply is allowed.
 			Note: This scheme supports the relabelling of Cancel to Close
 			and vice versa.
 			This is based on the value of the bool state of the Button::CANCEL.
@@ -137,6 +138,10 @@
 		 */
 		NoRepeatedApplyPolicy,
 
+		/** Close button for dialogs with auto-Apply.
+		 */
+		AutoApplyPolicy,
+
 		/** Defines the policy used by the Preferences dialog.
 			Four buttons: Ok (Save), Apply, Cancel/Close, Restore.
 			Note: This scheme supports the relabelling of Cancel to Close
Index: src/frontends/qt4/ButtonPolicy.cpp
===================================================================
--- src/frontends/qt4/ButtonPolicy.cpp	(revision 27602)
+++ src/frontends/qt4/ButtonPolicy.cpp	(working copy)
@@ -97,6 +97,8 @@
 			return "NoRepeatedApplyPolicy";
 		case ButtonPolicy::NoRepeatedApplyReadOnlyPolicy:
 			return "NoRepeatedApplyReadOnlyPolicy";
+		case ButtonPolicy::AutoApplyPolicy:
+			return "AutoApplyPolicy";
 		case ButtonPolicy::IgnorantPolicy:
 			return "IgnorantPolicy";
 		default:
@@ -140,6 +142,7 @@
 	void initOkApplyCancelReadOnly();
 	void initOkApplyCancel();
 	void initNoRepeatedApply();
+	void initAutoApply();
 	void initPreferences();
 
 public:
@@ -186,6 +189,9 @@
 		case NoRepeatedApplyReadOnlyPolicy:
 			initNoRepeatedApplyReadOnly();
 			break;
+		case AutoApplyPolicy:
+			initAutoApply();
+			break;
 		case PreferencesPolicy:
 			initPreferences();
 			break;
@@ -575,7 +581,44 @@
 	state_machine_[INVALID][SMI_RESTORE] = INITIAL;
 }
 
+void ButtonPolicy::Private::initAutoApply()
+{
+	outputs_ = StateOutputs(INVALID + 1, ButtonPolicy::ALL_BUTTONS);
+	state_machine_ = StateMachine(INVALID + 1,
+			 StateArray(int(SMI_TOTAL), ButtonPolicy::BOGUS));
 
+	// Build the state output map
+	outputs_[INITIAL] = CLOSE;
+	outputs_[VALID] = RESTORE | OKAY | CLOSE;
+	outputs_[INVALID] = RESTORE | CANCEL;
+
+	// Build the state machine one state at a time
+	// NOTE:  Since CANCEL and HIDE always go to INITIAL they are
+	//        left out of the state machine and handled explicitly
+	//        in input()
+	//
+	// State::INITIAL
+	state_machine_[INITIAL][SMI_READ_ONLY] = INITIAL;
+	state_machine_[INITIAL][SMI_READ_WRITE] = INITIAL;
+	state_machine_[INITIAL][SMI_VALID] = VALID;
+	state_machine_[INITIAL][SMI_INVALID] = INVALID;
+	// State::VALID
+	state_machine_[VALID][SMI_VALID] = VALID;
+	state_machine_[VALID][SMI_READ_ONLY] = VALID;
+	state_machine_[VALID][SMI_READ_WRITE] = VALID;
+	state_machine_[VALID][SMI_INVALID] = INVALID;
+	state_machine_[VALID][SMI_OKAY] = INITIAL;
+	state_machine_[VALID][SMI_APPLY] = INITIAL;
+	state_machine_[VALID][SMI_RESTORE] = INITIAL;
+	// State::INVALID
+	state_machine_[INVALID][SMI_INVALID] = INVALID;
+	state_machine_[INVALID][SMI_READ_ONLY] = INVALID;
+	state_machine_[INVALID][SMI_READ_WRITE] = INVALID;
+	state_machine_[INVALID][SMI_VALID] = VALID;
+	state_machine_[INVALID][SMI_RESTORE] = INITIAL;
+}
+
+
 /////////////////////////////////////////////////////////////////////////
 //
 // ButtonPolicy
Index: src/frontends/qt4/GuiTabular.cpp
===================================================================
--- src/frontends/qt4/GuiTabular.cpp	(revision 27602)
+++ src/frontends/qt4/GuiTabular.cpp	(working copy)
@@ -91,7 +91,7 @@
 	connect(lastfooterBorderBelowCB, SIGNAL(clicked()), this, SLOT(ltLastFooterBorderBelow_clicked()));
 	connect(lastfooterNoContentsCB, SIGNAL(clicked()), this, SLOT(ltLastFooterEmpty_clicked()));
 	connect(specialAlignmentED, SIGNAL(returnPressed()), this, SLOT(specialAlignment_changed()));
-	connect(widthED, SIGNAL(returnPressed()), this, SLOT(width_changed()));
+	connect(widthED, SIGNAL(editingFinished()), this, SLOT(width_changed()));
 	connect(widthUnit, SIGNAL(selectionChanged(lyx::Length::UNIT)), this, SLOT(width_changed()));
 	connect(closePB, SIGNAL(clicked()), this, SLOT(close_clicked()));
 	connect(borders, SIGNAL(topSet(bool)), this, SLOT(topBorder_changed()));
@@ -102,7 +102,7 @@
 	connect(rotateCellCB, SIGNAL(clicked()), this, SLOT(rotateCell()));
 	connect(longTabularCB, SIGNAL(clicked()), this, SLOT(longTabular()));
 
-	bc().setPolicy(ButtonPolicy::NoRepeatedApplyReadOnlyPolicy);
+	bc().setPolicy(ButtonPolicy::AutoApplyPolicy);
 	bc().setCancel(closePB);
 
 	bc().addReadOnly(topspaceED);
@@ -751,11 +751,11 @@
 		valign = 2;
 		break;
 	default:
-		valign = 1;
+		valign = 0;
 		break;
 	}
 	if (pwidth.zero())
-		valign = 1;
+		valign = 0;
 	vAlignCB->setCurrentIndex(valign);
 
 	hAlignCB->setEnabled(true);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic