Advertisement
Guest User

as

a guest
Dec 9th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.96 KB | None | 0 0
  1.  
  2. void CircuitsView::manageButton()
  3. {
  4.     int tlIndex = m_transmissionLines->currentIndex();
  5.     TransmissionLine *tl = g_project->getTransmissionLine(tlIndex);
  6.     if(!tl)
  7.         return;
  8.  
  9.     QDialog manageWindow;
  10.     QGridLayout *layout = new QGridLayout;
  11.     TableWidget *listWidget = new TableWidget(tl->getCircuits().size(), 1);
  12.     QPushButton *addButton = new QPushButton("Add");
  13.     QPushButton *copyButton = new QPushButton("Copy");
  14.     QPushButton *removeButton = new QPushButton("Remove");
  15.  
  16.     manageWindow.setLayout(layout);
  17.  
  18.     listWidget->setDragEnabled(true);
  19.     listWidget->setDisplayMenu(false);
  20.     listWidget->horizontalHeader()->hide();
  21.     listWidget->horizontalHeader()->resizeSections(QHeaderView::Stretch);
  22.     listWidget->setSelectionMode(listWidget->SingleSelection);
  23.     listWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
  24.  
  25.     layout->addWidget(listWidget, 0, 0, 1 ,3);
  26.     layout->addWidget(addButton, 1, 0);
  27.     layout->addWidget(copyButton, 1, 1);
  28.     layout->addWidget(removeButton, 1, 2);
  29.  
  30.     connect(listWidget, &TableWidget::sectionLogicalMoved, [this, listWidget, tl](int fromIndex, int toIndex) {
  31.         tl->chanceCircuitIndex(fromIndex, toIndex);
  32.     });
  33.  
  34.     connect(addButton, &QPushButton::clicked, [this, listWidget]() {
  35.         int tlIndex = m_transmissionLines->currentIndex();
  36.         TransmissionLine *tl = g_project->getTransmissionLine(tlIndex);
  37.         if(!tl)
  38.             return;
  39.  
  40.         int circuitIndex = listWidget->rowCount();
  41.         tl->addCircuit(circuitIndex, false);
  42.  
  43.         updateFromProject(tlIndex, circuitIndex+1);
  44.         nameUpdate();
  45.  
  46.         listWidget->setRowCount(tl->getCircuits().size());
  47.         listWidget->setItem(circuitIndex + 1, 0, new QTableWidgetItem(tl->getCircuit(circuitIndex)->getName()));
  48.     });
  49.  
  50.     connect(copyButton, &QPushButton::clicked, [this, listWidget]() {
  51.         int circuitIndex = 0;
  52.         if(listWidget->selectedItems().size() == 0) {
  53.             QMessageBox::critical(nullptr, tr("Error"), tr("Please select a item to copy"));
  54.             return;
  55.         } else
  56.             circuitIndex = listWidget->selectedItems().at(0)->row();
  57.  
  58.         int tlIndex = m_transmissionLines->currentIndex();
  59.         TransmissionLine *tl = g_project->getTransmissionLine(tlIndex);
  60.         if(!tl)
  61.             return;
  62.  
  63.         tl->addCircuit(circuitIndex, true);
  64.  
  65.         updateFromProject(tlIndex, circuitIndex+1);
  66.         nameUpdate();
  67.  
  68.         listWidget->setRowCount(tl->getCircuits().size());
  69.         listWidget->setItem(circuitIndex, 0, new QTableWidgetItem(tl->getCircuit(circuitIndex +1)->getName()));
  70.     });
  71.  
  72.     connect(removeButton, &QPushButton::clicked, [this, listWidget]() {
  73.         QMessageBox::StandardButton reply;
  74.         reply = QMessageBox::question(this, "", tr("Are you sure do you want to remove this circuit?"),
  75.                                       QMessageBox::Yes|QMessageBox::No);
  76.         if(reply == QMessageBox::No)
  77.             return;
  78.  
  79.         int circuitIndex = 0;
  80.         if(listWidget->selectedItems().size() == 0) {
  81.             QMessageBox::critical(nullptr, tr("Error"), tr("Please select a item to remove"));
  82.             return;
  83.         } else
  84.             circuitIndex = listWidget->selectedItems().at(0)->row();
  85.  
  86.         int tlIndex = m_transmissionLines->currentIndex();
  87.         TransmissionLine *tl = g_project->getTransmissionLine(tlIndex);
  88.         if(!tl)
  89.             return;
  90.  
  91.         QString error;
  92.         if(!tl->removeCircuit(circuitIndex, error))
  93.             QMessageBox::critical(nullptr, tr("Error"), error);
  94.  
  95.         int count = m_circuits->count();
  96.         if(circuitIndex >= count-1)
  97.             --circuitIndex;
  98.  
  99.         updateFromProject(tlIndex, circuitIndex);
  100.         listWidget->removeRow(circuitIndex);
  101.     });
  102.  
  103.     for(int i = 0; i < tl->getCircuits().size(); i++) {
  104.         listWidget->setItem(i, 0, new QTableWidgetItem(tl->getCircuit(i)->getName()));
  105.     }
  106.  
  107.     manageWindow.exec();
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement