]> git.sven.stormbind.net Git - sven/vym.git/blob - src/editxlinkdialog.cpp
Replace Pierre as the maintainer
[sven/vym.git] / src / editxlinkdialog.cpp
1 #include "editxlinkdialog.h"
2
3 #include <QColorDialog>
4 #include <typeinfo>
5
6 #include "branchitem.h"
7 #include "vymmodel.h"
8 #include "xlinkobj.h"
9
10 EditXLinkDialog::EditXLinkDialog(QWidget *parent) : QDialog(parent)
11 {
12     ui.setupUi(this);
13
14     delink = false;
15     link = NULL;
16
17     ui.lineStyleCombo->addItem(QIcon("://linestyle-solid.png"), "Solid line",
18                                0);
19     ui.lineStyleCombo->addItem(QIcon("://linestyle-dash.png"), "Dash line", 1);
20     ui.lineStyleCombo->addItem(QIcon("://linestyle-dot.png"), "Dot line", 2);
21     ui.lineStyleCombo->addItem(QIcon("://linestyle-dashdot.png"),
22                                "Dash Dot line", 3);
23     ui.lineStyleCombo->addItem(QIcon("://linestyle-dashdotdot.png"),
24                                "Dash Dot Dot line", 4);
25     connect(ui.widthBox, SIGNAL(valueChanged(int)), this,
26             SLOT(widthChanged(int)));
27     connect(ui.colorButton, SIGNAL(clicked()), this,
28             SLOT(colorButtonPressed()));
29     connect(ui.lineStyleCombo, SIGNAL(currentIndexChanged(int)), this,
30             SLOT(lineStyleChanged(int)));
31     connect(ui.checkBoxArrowBegin, SIGNAL(stateChanged(int)), this,
32             SLOT(beginStyleChanged(int)));
33     connect(ui.checkBoxArrowEnd, SIGNAL(stateChanged(int)), this,
34             SLOT(endStyleChanged(int)));
35     // FIXME-4 connect ( ui.setColorHeadingButton, SIGNAL (clicked( )), this,
36     // SLOT (setColorHeadingButtonPressed()));
37     ui.setColorHeadingButton->hide();
38 }
39
40 void EditXLinkDialog::widthChanged(int w)
41 {
42     link->getModel()->setXLinkWidth(w);
43 }
44
45 void EditXLinkDialog::setLink(Link *l)
46 {
47     link = l;
48     QPen pen = link->getPen();
49     colorChanged(pen.color());
50     ui.widthBox->setValue(pen.width());
51     switch (pen.style()) {
52     case Qt::DashLine:
53         ui.lineStyleCombo->setCurrentIndex(1);
54         break;
55     case Qt::DotLine:
56         ui.lineStyleCombo->setCurrentIndex(2);
57         break;
58     case Qt::DashDotLine:
59         ui.lineStyleCombo->setCurrentIndex(3);
60         break;
61     case Qt::DashDotDotLine:
62         ui.lineStyleCombo->setCurrentIndex(4);
63         break;
64     default:
65         ui.lineStyleCombo->setCurrentIndex(0);
66     }
67     if (link->getXLinkObj()->getStyleEnd())
68         ui.checkBoxArrowEnd->setChecked(true);
69     else
70         ui.checkBoxArrowEnd->setChecked(false);
71     if (link->getXLinkObj()->getStyleBegin())
72         ui.checkBoxArrowBegin->setChecked(true);
73     else
74         ui.checkBoxArrowBegin->setChecked(false);
75 }
76
77 void EditXLinkDialog::colorButtonPressed()
78 {
79     if (link) {
80         QPen pen = link->getPen();
81         QColor col = QColorDialog::getColor(pen.color(), this);
82         if (!col.isValid())
83             return;
84         link->getModel()->setXLinkColor(col.name());
85     }
86 }
87
88 void EditXLinkDialog::colorChanged(QColor c)
89 {
90
91     QPixmap pix(16, 16);
92     pix.fill(c);
93     ui.colorButton->setIcon(pix);
94 }
95
96 void EditXLinkDialog::setColorHeadingButtonPressed() // FIXME-4 not implemented
97                                                      // yet
98 {
99     if (link) {
100     }
101 }
102
103 void EditXLinkDialog::lineStyleChanged(int i)
104 {
105     if (link) {
106         QString style;
107         switch (i) {
108         case 0:
109             style = "Qt::SolidLine";
110             break;
111         case 1:
112             style = "Qt::DashLine";
113             break;
114         case 2:
115             style = "Qt::DotLine";
116             break;
117         case 3:
118             style = "Qt::DashDotLine";
119             break;
120         case 4:
121             style = "Qt::DashDotDotLine";
122             break;
123         default:
124             style = "Qt::NoPen";
125         }
126         link->getModel()->setXLinkStyle(style);
127     }
128 }
129
130 void EditXLinkDialog::beginStyleChanged(int state)
131 {
132     if (link) {
133         if (state)
134             link->getModel()->setXLinkStyleBegin("HeadFull");
135         else
136             link->getModel()->setXLinkStyleBegin("None");
137     }
138 }
139
140 void EditXLinkDialog::endStyleChanged(int state)
141 {
142     if (link) {
143         if (state)
144             link->getModel()->setXLinkStyleEnd("HeadFull");
145         else
146             link->getModel()->setXLinkStyleEnd("None");
147     }
148 }
149
150 bool EditXLinkDialog::useSettingsGlobal()
151 {
152     return ui.useSettings->isChecked();
153 }