void VCompDialog::updateCurOs( void ) { MTarget *curtarg; int pos; WString curname; int i; WPickList& targets = _config->targets(); int icount = _imagelist->count(); for( i=0; i < icount; i++ ) { _imagelist->deleteString( 0 ); } pos = 0; icount = targets.count(); _tgList.reset(); for( i=0; i< icount; i++ ) { curtarg = (MTarget *)targets[i]; if( _cur_os == curtarg->targetOS() ) { curname.printf( "%s [%s]", curtarg->imageName().gets(), curtarg->tgtMask().ext() ); _imagelist->insertString( curname.gets(), pos ); _tgList.insertAt( pos, curtarg ); pos++; } } }
void VCompDialog::initialize() { int sx; int sy; WPoint average; WPoint max; const int rb_hite = 10; //height of a radio button const int space = 10; const int button_width = 50; const int button_hite = 14; setSystemFont( FALSE ); this->textMetrics( average, max ); sx = average.x() / 4; sy = average.y() / 8; WText* t1 = new WText( this, WRect( 7*sx, 2*sy, 164*sx, 9*sy ), "Target name:" ); t1->show(); _eName = new WEditBox( this, WRect( 7*sx, 12*sy, 250*sx, 13*sy ), *_fn ); _eName->select(); _eName->show(); WPushButton* bBrowse = new WPushButton( this, WRect( 265*sx, 11*sy, button_width * sx, button_hite * sy ), "&Browse..." ); bBrowse->onClick( this, (cbw)&VCompDialog::browseButton ); bBrowse->show(); WText* t2 = new WText( this, WRect( 167*sx, 31*sy, 86*sx, 9*sy ), "Image Type:" ); t2->show(); WRadioButton *button; WRadioButton *checkedbutton; int icount; WStyle style; MTarget *curtarg; int i; bool singletarg; curtarg = NULL; if( _comp != NULL ) { WPickList& targets = _config->targets(); icount = targets.count(); for( i=0; i < icount; i++ ) { curtarg = (MTarget *)targets[i]; if( curtarg->mask() == _comp->mask() ) break; } if( i == icount ) curtarg = NULL; } WVList &list = _config->targetOSs(); icount = list.count(); if( icount == 1 ) { // use a static field instead of a radio button when there is // only one target installed singletarg = TRUE; i = 0; _cur_os = *(WString *)list[0]; WText* t3 = new WText( this, WRect( 11*sx, 41*sy, 135*sx, rb_hite * sy ), _cur_os.gets() ); t3->show(); } else { singletarg = FALSE; for( i=0; i < icount; i ++ ) { if( i == 0 ) { if( icount == 1 ) { style = RStyleRadioButton; } else { style = RStyleGroupFirst; } } else if( i == icount - 1 ) { style = RStyleGroupLast; } else { style = RStyleRadioButton; } button = new WRadioButton( this, WRect( 11*sx, ( 41 + rb_hite * i ) * sy, 135*sx, rb_hite * sy ), ( (WString *)list[i] )->gets(), style ); button->show(); button->onClick( this, (cbw)&VCompDialog::osButton ); if( curtarg == NULL ) { if( i == 0 ) { checkedbutton = button; } } else { if( curtarg->targetOS() == *(WString *)list[i] ) { checkedbutton = button; } } } } WGroupBox *gbox; if( i < 5 ) i = 5; int boxtop = 29; int boxhite = i * rb_hite + 20; int boxbottom = boxtop + boxhite; gbox = new WGroupBox( this, WRect( 7*sx, boxtop * sy, 146*sx, boxhite * sy ), "Target Environment" ); gbox->show(); _imagelist = new WListBox( this, WRect( 166*sx, 44*sy, 150*sx, ( boxbottom - 44 ) * sy ), LStyleNoIntegral ); _imagelist->onDblClick( this, (cbw)&VCompDialog::okButton ); _imagelist->show(); WDefPushButton* bOk; boxbottom += space; bOk = new WDefPushButton( this, WRect( 105*sx, boxbottom * sy, button_width * sx, button_hite * sy ), "&OK" ); bOk->onClick( this, (cbw)&VCompDialog::okButton ); bOk->show(); WPushButton* bCancel; bCancel = new WPushButton( this, WRect( 186*sx, boxbottom * sy, button_width * sx, button_hite * sy ), "&Cancel" ); bCancel->onClick( this, (cbw)&VCompDialog::cancelButton ); bCancel->show(); if( singletarg ) { updateCurOs(); } else { checkedbutton->setCheck( TRUE ); } if( curtarg != NULL ) { icount = _tgList.count(); MTarget *tmptarg; for( i=0; i < icount; i++ ) { tmptarg = (MTarget *)_tgList[i]; if( curtarg->imageName() == tmptarg->imageName() ) { _imagelist->select( i ); break; } } } int xsize = 330 * sx; int ysize = WSystemMetrics::dialogFrameWidth() * 2 + WSystemMetrics::captionSize() + ( boxbottom + button_hite + space ) * sy; size( (WOrdinal)xsize, (WOrdinal) ysize ); centre(); show(); _eName->setFocus(); }