Пример #1
0
void VDirectoryTree::updateItemDirectChildren(QTreeWidgetItem *p_item)
{
    QPointer<VDirectory> parentDir;
    if (p_item) {
        parentDir = getVDirectory(p_item);
    } else {
        parentDir = m_notebook->getRootDir();
    }

    const QVector<VDirectory *> &dirs = parentDir->getSubDirs();

    QHash<VDirectory *, QTreeWidgetItem *> itemDirMap;
    int nrChild = p_item ? p_item->childCount() : topLevelItemCount();
    for (int i = 0; i < nrChild; ++i) {
        QTreeWidgetItem *item = p_item ? p_item->child(i) : topLevelItem(i);
        itemDirMap.insert(getVDirectory(item), item);
    }

    for (int i = 0; i < dirs.size(); ++i) {
        VDirectory *dir = dirs[i];
        QTreeWidgetItem *item = itemDirMap.value(dir, NULL);
        if (item) {
            if (p_item) {
                p_item->removeChild(item);
                p_item->insertChild(i, item);
            } else {
                int topIdx = indexOfTopLevelItem(item);
                takeTopLevelItem(topIdx);
                insertTopLevelItem(i, item);
            }

            itemDirMap.remove(dir);
        } else {
            // Insert a new item
            if (p_item) {
                item = new QTreeWidgetItem(p_item);
            } else {
                item = new QTreeWidgetItem(this);
            }

            fillTreeItem(item, dir);
            buildSubTree(item, 1);
        }

        expandSubTree(item);
    }

    // Delete items without corresponding VDirectory
    for (auto iter = itemDirMap.begin(); iter != itemDirMap.end(); ++iter) {
        QTreeWidgetItem *item = iter.value();
        if (p_item) {
            p_item->removeChild(item);
        } else {
            int topIdx = indexOfTopLevelItem(item);
            takeTopLevelItem(topIdx);
        }

        delete item;
    }
}
Пример #2
0
void SummaryTree::addTestCases()
{
    QTreeWidgetItem *curItem = currentItem();
    if (indexOfTopLevelItem(curItem) == -1)
        curItem = curItem->parent();
    int index = indexOfTopLevelItem(curItem);
    Task *curTask = curContest->getTask(index);
    AddTestCasesWizard *wizard = new AddTestCasesWizard(this);
    wizard->setSettings(settings, curTask->getTaskType() == Task::Traditional);
    if (wizard->exec() == QDialog::Accepted) {
        QList<QStringList> inputFiles = wizard->getMatchedInputFiles();
        QList<QStringList> outputFiles = wizard->getMatchedOutputFiles();
        for (int i = 0; i < inputFiles.size(); i ++) {
            addTestCase();
            QTreeWidgetItem *curItem = currentItem();
            QTreeWidgetItem *parentItem = curItem->parent();
            int taskIndex = indexOfTopLevelItem(parentItem);
            int testCaseIndex = parentItem->indexOfChild(curItem);
            Task *curTask = curContest->getTask(taskIndex);
            TestCase *curTestCase = curTask->getTestCase(testCaseIndex);
            curTestCase->setFullScore(wizard->getFullScore());
            curTestCase->setTimeLimit(wizard->getTimeLimit());
            curTestCase->setMemoryLimit(wizard->getMemoryLimit());
            for (int j = 0; j < inputFiles[i].size(); j ++)
                curTestCase->addSingleCase(inputFiles[i][j], outputFiles[i][j]);
            setCurrentItem(parentItem);
            setCurrentItem(curItem);
        }
    }
    delete wizard;
}
Пример #3
0
void QPythonParamList::contextMenuEvent(QContextMenuEvent* evt)
{
    QMenu menu(this);
    QAction* addObjItem = menu.addAction(tr("Add Parameter..."));
    QAction* editObjItem = menu.addAction(tr("Edit Parameter..."));
    QAction* delObjItem = menu.addAction(tr("Remove Parameter"));

    if (currentItem() == NULL)
        delObjItem->setEnabled(false);

    QAction* sel = menu.exec(evt->globalPos());
    if (sel == addObjItem) {
        QPythonParamDialog dlg(this);
        if (dlg.exec() == QDialog::Accepted)
            addParam(dlg.parameter());
    } else if (sel == editObjItem) {
        QPythonParamDialog dlg(this);
        dlg.init(fParams[indexOfTopLevelItem(currentItem())]);
        if (dlg.exec() == QDialog::Accepted) {
            plPythonParameter param = dlg.parameter();
            fParams[indexOfTopLevelItem(currentItem())] = param;
            QStringList list = makeParamItem(param);
            for (int i=0; i<list.size(); i++)
                currentItem()->setText(i, list[i]);
        }
    } else if (sel == delObjItem) {
        delParam(indexOfTopLevelItem(currentItem()));
    }
}
Пример #4
0
int ScTreeWidget::currentIndex()
{
    int index = -1;
    QTreeWidgetItem* item = currentItem();
    if (item->parent() == 0)
        index = indexOfTopLevelItem(item);
    else
        index = indexOfTopLevelItem(item->parent());
    return index;
}
Пример #5
0
void MenuBarTree::insertMenu()
{
	QTreeWidgetItem* item = currentItem();
	QString title = tr("New Menu");
	MenuBarSubmenuItem * insItem = new MenuBarSubmenuItem(0, title);
	if (!item)
		addTopLevelItem(insItem);
	else if (indexOfTopLevelItem(item) >= 0)
		insertTopLevelItem(indexOfTopLevelItem(item), insItem);
	else
		item->parent()->insertChild(item->parent()->indexOfChild(item), insItem);
}
Пример #6
0
void MenuBarTree::removeItem()
{
	QTreeWidgetItem* item = currentItem();
	if (!item) return;

	if (indexOfTopLevelItem(item) >= 0)
		takeTopLevelItem(indexOfTopLevelItem(item));
	else
		item->parent()->removeChild(item);

	delete item;
}
Пример #7
0
void QvvTreeWidget::findNext( QString str, int full_match )
{
    QTreeWidgetItem *lwi = currentItem();

    int i;
    int start;

    int x = topLevelItemCount();

    i = indexOfTopLevelItem( lwi );
    start = i;

    if( x <= 1 or i < 0 ) return; // not found or empty list

    while(4)
    {
        i++;
        if( i >= x ) i = 0;
        if( i == start ) break;
        lwi = topLevelItem( i );
        if(   full_match && lwi->text( 1 ).toUpper() == str.toUpper() ) break;
        if( ! full_match && lwi->text( 1 ).toUpper().indexOf( str.toUpper() ) == 0 ) break;
        lwi = NULL;
    }
    if( lwi )
    {
        setCurrentItem( lwi );
        scrollToItem( lwi );
    }
}
Пример #8
0
void SummaryTree::contextMenuEvent(QContextMenuEvent *event)
{
    QMenu *contextMenu = new QMenu(this);
    
    QTreeWidgetItem *curItem = currentItem();
    if (! curItem) {
        contextMenu->addAction(addTaskAction);
        contextMenu->exec(QCursor::pos());
        delete contextMenu;
        return;
    }
    
    int index = indexOfTopLevelItem(curItem);
    if (index != -1) {
        contextMenu->addAction(addTaskAction);
        contextMenu->addAction(deleteTaskAction);
        contextMenu->addSeparator();
        contextMenu->addAction(addTestCaseAction);
        contextMenu->addAction(addTestCasesAction);
        contextMenu->exec(QCursor::pos());
        delete contextMenu;
    } else {
        contextMenu->addAction(addTaskAction);
        contextMenu->addAction(deleteTaskAction);
        contextMenu->addSeparator();
        contextMenu->addAction(addTestCaseAction);
        contextMenu->addAction(addTestCasesAction);
        contextMenu->addAction(deleteTestCaseAction);
        contextMenu->exec(QCursor::pos());
        delete contextMenu;
    }
}
Пример #9
0
void QKeyList::contextMenuEvent(QContextMenuEvent* evt)
{
    QMenu menu(this);
    QAction* addObjItem = menu.addAction(tr("Add Object"));
    QAction* delObjItem = menu.addAction(tr("Remove Object"));

    if (currentItem() == NULL)
        delObjItem->setEnabled(false);

    QAction* sel = menu.exec(evt->globalPos());
    if (sel == addObjItem) {
        QFindKeyDialog dlg(this);
        if (fKeys.size() > 0)
            dlg.init(PrpShopMain::ResManager(), fKeys.back()->getLocation(),
                     fKeys.back()->getType());
        else
            dlg.init(PrpShopMain::ResManager(), fContainer->getLocation());
        if (dlg.exec() == QDialog::Accepted) {
            addKey(dlg.selection());
            emit itemAdded(dlg.selection());
        }
    } else if (sel == delObjItem) {
        int idx = indexOfTopLevelItem(currentItem());
        delItem(idx);
        emit itemRemoved(idx);
    }
}
Пример #10
0
void PlayerListWidget::removePlayer(int playerId)
{
	QTreeWidgetItem *player = players.value(playerId, 0);
	if (!player)
		return;
	players.remove(playerId);
	delete takeTopLevelItem(indexOfTopLevelItem(player));
}
Пример #11
0
void SummaryTree::itemChanged(QTreeWidgetItem *item)
{
    int index = indexOfTopLevelItem(item);
    if (index != -1) {
        Task *curTask = curContest->getTask(index);
        curTask->setProblemTitle(item->text(0));
    }
}
Пример #12
0
CSProperties* QCSTreeWidget::GetCurrentProperty()
{
	QTreeWidgetItem* curr=currentItem();
	if (curr==NULL) return NULL;
	if (curr->type()==PRIMTYPE) curr=curr->parent();
	if (curr==NULL) return NULL;
	return clCS->GetProperty(indexOfTopLevelItem(curr));
}
Пример #13
0
void SummaryTree::addTestCase()
{
    QTreeWidgetItem *curItem = currentItem();
    if (indexOfTopLevelItem(curItem) == -1)
        curItem = curItem->parent();
    int index = indexOfTopLevelItem(curItem);
    Task *curTask = curContest->getTask(index);
    TestCase *newTestCase = new TestCase;
    newTestCase->setFullScore(settings->getDefaultFullScore());
    newTestCase->setTimeLimit(settings->getDefaultTimeLimit());
    newTestCase->setMemoryLimit(settings->getDefaultMemoryLimit());
    curTask->addTestCase(newTestCase);
    QTreeWidgetItem *newItem = new QTreeWidgetItem(curItem);
    newItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
    newItem->setText(0, tr("Test Case #%1").arg(curItem->childCount()));
    setCurrentItem(newItem);
}
Пример #14
0
void ObjectInspectorTable::mousePressEvent(QMouseEvent *event) {
    QTreeWidget::mousePressEvent(event);

    if ( selectedItems().count() == 1 && m_objectMap[selectedItems().at(0)] == 0 ) { // seul un calque est sélectionné, on selectionne les sous élements sous le calque
        QTreeWidgetItem *selectedLayout = selectedItems().at(0);
        for (int i=0; i<selectedLayout->childCount(); ++i) {
            selectedLayout->child(i)->setSelected(true);
        }
        // on vient de sélectionner un layout donc on peut agir dessus
        emit currentLayoutIsUppable( indexOfTopLevelItem(selectedLayout) > 0 );
        emit currentLayoutIsDownable( indexOfTopLevelItem(selectedLayout) < topLevelItemCount() - 1 );
    } else {
        emit currentLayoutIsUppable(false);
        emit currentLayoutIsDownable(false);
    }

    updateMapSelection();
}
Пример #15
0
int QcTreeWidget::indexOfItem( const QcTreeWidget::ItemPtr & item )
{
  if( !item ) return -1;
  QTreeWidgetItem *parent = item->parent();
  if( parent )
    return parent->indexOfChild( item );
  else
    return indexOfTopLevelItem( item );
}
Пример #16
0
void ScTreeWidget::handleMousePress(QTreeWidgetItem *item)
{
    if (item == 0)
        return;
    if (item->parent() == 0)
    {
        if (item->isDisabled())
        {
            setItemExpanded(item, false);
            return;
        }
        int wide = 0;
        int tops = topLevelItemCount();
        if (m_toolbox_mode)
        {
            for (int t = 0; t < tops; t++)
            {
                setItemExpanded(topLevelItem(t), false);
            }
            setCurrentItem(item);
            setItemExpanded(item, true);
            if (item->childCount() != 0)
            {
                QTreeWidgetItem *child = item->child(0);
                if (child != 0)
                    wide = itemWidget(child, 0)->minimumSizeHint().width()+5;
            }
            if (wide != 0)
                setColumnWidth(0, wide);
            else
                resizeColumnToContents(0);
        }
        else
        {
            setItemExpanded(item, !isItemExpanded(item));
            for (int t = 0; t < tops; t++)
            {
                QTreeWidgetItem *top = topLevelItem(t);
                if (isItemExpanded(top))
                {
                    if (top->childCount() != 0)
                    {
                        QTreeWidgetItem *child = top->child(0);
                        if (child != 0)
                            wide = qMax(wide, itemWidget(child, 0)->minimumSizeHint().width()+5);
                    }
                }
            }
        }
        if (wide != 0)
            setColumnWidth(0, wide);
        else
            resizeColumnToContents(0);
        emit currentChanged2(indexOfTopLevelItem(item));
    }
}
Пример #17
0
QList<QTreeWidgetItem*> TrackerList::getSelectedTrackerItems() const {
  const QList<QTreeWidgetItem*> selected_items = selectedItems();
  QList<QTreeWidgetItem*> selected_trackers;
  foreach (QTreeWidgetItem *item, selected_items) {
    if (indexOfTopLevelItem(item) >= NB_STICKY_ITEM) { // Ignore STICKY ITEMS
      selected_trackers << item;
    }
  }
  return selected_trackers;
}
Пример #18
0
void SummaryTree::deleteTask()
{
    if (QMessageBox::warning(this, tr("Lemon"), tr("Are you sure to delete this task?"),
                             QMessageBox::Yes, QMessageBox::Cancel) == QMessageBox::Cancel)
        return;
    QTreeWidgetItem *curItem = currentItem();
    if (indexOfTopLevelItem(curItem) == -1)
        curItem = curItem->parent();
    int index = indexOfTopLevelItem(curItem);
    if (index + 1 < topLevelItemCount())
        setCurrentItem(topLevelItem(index + 1));
    else
        if (index - 1 >= 0)
            setCurrentItem(topLevelItem(index - 1));
        else
            setCurrentItem(0);
    delete curItem;
    curContest->deleteTask(index);
}
Пример #19
0
void GomVodTreeView::expandVod(QTreeWidgetItem * item)
{
    openPersistentEditor(item);

    int index = indexOfTopLevelItem(item);
    topLevelItems_.at(index)->fetchChildren();

    for(int i(0); i < item->childCount(); ++ i)
        openPersistentEditor(item->child(i));
}
Пример #20
0
void TupItemManager::removeCurrentFolder()
{
    if (m_currentFolder) {
        int index = indexOfTopLevelItem(m_currentFolder) - 1;

        delete m_currentFolder;

        m_currentFolder = topLevelItem (index);
        setCurrentItem(m_currentFolder);
    }
}
Пример #21
0
void SummaryTree::deleteTestCase()
{
    QTreeWidgetItem *curItem = currentItem();
    QTreeWidgetItem *parentItem = curItem->parent();
    int taskIndex = indexOfTopLevelItem(parentItem);
    int testCaseIndex = parentItem->indexOfChild(curItem);
    Task *curTask = curContest->getTask(taskIndex);
    delete curItem;
    curTask->deleteTestCase(testCaseIndex);
    for (int i = 0; i < parentItem->childCount(); i ++)
        parentItem->child(i)->setText(0, tr("Test Case #%1").arg(i + 1));
}
void KGraphEditorElementTreeWidget::slotRemoveAttribute()
{
  kDebug() << "Remove Attribute";
  if (m_item == 0) // should not happen
  {
    kError() << "null item ; should not happen" << endl;
    return;
  }
  emit removeAttribute(m_item->text(0));
  delete takeTopLevelItem (indexOfTopLevelItem(m_item));
  m_item = 0;
}
Пример #23
0
void  widgets::erase_record_from_the_tree(
        async::key_type const&  key,
        async::cached_resource_info const&  info
        )
{
    TMPROF_BLOCK();

    QTreeWidgetItem*  data_type_node = nullptr;
    {
        auto const  items = findItems(QString(key.get_data_type_name().c_str()), Qt::MatchFlag::MatchExactly, 0);
        if (items.empty())
            return;
        INVARIANT(items.size() == 1);
        data_type_node = items.front();
    }
    QTreeWidgetItem*  uid_node = nullptr;
    {
        std::string const  uid = get_tree_resource_uid(key);
        for (int i = 0, n = data_type_node->childCount(); i != n; ++i)
        {
            auto const  item = data_type_node->child(i);
            std::string const  item_name = qtgl::to_string(item->text(0));
            if (item_name == uid)
            {
                uid_node = item;
                break;
            }
        }
    }
    if (uid_node != nullptr)
    {
        if (qtgl::to_string(uid_node->text(0)) != key.get_unique_id())
        {
            std::string const  item_refs_name = qtgl::to_string(uid_node->text(1));
            int const  old_num_refs = std::atoi(item_refs_name.c_str());
            if (old_num_refs - info.get_ref_count() > 0)
                uid_node->setText(1, QString(std::to_string(old_num_refs - info.get_ref_count()).c_str()));
            else
                delete data_type_node->takeChild(data_type_node->indexOfChild(uid_node));
        }
        else
            delete data_type_node->takeChild(data_type_node->indexOfChild(uid_node));
    }
    if (data_type_node->childCount() == 0)
        delete takeTopLevelItem(indexOfTopLevelItem(data_type_node));
    else
    {
        std::string const  item_refs_name = qtgl::to_string(data_type_node->text(1));
        int const  old_num_refs = std::atoi(item_refs_name.c_str());
        data_type_node->setText(1, QString(std::to_string(old_num_refs - info.get_ref_count()).c_str()));
    }
}
Пример #24
0
void ObjectInspectorTable::dropEvent(QDropEvent *event) {
    if ( event->source() == this ) {

        QTreeWidgetItem *target = itemAt(event->pos());

        if ( target ) {
            if ( m_objectMap[target] ) { // on est pas sur un layout !
                target = target->parent();
            }

            foreach (QTreeWidgetItem *it, selectedItems()) {

                if ( m_objectMap[it] ) { // on est pas sur un layout !

                    // re retrouve le layout source
                    QTreeWidgetItem *source = it;
                    if ( m_objectMap[source] ) { // on est pas sur un layout !
                        source = source->parent();
                    }

                    // source != target ?
                    if (source != target) {
                        source->removeChild(it);
                        target->addChild(it);
                        m_objectMap[it]->setZValue(-indexOfTopLevelItem(target) - 1);
                        Log::d("ObjectInspectorTable") << "dropEvent, zIndex = " << -indexOfTopLevelItem(target) - 1;
                        m_objectMap[it]->setVisible( target->checkState(0) == Qt::Checked );
                        target->setExpanded(true);
                    } else {
                        Log::w("ObjectInspectorTable") << "drop event, source == target";
                    }
                }
            }

            Log::d("ObjectInspectorTable") << "drop event, target = " << target->data(0, Qt::DisplayRole).toString();
        }

        event->accept();
    } else { // mauvais format mine
Пример #25
0
void ObjectInspectorTable::addRow(GraphicsObject *object, int layoutNumber) {

    QTreeWidgetItem *current_item = currentItem();

    // si rien n'est sélectionné, on selectionne au moins un calque (le premier qu'on trouve...)
    if ( ! current_item ) {
        m_objectMap.key(0)->setSelected(true);
        current_item = m_objectMap.key(0);
    }

    QTreeWidgetItem *parent;  // sous quel parent on va placer cet item
    if ( layoutNumber != 0 ) { // numéro de layout spécifié
        parent = topLevelItem(-layoutNumber-1);
    } else { // la numéro de layout n'est pas renseigné
        if ( ! m_objectMap[current_item] ) { // on est sur un layout, on se placera dessous
            parent = current_item;
        } else {  // on est sur un item, on se placera au même niveau
            parent = current_item->parent();
        }
    }

    QStringList itemStringList;
    itemStringList << object->scriptingName() << object->description();
    QTreeWidgetItem *item = new QTreeWidgetItem(itemStringList);
    item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDragEnabled);

    item->setIcon(1, object->pixmap());


    parent->addChild(item);

    Log::d("ObjectInspectorTable") << "addRow, zIndex = " << -indexOfTopLevelItem(parent) - 1;

    object->setZValue(-indexOfTopLevelItem(parent) - 1);
    object->setVisible( parent->checkState(0) == Qt::Checked );

    parent->setExpanded(true);
    m_objectMap[item] = object;
}
Пример #26
0
void ExitsTreeWidget::keyPressEvent ( QKeyEvent * event )
{
    if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter)
    {
        closePersistentEditor( currentItem(), 1 );
        closePersistentEditor( currentItem(), 2 );
    }
    if (event->key() == Qt::Key_Delete && hasFocus() )
    {
        QList<QTreeWidgetItem *> selection = selectedItems();
        foreach(QTreeWidgetItem *item, selection)
        {
            takeTopLevelItem(indexOfTopLevelItem(item));
        }
Пример #27
0
/**
 * removes and deletes an item from MTreeWidget
 * shouldn't be used on its own, only called from destroy() by a core object
 * \param item from a list which we want to remove
 * \return object linked to an item being removed
 */
void MTreeWidget::remove(MTreeWidgetItem* item)
{
    // no item given to remove, we take selected
    // atm this shouldn't happen, because we always call this with a param
    if (!item)
	item = selected();

    // no item selected
    if (!item)
	return;

    // remove from widget
    takeTopLevelItem(indexOfTopLevelItem(item));
}
Пример #28
0
void TrackerList::moveSelectionUp() {
  BitTorrent::TorrentHandle *const torrent = properties->getCurrentTorrent();
  if (!torrent) {
    clear();
    return;
  }
  QList<QTreeWidgetItem *> selected_items = getSelectedTrackerItems();
  if (selected_items.isEmpty()) return;
  bool change = false;
  foreach (QTreeWidgetItem *item, selected_items) {
    int index = indexOfTopLevelItem(item);
    if (index > NB_STICKY_ITEM) {
      insertTopLevelItem(index-1, takeTopLevelItem(index));
      change = true;
    }
  }
Пример #29
0
void lcTimelineWidget::RemoveStep()
{
	QTreeWidgetItem* CurrentItem = currentItem();

	if (!CurrentItem)
		return;

	if (CurrentItem->parent())
		CurrentItem = CurrentItem->parent();

	int Step = indexOfTopLevelItem(CurrentItem);

	if (Step == -1)
		return;

	lcGetActiveModel()->RemoveStep(Step + 1);
}
Пример #30
0
void SummaryTree::selectionChanged()
{
    if (! isEnabled()) return;
    QTreeWidgetItem *curItem = currentItem();
    if (! curItem) {
        deleteTaskKeyAction->setEnabled(false);
        deleteTestCaseKeyAction->setEnabled(false);
        return;
    }
    
    int index = indexOfTopLevelItem(curItem);
    if (index != -1) {
        deleteTaskKeyAction->setEnabled(true);
        deleteTestCaseKeyAction->setEnabled(false);
    } else {
        deleteTaskKeyAction->setEnabled(false);
        deleteTestCaseKeyAction->setEnabled(true);
    }
}