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