コード例 #1
0
DisplayFlagWidget::DisplayFlagWidget(QWidget* parent, const char* name,  Qt::WFlags f ):
    Q3ListView(parent,name,f)
{
    addColumn(QString::null);
    setRootIsDecorated( TRUE );
    setTreeStepSize( 12 );
    header()->hide();
    clear();

    setMouseTracking(false);

#ifdef SOFA_QT4
    setFocusPolicy(Qt::NoFocus);
#else
    setFocusPolicy(QWidget::NoFocus);
#endif

    setFrameShadow(QFrame::Plain);
    setFrameShape(QFrame::NoFrame );

    setSortColumn(-1);
    Q3CheckListItem* itemShowAll = new Q3CheckListItem(this, "All", Q3CheckListItem::CheckBoxController);
    itemShowAll->setOpen(true);
    Q3CheckListItem* itemShowVisual    = new Q3CheckListItem(itemShowAll, "Visual", Q3CheckListItem::CheckBoxController);
    itemShowVisual->setOpen(true);
    itemShowFlag[VISUALMODELS]   = new Q3CheckListItem(itemShowVisual, "Visual Models", Q3CheckListItem::CheckBox);
    Q3CheckListItem* itemShowBehavior  = new Q3CheckListItem(itemShowAll, itemShowVisual, "Behavior", Q3CheckListItem::CheckBoxController);
    itemShowBehavior->setOpen(true);
    itemShowFlag[BEHAVIORMODELS]   = new Q3CheckListItem(itemShowBehavior,  "Behavior Models", Q3CheckListItem::CheckBox);
    itemShowFlag[FORCEFIELDS]   = new Q3CheckListItem(itemShowBehavior, itemShowFlag[BEHAVIORMODELS], "Force Fields", Q3CheckListItem::CheckBox);
    itemShowFlag[INTERACTIONFORCEFIELDS]   = new Q3CheckListItem(itemShowBehavior, itemShowFlag[FORCEFIELDS],  "Interactions", Q3CheckListItem::CheckBox);
    Q3CheckListItem* itemShowCollision = new Q3CheckListItem(itemShowAll, itemShowBehavior, "Collision", Q3CheckListItem::CheckBoxController);
    itemShowCollision->setOpen(true);
    itemShowFlag[COLLISIONMODELS]   = new Q3CheckListItem(itemShowCollision,  "Collision Models", Q3CheckListItem::CheckBox);
    itemShowFlag[BOUNDINGCOLLISIONMODELS]   = new Q3CheckListItem(itemShowCollision, itemShowFlag[COLLISIONMODELS], "Bounding Trees", Q3CheckListItem::CheckBox);
    Q3CheckListItem* itemShowMapping   = new Q3CheckListItem(itemShowAll, itemShowCollision, "Mapping", Q3CheckListItem::CheckBoxController);
    itemShowMapping->setOpen(true);
    itemShowFlag[MAPPINGS]   = new Q3CheckListItem(itemShowMapping,  "Visual Mappings", Q3CheckListItem::CheckBox);
    itemShowFlag[MECHANICALMAPPINGS]   = new Q3CheckListItem(itemShowMapping, itemShowFlag[MAPPINGS],  "Mechanical Mappings", Q3CheckListItem::CheckBox);
    Q3ListViewItem*  itemShowOptions   = new Q3ListViewItem(this, itemShowAll, "Options");
    itemShowOptions->setOpen(true);
    itemShowFlag[RENDERING]   = new Q3CheckListItem(itemShowOptions, "Advanced Rendering", Q3CheckListItem::CheckBox);
    itemShowFlag[WIREFRAME]   = new Q3CheckListItem(itemShowOptions, "Wire Frame", Q3CheckListItem::CheckBox);
    itemShowFlag[NORMALS]   = new Q3CheckListItem(itemShowOptions, itemShowFlag[WIREFRAME], "Normals", Q3CheckListItem::CheckBox);

#ifdef SOFA_SMP
    itemShowFlag[PROCESSORCOLOR]   = new Q3CheckListItem(itemShowOptions, itemShowFlag[NORMALS], "Processor Color", Q3CheckListItem::CheckBox);
#endif
    insertItem(itemShowAll);
    itemShowAll->insertItem(itemShowVisual); itemShowAll->setOpen(true);
    itemShowVisual->insertItem(itemShowFlag[VISUALMODELS]);
    itemShowAll->insertItem(itemShowBehavior);
    itemShowBehavior->insertItem(itemShowFlag[BEHAVIORMODELS]);
    itemShowBehavior->insertItem(itemShowFlag[FORCEFIELDS]);
    itemShowBehavior->insertItem(itemShowFlag[INTERACTIONFORCEFIELDS]);
    itemShowAll->insertItem(itemShowCollision);
    itemShowCollision->insertItem(itemShowFlag[COLLISIONMODELS]);
    itemShowCollision->insertItem(itemShowFlag[BOUNDINGCOLLISIONMODELS]);
    itemShowAll->insertItem(itemShowMapping);
    itemShowMapping->insertItem(itemShowFlag[MAPPINGS]);
    itemShowMapping->insertItem(itemShowFlag[MECHANICALMAPPINGS]);

    insertItem(itemShowOptions); itemShowOptions->setOpen(true);
    itemShowOptions->insertItem(itemShowFlag[RENDERING]);
    itemShowOptions->insertItem(itemShowFlag[WIREFRAME]);
    itemShowOptions->insertItem(itemShowFlag[NORMALS]);
#ifdef SOFA_SMP
    itemShowOptions->insertItem(itemShowFlag[PROCESSORCOLOR]);
#endif
    for (int i=0; i<ALLFLAGS; ++i)  mapFlag.insert(std::make_pair(itemShowFlag[i],i));
}