]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt2/QMinipage.C
better selection and scrolling behaviour
[lyx.git] / src / frontends / qt2 / QMinipage.C
index fabb86d826b66b6e305adc43c6247f9eec3f139e..95b996ea0a5823009416399c98179b7e6991e569 100644 (file)
@@ -1,9 +1,11 @@
 /**
  * \file QMinipage.C
- * Copyright 2001 the LyX Team
- * Read the file COPYING
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- * \author John Levon <moz@compsoc.man.ac.uk>
+ * \author John Levon
+ *
+ * Full author contact details are available in file CREDITS
  */
 
 #include <config.h>
 #pragma implementation
 #endif
 
-#include <qpushbutton.h>
-#include <qradiobutton.h>
-#include <qlineedit.h>
-#include "lengthcombo.h"
-#include "QMinipageDialog.h"
-#include "QMinipage.h"
-#include "Qt2BC.h"
+#include "debug.h"
 #include "gettext.h"
 #include "support/lstrings.h"
-#include "QtLyXView.h"
+#include "LyXView.h"
 #include "ControlMinipage.h"
 
+#include "QMinipage.h"
+#include "QMinipageDialog.h"
+#include "Qt2BC.h"
+#include "lengthcombo.h"
+
+#include <qpushbutton.h>
+#include <qcombobox.h>
+#include <qlineedit.h>
+
 typedef Qt2CB<ControlMinipage, Qt2DB<QMinipageDialog> > base_class;
 
-QMinipage::QMinipage(ControlMinipage & c)
-       : base_class(c, _("Minipage"))
+
+QMinipage::QMinipage()
+       : base_class(_("Minipage"))
 {
 }
 
@@ -45,57 +49,69 @@ void QMinipage::build_dialog()
 
        bc().addReadOnly(dialog_->widthED);
        bc().addReadOnly(dialog_->unitsLC);
-       bc().addReadOnly(dialog_->topRB); 
-       bc().addReadOnly(dialog_->bottomRB); 
-       bc().addReadOnly(dialog_->middleRB); 
+       bc().addReadOnly(dialog_->valignCO);
 }
 
 
 void QMinipage::apply()
 {
-       double value = strToDbl(dialog_->widthED->text().latin1());
+       double const value = strToDbl(dialog_->widthED->text().latin1());
        LyXLength::UNIT unit = dialog_->unitsLC->currentLengthItem();
        if (string(dialog_->widthED->text().latin1()).empty())
                unit = LyXLength::UNIT_NONE;
 
-       LyXLength len(value, unit);
-       controller().params().width = len.asString();
+       MinipageParams & params = controller().params();
 
-       if (dialog_->topRB->isChecked())
-               controller().params().pos = InsetMinipage::top;
-       else if (dialog_->middleRB->isChecked())
-               controller().params().pos = InsetMinipage::center;
-       else
-               controller().params().pos = InsetMinipage::bottom;
+       params.pageWidth = LyXLength(value, unit);
+
+       switch (dialog_->valignCO->currentItem()) {
+       case 0:
+               params.pos = InsetMinipage::top;
+               break;
+       case 1:
+               params.pos = InsetMinipage::center;
+               break;
+       case 2:
+               params.pos = InsetMinipage::bottom;
+               break;
+       }
 }
 
+
 namespace {
-       string const numtostr(double val) {
-               string a(tostr(val));
-               if (a == "0")
-                       a = "";
-               return a;
-       }
+
+string const numtostr(double val)
+{
+       string a(tostr(val));
+       if (a == "0")
+               a.erase();
+       return a;
+}
+
 } // namespace anon
+
+
 void QMinipage::update_contents()
 {
-       LyXLength len(controller().params().width.c_str());
+       MinipageParams const & params = controller().params();
+
+       LyXLength len(params.pageWidth);
        dialog_->widthED->setText(numtostr(len.value()).c_str());
        dialog_->unitsLC->setCurrentItem(len.unit());
-       QRadioButton * button = dialog_->topRB;
-       switch (controller().params().pos) {
-               case InsetMinipage::center:
-                       button = dialog_->middleRB; 
-                       break;
-               case InsetMinipage::bottom:
-                       button = dialog_->bottomRB;
-                       break;
+       lyxerr << "width " << numtostr(len.value())
+              << " units " << len.unit() << std::endl;
+
+       int item = 0;
+       switch (params.pos) {
+       case InsetMinipage::top:
+               item = 0;
+               break;
+       case InsetMinipage::center:
+               item = 1;
+               break;
+       case InsetMinipage::bottom:
+               item = 2;
+               break;
        }
-       button->setChecked(true);
+       dialog_->valignCO->setCurrentItem(item);
 }