]> git.lyx.org Git - lyx.git/blob - src/frontends/qt2/QWrap.C
Wrap most of the frontend code up inside namespace lyx::frontend.
[lyx.git] / src / frontends / qt2 / QWrap.C
1 /**
2  * \file QWrap.C
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author Jürgen Spitzmüller
7  *
8  * Full author contact details are available in file CREDITS.
9  */
10
11 #include <config.h>
12
13 #include "debug.h"
14 #include "qt_helpers.h"
15 #include "support/tostr.h"
16 #include "support/lstrings.h"
17 #include "ControlWrap.h"
18
19 #include "QWrap.h"
20 #include "QWrapDialog.h"
21 #include "Qt2BC.h"
22 #include "lengthcombo.h"
23
24 #include "insets/insetwrap.h"
25
26 #include <qpushbutton.h>
27 #include <qlineedit.h>
28
29 using lyx::support::strToDbl;
30
31 using std::string;
32
33 namespace lyx {
34 namespace frontend {
35
36 typedef QController<ControlWrap, QView<QWrapDialog> > base_class;
37
38 QWrap::QWrap(Dialog & parent)
39         : base_class(parent, _("LyX: Text Wrap Settings"))
40 {
41 }
42
43
44 void QWrap::build_dialog()
45 {
46         dialog_.reset(new QWrapDialog(this));
47
48         bcview().setRestore(dialog_->restorePB);
49         bcview().setOK(dialog_->okPB);
50         bcview().setApply(dialog_->applyPB);
51         bcview().setCancel(dialog_->closePB);
52
53         bcview().addReadOnly(dialog_->widthED);
54         bcview().addReadOnly(dialog_->unitsLC);
55         bcview().addReadOnly(dialog_->valignCO);
56 }
57
58
59 void QWrap::apply()
60 {
61         double const value = strToDbl(fromqstr(dialog_->widthED->text()));
62         LyXLength::UNIT unit = dialog_->unitsLC->currentLengthItem();
63         if (dialog_->widthED->text().isEmpty())
64                 unit = LyXLength::UNIT_NONE;
65
66         InsetWrapParams & params = controller().params();
67
68         params.width = LyXLength(value, unit);
69
70         switch (dialog_->valignCO->currentItem()) {
71         case 0:
72                 params.placement.erase();
73                 break;
74         case 1:
75                 params.placement = "l";
76                 break;
77         case 2:
78                 params.placement = "r";
79                 break;
80         case 3:
81                 params.placement = "p";
82                 break;
83         }
84 }
85
86
87 namespace {
88
89 string const numtostr(double val) {
90         string a(tostr(val));
91         if (a == "0")
92                 a.erase();
93         return a;
94 }
95
96 } // namespace anon
97
98
99 void QWrap::update_contents()
100 {
101         InsetWrapParams & params = controller().params();
102
103         LyXLength len(params.width);
104         dialog_->widthED->setText(toqstr(numtostr(len.value())));
105         dialog_->unitsLC->setCurrentItem(len.unit());
106
107         int item = 0;
108         if (params.placement == "l")
109                 item = 1;
110         else if (params.placement == "r")
111                 item = 2;
112         else if (params.placement == "p")
113                 item = 3;
114
115         dialog_->valignCO->setCurrentItem(item);
116 }
117
118 } // namespace frontend
119 } // namespace lyx