29 #include "orderconnectionsdialog.h"
30 #include <QTreeWidget>
31 #include <QTreeWidgetItem>
33 #include <QVBoxLayout>
34 #include <QHBoxLayout>
35 #include <QSpacerItem>
36 #include <QPushButton>
41 OrderConnectionsDialog::OrderConnectionsDialog(
ARCSSheet* s, QWidget *parent) :
42 QDialog(parent),sheet(s)
44 QHBoxLayout* hl1 =
new QHBoxLayout();
45 QHBoxLayout* hl2 =
new QHBoxLayout();
46 QVBoxLayout* vl1 =
new QVBoxLayout();
47 QVBoxLayout* vl2 =
new QVBoxLayout();
53 connectionTable =
new QTreeWidget(
this);
54 connectionTable->setColumnCount(4);
55 QStringList headerNames ;
56 headerNames <<
"Source" <<
"Signal" <<
"Slot" <<
"Destination" ;
57 connectionTable->setHeaderLabels(headerNames);
58 connectionTable->setRootIsDecorated(
false);
59 connectionTable->setSelectionMode(QAbstractItemView::SingleSelection);
62 QStringList destinations;
66 sheet->getConnections(sources,sgnls,destinations,slts);
69 for (i=0; i< sources.count(); i++)
71 QStringList rowConnection;
72 rowConnection << sources[i] << sgnls[i] << destinations[i] << slts[i];
73 connectionTable->addTopLevelItem(
new QTreeWidgetItem(rowConnection));
76 connectionTable->resizeColumnToContents(i);
78 hl1->addWidget(connectionTable);
82 QPushButton* upButton =
new QPushButton(
"Move up",
this);
83 QPushButton* downButton =
new QPushButton(
"Move down",
this);
85 vl1->addWidget(upButton);
86 vl1->addWidget(downButton);
89 QPushButton* okButton =
new QPushButton(
"Ok",
this);
90 QPushButton* cancelButton =
new QPushButton(
"Cancel",
this);
93 hl2->addWidget(okButton);
94 hl2->addWidget(cancelButton);
96 connect(upButton,SIGNAL(clicked()),
this,SLOT(moveUp()));
97 connect(downButton,SIGNAL(clicked()),
this,SLOT(moveDown()));
98 connect(okButton,SIGNAL(clicked()),
this,SLOT(accept()));
99 connect(cancelButton,SIGNAL(clicked()),
this,SLOT(reject()));
102 void OrderConnectionsDialog::moveUp()
104 int pos = connectionTable->indexOfTopLevelItem(connectionTable->currentItem());
107 permutations.append(QPair<int,int>(pos,pos-1));
108 QTreeWidgetItem* qtwi = connectionTable->takeTopLevelItem(pos);
109 connectionTable->insertTopLevelItem(pos-1,qtwi);
110 connectionTable->setCurrentItem(qtwi);
114 void OrderConnectionsDialog::moveDown()
116 int pos = connectionTable->indexOfTopLevelItem(connectionTable->currentItem());
117 if (pos < connectionTable->topLevelItemCount() - 1)
119 permutations.append(QPair<int,int>(pos,pos+1));
120 QTreeWidgetItem* qtwi = connectionTable->takeTopLevelItem(pos);
121 connectionTable->insertTopLevelItem(pos+1,qtwi);
122 connectionTable->setCurrentItem(qtwi);
126 void OrderConnectionsDialog::accept()
128 for (
int i=0; i< permutations.count(); i++)
129 sheet->swapConnections(permutations[i].first,permutations[i].second);
Maintains connections between objects.