1 #ifndef _vvLinkPanel_CXX
2 #define _vvLinkPanel_CXX
3 #include "vvLinkPanel.h"
4 #include "clitkCommon.h"
8 #include "QTreePushButton.h"
10 //====================================================================
11 vvLinkPanel::vvLinkPanel(QWidget * parent):QWidget(parent)
18 linkTableWidget->resizeColumnsToContents();
19 linkTableWidget->verticalHeader()->hide();
20 linkTableWidget->horizontalHeader()->hide();
21 linkTableWidget->hideColumn(4);
22 linkTableWidget->hideColumn(5);
24 connect(image1ComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(UpdateComboBox2(int)));
25 connect(linkButton,SIGNAL(clicked()),this,SLOT(addLink()));
26 connect(linkAllButton,SIGNAL(clicked()),this,SLOT(linkAll()));
29 void vvLinkPanel::addImage(std::string name, std::string id)
31 imageNames.push_back(name);
32 image1Ids.push_back(id);
36 void vvLinkPanel::removeImage(int index)
38 std::string idRemoved = image1Ids[index];
39 std::vector<std::string>::iterator Nameiter = imageNames.begin();
40 std::vector<std::string>::iterator Iditer = image1Ids.begin();
41 for (int i = 0; i < index; i++)
46 imageNames.erase(Nameiter);
47 image1Ids.erase(Iditer);
49 for (int i = linkTableWidget->rowCount() - 1; i >= 0 ;i--)
51 if (linkTableWidget->item(i,4)->text().toStdString() == idRemoved ||
52 linkTableWidget->item(i,5)->text().toStdString() == idRemoved)
54 emit removeLink(linkTableWidget->item(i,4)->text(),linkTableWidget->item(i,5)->text());
55 linkTableWidget->removeRow(i);
56 UpdateComboBox2(image1ComboBox->currentIndex());
61 void vvLinkPanel::UpdateComboBox1()
63 image1ComboBox->clear();
64 for (unsigned int i = 0; i < imageNames.size();i++)
66 image1ComboBox->addItem(imageNames[i].c_str());
70 void vvLinkPanel::UpdateComboBox2(int index)
72 image2ComboBox->clear();
74 if (imageNames.size() > 1 && index >= 0)
76 for (unsigned int i = 0; i < imageNames.size();i++)
80 bool AlreadyLinked = false;
81 for (int row = 0; row < linkTableWidget->rowCount();row++)
83 if ((linkTableWidget->item(row,1)->text().toStdString() == imageNames[index] &&
84 linkTableWidget->item(row,3)->text().toStdString() == imageNames[i]) ||
85 (linkTableWidget->item(row,3)->text().toStdString() == imageNames[index] &&
86 linkTableWidget->item(row,1)->text().toStdString() == imageNames[i]))
94 image2ComboBox->addItem(imageNames[i].c_str());
95 image2Ids.push_back(image1Ids[i]);
100 if (image2ComboBox->count() == 0)
101 linkButton->setEnabled(0);
103 linkButton->setEnabled(1);
106 void vvLinkPanel::linkAll()
108 //First remove all links
109 while (linkTableWidget->rowCount())
111 //Now create all possible links
112 int count=image2ComboBox->count();
113 for (int j=0;j<count;j++)
115 image1ComboBox->setCurrentIndex(j);
116 image2ComboBox->setCurrentIndex(0);
117 for (int i=0;i< count-j;i++)
122 void vvLinkPanel::addLink()
124 if (!image1ComboBox->currentText().isEmpty()
125 && !image2ComboBox->currentText().isEmpty())
127 int row = linkTableWidget->rowCount();
128 linkTableWidget->insertRow(row);
130 linkTableWidget->setItem(row,1,new QTableWidgetItem(image1ComboBox->currentText()));
131 linkTableWidget->setItem(row,2,new QTableWidgetItem("&"));
132 linkTableWidget->setItem(row,3,new QTableWidgetItem(image2ComboBox->currentText()));
133 linkTableWidget->setItem(row,4,new QTableWidgetItem(image1Ids[image1ComboBox->currentIndex()].c_str()));
134 linkTableWidget->setItem(row,5,new QTableWidgetItem(image2Ids[image2ComboBox->currentIndex()].c_str()));
135 QTreePushButton* cButton = new QTreePushButton;
136 cButton->setIndex(linkTableWidget->rowCount());
137 cButton->setColumn(0);
138 cButton->setIcon(QIcon(QString::fromUtf8(":/new/prefix1/icons/exit.png")));
139 connect(cButton,SIGNAL(clickedInto(int, int)),
140 this,SLOT(removeLink(int, int)));
141 cButton->setToolTip(tr("remove link"));
142 linkTableWidget->setCellWidget(row,0,cButton);
144 linkTableWidget->resizeColumnToContents(0);
145 linkTableWidget->resizeColumnToContents(1);
146 linkTableWidget->resizeColumnToContents(2);
147 linkTableWidget->resizeColumnToContents(3);
148 linkTableWidget->setRowHeight(row,17);
150 emit addLink(image1Ids[image1ComboBox->currentIndex()].c_str(),
151 image2Ids[image2ComboBox->currentIndex()].c_str());
152 UpdateComboBox2(image1ComboBox->currentIndex());
157 void vvLinkPanel::removeLink(int row, int column)
159 emit removeLink(linkTableWidget->item(row-1,4)->text(),linkTableWidget->item(row-1,5)->text());
160 linkTableWidget->removeRow(row-1);
161 UpdateComboBox2(image1ComboBox->currentIndex());
164 #endif /* end #define _vvLinkPanel_CXX */