//----------------------------------------------------------------------------------------
OfsTreeWidget::OfsTreeWidget(QWidget *parent, unsigned int capabilities, std::string initialSelection) : QTreeWidget(parent), mCapabilities(capabilities) 
{
    mSelected = initialSelection;

    setColumnCount(1);
    setHeaderHidden(true);
    setSelectionMode(QAbstractItemView::SingleSelection);
    setSelectionBehavior(QAbstractItemView::SelectItems);
    setContextMenuPolicy(Qt::CustomContextMenu);
    setDragDropOverwriteMode(false);
    
    if(capabilities & CAP_ALLOW_DROPS)
        setDragDropMode(QAbstractItemView::DropOnly);

    mUnknownFileIcon = mOgitorMainWindow->mIconProvider.icon(QFileIconProvider::File);

    mFile = Ogitors::OgitorsRoot::getSingletonPtr()->GetProjectFile();

    QTreeWidgetItem* item = 0;
    QTreeWidgetItem* pItem = new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("Project")));
    pItem->setIcon(0, mOgitorMainWindow->mIconProvider.icon(QFileIconProvider::Folder));
    pItem->setTextColor(0, Qt::black);
    QFont fnt = pItem->font(0);
    fnt.setBold(true);
    pItem->setFont(0, fnt);
    pItem->setWhatsThis(0, QString("/"));
    
    addTopLevelItem(pItem);

    fillTree(pItem, "/");

    if(capabilities & CAP_SHOW_FILES)
        fillTreeFiles(pItem, "/");

    expandItem(pItem);

    if(mSelected == "/")
        setItemSelected(pItem, true);
    else
    {
        NameTreeWidgetMap::iterator it = mItemMap.find(mSelected);

        if(it != mItemMap.end())
        {
            clearSelection();
            scrollToItem(it->second);
            setItemSelected(it->second, true);
        }
    }

    connect(this, SIGNAL(itemSelectionChanged()), this, SLOT(onSelectionChanged()));

    if(capabilities & CAP_SHOW_FILES)
    {
        connect(this, SIGNAL(itemCollapsed( QTreeWidgetItem * )), this, SLOT(onItemCollapsed( QTreeWidgetItem * )));
        connect(this, SIGNAL(itemExpanded( QTreeWidgetItem * )), this, SLOT(onItemExpanded( QTreeWidgetItem * )));
    }
Beispiel #2
0
    void ListTable::createNewRow()
    {

      QListWidgetItem * item = 0;
      switch (type_)
      {
      case ListEditor::INT:
        item = new QListWidgetItem("0");
        break;

      case ListEditor::FLOAT:
        item = new QListWidgetItem("0.0");
        break;

      default:
        item = new QListWidgetItem("");
      }
      item->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter);
      item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
      addItem(item);
      setItemSelected(item, true);
      setCurrentRow(row(item));
      itemActivated(item);
      edit(currentIndex());
    }
	void KviCanvasView::contentsMousePressEvent(QMouseEvent *e)
	{
		if(e->button() & Qt::LeftButton)
		{
	//	    QPoint p = inverseWorldMatrix().map(e->pos());
			QPoint p = e->pos();

			switch(m_state)
			{
				case SelectOrigin:
					clearSelection();
					setCursor(arrowCursor);
					m_state = Idle;
					insertObjectAt(p,m_objectToInsert);
					canvas()->update();
				break;

				case Idle:
				{
					QCanvasItemList l = canvas()->collisions(p);
					QCanvasItemList::Iterator it = l.begin();

					if(it != l.end())
					{
						// Got an item
						QCanvasItem * hit = *it;
						if(hit != m_pSelectedItem)
						{
							// Was not selected yet
							setItemSelected(hit);
							canvas()->update();
						}
						// Now find the point on that we have clicked it
						switch(KVI_CANVAS_RTTI_CONTROL_TYPE(hit))
						{
							case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
								beginDragRectangle(((KviCanvasRectangleItem *)hit),p);
							break;
							case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
								beginDragLine(((KviCanvasLine *)hit),p);
							break;
							case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
								beginDragPolygon(((KviCanvasPolygon *)hit),p,e->state() & Qt::ShiftButton,e->state() & Qt::ControlButton);
							break;
						}
					} else {
						// No item
						clearSelection();
						canvas()->update();
					}
				}
				break;
			}
		}
	}
void MovableTableWidget::dropEvent(QDropEvent *event)
{
  if (event->source() != this)
  {
    event->ignore();
    return;
  }

  int targetRow = dropRow(event->pos());

  QByteArray encoded = event->mimeData()->data("application/x-qabstractitemmodeldatalist");
  QDataStream stream(&encoded, QIODevice::ReadOnly);

  QMap<int, QMap<int, QString> > rows;
  while (!stream.atEnd())
  {
    int row, col;
    QMap<int,  QVariant> roleDataMap;
    stream >> row >> col >> roleDataMap;

    rows[row][col] = roleDataMap[0].toString();
  }

  QList<int> rowkeys = rows.keys();
  qSort(rowkeys);

  for (int row = rowkeys.count()-1; 0 <= row ; row--)
  {
    int rowIndex = rowkeys[row];
    if (rowIndex < targetRow)
    {
      targetRow--;
    }
    removeRow(rowIndex);
  }

  for (int row = 0; row < rowkeys.count(); ++row)
  {
    QMap<int, QString> cols = rows[rowkeys[row]];
    QList<int> colkeys = cols.keys();

    insertRow(targetRow+row);
    for (int col = 0; col < colkeys.count(); ++col)
    {
      QString value = cols[colkeys[col]];
      setItem(targetRow+row, col, new QTableWidgetItem(value));
      setItemSelected(item(targetRow+row, col), true);
    }
    emit(itemMoved(rowkeys[row],targetRow+row));
  }


  m_lineRow = -1;
}
Beispiel #5
0
    foreach (QTreeWidgetItem *item, items) {
        item->setFlags(item->flags() & ~Qt::ItemIsDropEnabled);

        setItemSelected(item, true);
    }
	void KviCanvasView::insertObjectAt(const QPoint & pnt,ObjectType o)
	{
		QCanvasItem * r = 0;

		switch(o)
		{
			case Rectangle:
				r = new KviCanvasRectangle(canvas(),pnt.x(),pnt.y(),0,0);
			break;
			case RichText:
				r = new KviCanvasRichText(canvas(),pnt.x(),pnt.y(),0,0);
			break;
			case Line:
				r = new KviCanvasLine(canvas(),pnt.x(),pnt.y(),pnt.x(),pnt.y());
			break;
			case Ellipse:
				r = new KviCanvasEllipse(canvas(),pnt.x(),pnt.y(),0,0);
			break;
			case Pie:
				r = new KviCanvasPie(canvas(),pnt.x(),pnt.y(),0,0);
			break;
			case Chord:
				r = new KviCanvasChord(canvas(),pnt.x(),pnt.y(),0,0);
			break;
			case PolygonTriangle:
			{
				QPointArray pa(3);
				pa.setPoint(0,0,-500);
				pa.setPoint(1,-450,220);
				pa.setPoint(2,450,220);
				r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
			}
			break;
			case PolygonRectangle:
			{
				QPointArray pa(4);
				pa.setPoint(0,-350,-350);
				pa.setPoint(1,350,-350);
				pa.setPoint(2,350,350);
				pa.setPoint(3,-350,350);
				r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
			}
			break;
			case PolygonPentagon:
			{
				QPointArray pa(5);
				calcPolygonPoints(pa,5);
				r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
			}
			break;
			case PolygonHexagon:
			{
				QPointArray pa(6);
				calcPolygonPoints(pa,6);
				r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
			}
			break;
		}

		if(r)
		{
			setItemSelected(r);
			r->setEnabled(true);
			r->show();
		}

		switch(KVI_CANVAS_RTTI_CONTROL_TYPE(r))
		{
			case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
				beginDragRectangle((KviCanvasRectangleItem *)r,pnt,true);
			break;
			case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
				beginDragLine((KviCanvasLine *)r,pnt,true);
			break;
	//		case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
	//			beginDragPolygon((KviCanvasPolygon *)r,pnt,true);
	//		break;
		}

	//	canvas()->update();
	}