示例#1
0
void TreeView::copy() {
    auto indexes = treeView()->selectionModel()->selectedIndexes();

    if (indexes.isEmpty()) {
        return;
    }

    qSort(indexes.begin(), indexes.end(), [](const QModelIndex &a, const QModelIndex &b) -> bool {
        if (a.parent() == b.parent()) {
            return a.row() < b.row() || (a.row() == b.row() && a.column() < b.column());
        } else {
            return a < b;
        }
    });

    QString text;

    QModelIndex last;
    foreach (const auto &index, indexes) {
        if (last.parent() != index.parent() || last.row() != index.row()) {
            if (!text.isEmpty()) {
                text += '\n';
            }
            last = index;
        } else {
            text += '\t';
        }
        text += index.data().toString();
    }

    QApplication::clipboard()->setText(text);
}
示例#2
0
 void InputCell::mouseDoubleClickEvent(QMouseEvent *)
 {
   // PORT >>if(treeView()->hasMouse())
   if(treeView()->testAttribute(Qt::WA_UnderMouse))
   {
     setClosed(!closed_);
   }
 }
示例#3
0
//-------------------------------------------
MyKGanttView::MyKGanttView( QWidget *parent )
    : NodeGanttViewBase( parent ),
    m_manager( 0 )
{
    kDebug(planDbg())<<"------------------- create MyKGanttView -----------------------";
    GanttItemModel *gm = new GanttItemModel( this );
    setItemModel( gm );
    treeView()->createItemDelegates( gm );

    QList<int> show;
    show << NodeModel::NodeName
            << NodeModel::NodeCompleted
            << NodeModel::NodeStartTime
            << NodeModel::NodeEndTime;

    treeView()->setDefaultColumns( show );
    for ( int i = 0; i < model()->columnCount(); ++i ) {
        if ( ! show.contains( i ) ) {
            treeView()->hideColumn( i );
        }
    }

    setConstraintModel( new KGantt::ConstraintModel( this ) );
    KGantt::ProxyModel *m = static_cast<KGantt::ProxyModel*>( ganttProxyModel() );

    m->setRole( KGantt::ItemTypeRole, KGantt::ItemTypeRole ); // To provide correct format
    m->setRole( KGantt::StartTimeRole, Qt::EditRole ); // To provide correct format
    m->setRole( KGantt::EndTimeRole, Qt::EditRole ); // To provide correct format

    m->setColumn( KGantt::ItemTypeRole, NodeModel::NodeType );
    m->setColumn( KGantt::StartTimeRole, NodeModel::NodeStartTime );
    m->setColumn( KGantt::EndTimeRole, NodeModel::NodeEndTime );
    m->setColumn( KGantt::TaskCompletionRole, NodeModel::NodeCompleted );

    KGantt::DateTimeGrid *g = static_cast<KGantt::DateTimeGrid*>( grid() );
    g->setDayWidth( 30 );
    // TODO: extend QLocale/KGantt to support formats for hourly time display
    // see bug #349030
    // removed custom code here

    connect( model(), SIGNAL(nodeInserted(Node*)), this, SLOT(slotNodeInserted(Node*)) );
}
示例#4
0
void TreeView::populateContextMenu(QMenu *menu) {
    if (!treeView_->selectionModel()->selectedIndexes().isEmpty()) {
        menu->addSeparator();
        menu->addAction(tr("Copy"), this, SLOT(copy()), QKeySequence::Copy);
    }

    menu->addSeparator();
    menu->addAction(tr("Select All"), treeView(), SLOT(selectAll()), QKeySequence::SelectAll);

    menu->addSeparator();
    menu->addAction(openSearchAction_);
    menu->addAction(findNextAction_);
    menu->addAction(findPreviousAction_);
}
示例#5
0
  /*! \brief resets the input cell. Removes all output data and
  *  restores the initial state.
  */
  void InputCell::clear()
  {
    if(evaluated_)
    {
      output_->clear();
      evaluated_ = false;
      // PORT >> layout_->remove(output_);
      layout_->removeWidget(output_);
    }

    //input_->setReadOnly(false);
    input_->setReadOnly(true);
    input_->clear();
    treeView()->setClosed(false); //Notis this
    setClosed(true);
  }
示例#6
0
bool TreeView::eventFilter(QObject *watched, QEvent *event) {
    if (watched == treeView()->viewport()) {
        if (event->type() == QEvent::Wheel) {
            auto wheelEvent = static_cast<QWheelEvent *>(event);

            if (wheelEvent->orientation() == Qt::Vertical && wheelEvent->modifiers() & Qt::ControlModifier) {
                if (wheelEvent->delta() > 0) {
                    zoomIn(1 + wheelEvent->delta() / 360);
                } else {
                    zoomOut(1 - wheelEvent->delta() / 360);
                }
                return true;
            }
        }
    }
    return QDockWidget::eventFilter(watched, event);
}
示例#7
0
NS_IMETHODIMP
nsTreeBoxObject::SetDocument(nsIDocument* aDocument)
{
  // this should only be called with a null document, which indicates
  // that we're being torn down.
  NS_ASSERTION(aDocument == nsnull, "SetDocument called with non-null document");

  // Drop the view's ref to us.
  nsCOMPtr<nsISupports> suppView;
  GetPropertyAsSupports(NS_LITERAL_STRING("view").get(), getter_AddRefs(suppView));
  nsCOMPtr<nsITreeView> treeView(do_QueryInterface(suppView));
  if (treeView) {
    nsCOMPtr<nsITreeSelection> sel;
    treeView->GetSelection(getter_AddRefs(sel));
    if (sel)
      sel->SetTree(nsnull);
    treeView->SetTree(nsnull); // Break the circular ref between the view and us.
  }

  return nsBoxObject::SetDocument(aDocument);
}
示例#8
0
void NodeGanttViewBase::saveContext( QDomElement &settings ) const
{
    kDebug(planDbg());
    treeView()->saveContext( model()->columnMap(), settings );

    QDomElement e = settings.ownerDocument().createElement( "ganttchart" );
    settings.appendChild( e );
    e.setAttribute( "show-dependencies", m_ganttdelegate->showTaskLinks );
    e.setAttribute( "show-taskname", m_ganttdelegate->showTaskName );
    e.setAttribute( "show-resourcenames", m_ganttdelegate->showResources );
    e.setAttribute( "show-completion", m_ganttdelegate->showProgress );
    e.setAttribute( "show-criticalpath", m_ganttdelegate->showCriticalPath  );
    e.setAttribute( "show-criticaltasks", m_ganttdelegate->showCriticalTasks );
    e.setAttribute( "show-positivefloat", m_ganttdelegate->showPositiveFloat );
    e.setAttribute( "show-schedulingerror", m_ganttdelegate->showSchedulingError );
    e.setAttribute( "show-timeconstraint", m_ganttdelegate->showTimeConstraint );
    e.setAttribute( "show-negativefloat", m_ganttdelegate->showNegativeFloat );

    GanttViewBase::saveContext( e );

    m_printOptions.saveContext( e );
}
示例#9
0
bool NodeGanttViewBase::loadContext( const KoXmlElement &settings )
{
    treeView()->loadContext( model()->columnMap(), settings );

    KoXmlElement e = settings.namedItem( "ganttchart" ).toElement();
    if ( ! e.isNull() ) {
        m_ganttdelegate->showTaskLinks = (bool)( e.attribute( "show-dependencies", "0" ).toInt() );
        m_ganttdelegate->showTaskName = (bool)( e.attribute( "show-taskname", "0" ).toInt() );
        m_ganttdelegate->showResources = (bool)( e.attribute( "show-resourcenames", "0" ).toInt() );
        m_ganttdelegate->showProgress = (bool)( e.attribute( "show-completion", "0" ).toInt() );
        m_ganttdelegate->showCriticalPath = (bool)( e.attribute( "show-criticalpath", "0" ).toInt() );
        m_ganttdelegate->showCriticalTasks = (bool)( e.attribute( "show-criticaltasks", "0" ).toInt() );
        m_ganttdelegate->showPositiveFloat = (bool)( e.attribute( "show-positivefloat", "0" ).toInt() );
        m_ganttdelegate->showSchedulingError = (bool)( e.attribute( "show-schedulingerror", "0" ).toInt() );
        m_ganttdelegate->showTimeConstraint = (bool)( e.attribute( "show-timeconstraint", "0" ).toInt() );
        m_ganttdelegate->showNegativeFloat = (bool)( e.attribute( "show-negativefloat", "0" ).toInt() );

        GanttViewBase::loadContext( e );

        m_printOptions.loadContext( e );
    }
    return true;
}
    //____________________________________________________
    ListDemoWidget::ListDemoWidget( void )
    {

        // main widget
        GtkWidget* mainWidget( gtk_box_new( GTK_ORIENTATION_VERTICAL, 0 ) );
        gtk_box_set_spacing( GTK_BOX( mainWidget ), 5 );
        setWidget( mainWidget );

        // setup
        setName( "Lists" );
        setComments( "Shows the appearance of lists and trees" );
        setIconName( "view-list-tree" );
        realize();

        // vertical pane
        GtkWidget* vpaned( gtk_paned_new( GTK_ORIENTATION_VERTICAL ) );
        gtk_widget_show( vpaned );
        gtk_box_pack_start( GTK_BOX( mainWidget ), vpaned, true, true, 0 );

        // simple list
        {

            GtkListStore* model( gtk_list_store_new( 1, G_TYPE_STRING ) );
            const char* columns[] =
            {
                "First Item",
                "Second Item",
                "Third Item"
            };

            for( unsigned int i=0; i<3; i++ )
            {
                GtkTreeIter iter;
                gtk_list_store_append( model, &iter );
                gtk_list_store_set( model, &iter, 0, columns[i], -1 );
            }

            GtkWidget* treeView( gtk_tree_view_new_with_model( GTK_TREE_MODEL( model ) ) );
            gtk_tree_view_set_headers_visible( GTK_TREE_VIEW( treeView ), false );
            gtk_widget_show( treeView );

            // renderer
            GtkCellRenderer *renderer( gtk_cell_renderer_text_new() );
            GtkTreeViewColumn *column( gtk_tree_view_column_new_with_attributes( "", renderer, "text", 0, NULL ) );

            gtk_tree_view_append_column( GTK_TREE_VIEW( treeView ), column );

            // scrolled window
            GtkWidget* scrolledWindow( gtk_scrolled_window_new( 0L, 0L ) );
            gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scrolledWindow ), GTK_SHADOW_IN );
            gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolledWindow ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC );
            gtk_container_add( GTK_CONTAINER( scrolledWindow ), treeView );
            gtk_widget_show( scrolledWindow );

            gtk_paned_pack1( GTK_PANED( vpaned ), scrolledWindow, true, true );

        }

        // tree
        {

            GtkTreeStore* model( gtk_tree_store_new ( 2, G_TYPE_STRING, G_TYPE_STRING ) );
            const char* titleColumns[] =
            {
                "First Item",
                "Second Item",
                "Third Item"
            };

            const char* descriptionColumns[] =
            {
                "First Description",
                "Second Description",
                "Third Description"
            };

            const char* subTitleColumns[] =
            {
                "First Subitem",
                "Second Subitem",
                "Third Subitem"
            };

            const char* subDescriptionColumns[] =
            {
                "First Subitem Description",
                "Second Subitem Description",
                "Third Subitem Description"
            };

            for( unsigned int i=0; i<3; i++ )
            {
                GtkTreeIter iter;
                gtk_tree_store_append( model, &iter, 0L );
                gtk_tree_store_set( model, &iter, 0, titleColumns[i], 1, descriptionColumns[i], -1 );

                // append children
                if( i == 1 )
                {
                    for( unsigned int i=0; i<2; i++ )
                    {
                        GtkTreeIter subiter;
                        gtk_tree_store_append( model, &subiter, &iter );
                        gtk_tree_store_set( model, &subiter, 0, subTitleColumns[i], 1, subDescriptionColumns[i], -1 );
                    }

                } else if( i == 2 ) {

                    GtkTreeIter subiter;
                    gtk_tree_store_append( model, &subiter, &iter );
                    gtk_tree_store_set( model, &subiter, 0, subTitleColumns[2], 1, subDescriptionColumns[2], -1 );

                    for( unsigned int i=0; i<2; i++ )
                    {
                        GtkTreeIter thirditer;
                        gtk_tree_store_append( model, &thirditer, &subiter );
                        gtk_tree_store_set( model, &thirditer, 0, subTitleColumns[i], 1, subDescriptionColumns[i], -1 );
                    }

                }

            }

            GtkWidget* treeView( gtk_tree_view_new_with_model( GTK_TREE_MODEL( model ) ) );
            gtk_tree_view_set_headers_visible( GTK_TREE_VIEW( treeView ), true );
            gtk_widget_show( treeView );

            // renderers
            {
                GtkCellRenderer *renderer( gtk_cell_renderer_text_new() );
                GtkTreeViewColumn *column( gtk_tree_view_column_new_with_attributes( "Title", renderer, "text", 0, NULL ) );
                gtk_tree_view_column_set_resizable(column, TRUE);
                gtk_tree_view_append_column( GTK_TREE_VIEW( treeView ), column );
            }

            {
                GtkCellRenderer *renderer( gtk_cell_renderer_text_new() );
                GtkTreeViewColumn *column( gtk_tree_view_column_new_with_attributes( "Description", renderer, "text", 1, NULL ) );
                gtk_tree_view_column_set_resizable(column, TRUE);
                gtk_tree_view_append_column( GTK_TREE_VIEW( treeView ), column );
            }

            // scrolled window
            GtkWidget* scrolledWindow( gtk_scrolled_window_new( 0L, 0L ) );
            gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW( scrolledWindow ), GTK_SHADOW_IN );
            gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolledWindow ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC );
            gtk_container_add( GTK_CONTAINER( scrolledWindow ), treeView );
            gtk_widget_show( scrolledWindow );

            gtk_paned_pack2( GTK_PANED( vpaned ), scrolledWindow, true, true );

        }


    }
示例#11
0
void TreeView::setDocumentFont(const QFont &font) {
    treeView()->setFont(font);
}
示例#12
0
const QFont &TreeView::documentFont() const {
    return treeView()->font();
}