Esempio n. 1
0
void ListView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
{
    QListView::selectionChanged(selected, deselected);
    bool haveSelection=haveSelectedItems();

    setContextMenuPolicy(haveSelection ? Qt::ActionsContextMenu : (menu ? Qt::CustomContextMenu : Qt::NoContextMenu));
    emit itemsSelected(haveSelection);
}
void FileViewController::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
{
    switch (selected.length()) {
        case 0:
            emit selectionCleared();
            break;
        case 1:
            emit itemSelected(selected.indexes().at(0));
            break;
        default:
            emit itemsSelected(selected.indexes());
            break;
    }
}
void ItemsComponent::onItemsSelectionChanged()
{
    const QModelIndexList indexes = ui.tblItems->selectionModel()->selectedRows();
    QList<Item *> selectedItems;
    foreach (QModelIndex index, indexes)
        selectedItems.push_back(itemsModel->getItem(index));

    emit itemsSelected(selectedItems);    

    // Single selection only
    if (indexes.size() != 1)
        itemDetailsModel->setItem(NULL);
    else
        itemDetailsModel->setItem(itemsModel->getItem(indexes.at(0)));
}
Esempio n. 4
0
// constructor:  load loader dialog
US_NoiseLoader::US_NoiseLoader( US_DB2* db, QStringList& mieGUIDs,
   QStringList& nieGUIDs, US_Noise& ti_noise, US_Noise& ri_noise,
   US_DataIO::EditedData* edata )
   : US_WidgetsDialog( 0, 0 ), db( db ), mieGUIDs( mieGUIDs ),
   nieGUIDs( nieGUIDs ), ti_noise( ti_noise ), ri_noise( ri_noise )
{
   setWindowTitle( ( db == (US_DB2*) 0 ?
                    tr( "Noise Vector Local Disk Load" ) :
                    tr( "Noise Vector Database Load" ) ) );
   setPalette( US_GuiSettings::frameColor() );

   mainLayout        = new QVBoxLayout( this );
   btnsLayout        = new QHBoxLayout();
   mainLayout->setSpacing        ( 2 );
   mainLayout->setContentsMargins( 2, 2, 2, 2 );

   QString hmsg     = tr( "You may select multiple noise records.\n\n" )
                    + tr( "Click on a tree noise entry to add it\n" )
                    + tr( "   to the list below of selected noise records.\n" )
                    + tr( "Click on a top-level entry to add all\n" )
                    + tr( "   of its children to the selected list.\n" )
                    + tr( "Ctrl-click on multiple noise entries\n" )
                    + tr( "   to add them to the selected list.\n\n" )
                    + tr( "Click the \"Load\" button to load selected noise\n" )
                    + tr( "    or the \"Cancel\" button to select no noise.\n" )
                    + tr( "Click \"Details\" for noise entry details." );

   QLabel* lb_noises  = us_banner( hmsg );
   lb_noises->setAlignment(  Qt::AlignVCenter | Qt::AlignLeft );

   QLabel* lb_selects = us_banner( "Selected Noise Vectors" );
   lb_selects->setAlignment( Qt::AlignVCenter | Qt::AlignHCenter );

   QFont font( US_GuiSettings::fontFamily(), US_GuiSettings::fontSize() );
   QFontMetrics fm( font );
   int fontHeight = fm.lineSpacing();

   tw_noises        = new QTreeWidget( this );
   tw_noises->setFrameStyle( QFrame::NoFrame );
   tw_noises->setPalette( US_GuiSettings::editColor() );
   tw_noises->setFont(    font );
   tw_noises->setSelectionMode( QAbstractItemView::ExtendedSelection );

   lw_selects       = us_listwidget();
   lw_selects->setMaximumHeight( fontHeight * 3 + 12 );

   mainLayout->addWidget( lb_noises );
   mainLayout->addWidget( tw_noises );
   mainLayout->addWidget( lb_selects );
   mainLayout->addWidget( lw_selects );

   QPushButton* pb_detail = us_pushbutton( tr( "Details" )   );
   QPushButton* pb_cancel = us_pushbutton( tr( "Cancel" ) );
   QPushButton* pb_load   = us_pushbutton( tr( "Load" )   );
   btnsLayout->addWidget( pb_detail );
   btnsLayout->addWidget( pb_cancel );
   btnsLayout->addWidget( pb_load   );
   mainLayout->addLayout( btnsLayout );

   ti_noise.count   = 0;
   ri_noise.count   = 0;

   // populate the tree widget
   QTreeWidgetItem* twi_null = (QTreeWidgetItem*)0;
   QString          twtitle  = QString( "Models-in-Edit / Noises-in-Model" );
   QString          mititle  = QString( "Latest/Loaded Model" );
   QList< QTreeWidgetItem* > items;
   tw_noises->setColumnCount( 1 );
   tw_noises->setHeaderLabel( twtitle );

   QTreeWidgetItem* twi_curr = 
      new QTreeWidgetItem( twi_null, QStringList( mititle ) );
   items.append( twi_curr );      // first top-level item in tree

   for ( int ii = 1; ii < mieGUIDs.size(); ii++ )
   {  // complete models list for top level
      mititle    = QString().sprintf( "Model Sibling %4.4d", ii );
      twi_curr   = new QTreeWidgetItem( twi_null, QStringList( mititle ) );
      items.append( twi_curr );   // other top-level items are model siblings
   }

   tw_noises->addTopLevelItems( items );  // put the top level in tree GUI

   for ( int ii = 0; ii < nieGUIDs.size(); ii++ )
   {  // review noises-in-edit, adding children
      QString nie   = nieGUIDs.at( ii );         // noiseGUID:type:index in edit
      QString typ   = nie.section( ":", 1, 1 );  // type part ("ti" or "ri")
      QString mdx   = nie.section( ":", 2, 2 );  // model index part ("0001")
              nie   = typ + "_noise " + mdx;     // list name ("ti_noise 0003")
      int     ndx   = mdx.toInt();               // integral model index

      twi_curr      = new QTreeWidgetItem( QStringList( nie ) );
      items.at( ndx )->addChild( twi_curr );     // add as child of model "ndx"
   }

   if ( nieGUIDs.at( 0 ).section( ":", 2, 2 ).toInt() == 0 )
   {  // expand the loaded model tree if present
      tw_noises->expandItem( items.at( 0 ) );
   }

   connect( tw_noises,  SIGNAL( itemSelectionChanged() ),
            this,       SLOT(   itemsSelected()        ) );
   connect( pb_detail,  SIGNAL( clicked()      ),
            this,       SLOT(   view_details() ) );
   connect( pb_cancel,  SIGNAL( clicked()      ),
            this,       SLOT(   cancelled()    ) );
   connect( pb_load,    SIGNAL( clicked()      ),
            this,       SLOT(   selected()     ) );

   // Compute the OD range of the edited data
   if ( edata != NULL )
   {
      int nscans    = edata->scanCount();
      int npoints   = edata->pointCount();
      double datmin = edata->value( 0, 0 );
      double datmax = datmin;

      for ( int ii = 0; ii < nscans; ii++ )
      {
         for ( int jj = 0; jj < npoints; jj++ )
         {
            double datval = edata->value( ii, jj );
            datmin        = qMin( datmin, datval );
            datmax        = qMax( datmax, datval );
         }
      }

      darange = datmax - datmin;
   }

   else
      darange = 0.0;
}