#if defined(CGAL_USE_QT) //////////////////////////////////////////////////////////////////////// #include "forms.h" #include "demo_tab.h" /*! constructor - build the properties dialog form */ PropertiesForm::PropertiesForm( QTabWidget * bar, QWidget* parent , int number_of_tabs , Qt_widget_base_tab *w_demo_p, double scale, bool colors_flag): QDialog( parent), myBar(bar) { setCaption( "Properties -- Options" ); resize( 420, 290 ); optionsFormLayout = new QVBoxLayout( this, 11, 6 ); arrLayout1 = new QHBoxLayout( 0, 0, 6 ); textLabel1 = new QLabel( "Width", this ); arrLayout1->addWidget( textLabel1 ); box1 = new QSpinBox( 300, 1000, 50, this, "box1" ); box1->setValue(parent->width()); arrLayout1->addWidget( box1 ); optionsFormLayout->addLayout( arrLayout1 ); arrLayout2 = new QHBoxLayout( 0, 0, 6 ); textLabel2 = new QLabel( "Height", this ); arrLayout2->addWidget( textLabel2 ); box2 = new QSpinBox( 300, 1000, 50, this, "box2" ); box2->setValue(parent->height()); arrLayout2->addWidget( box2 ); optionsFormLayout->addLayout( arrLayout2 ); arrLayout3 = new QHBoxLayout( 0, 0, 6 ); textLabel3 = new QLabel( "Line Width", this ); arrLayout3->addWidget( textLabel3 ); box3 = new QSpinBox( 1, 5, 1, this, "box3" ); box3->setValue(w_demo_p->m_line_width); arrLayout3->addWidget( box3 ); optionsFormLayout->addLayout( arrLayout3 ); arrLayout4 = new QHBoxLayout( 0, 0, 6 ); textLabel4 = new QLabel( "Scaling Factor", this ); arrLayout4->addWidget( textLabel4 ); box4 = new MySpinBox( 10, 100, 1, this, "box4" ); box4->setValue(static_cast(scale*10)); arrLayout4->addWidget( box4 ); optionsFormLayout->addLayout( arrLayout4 ); arrLayout5 = new QHBoxLayout( 0, 0, 6 ); textLabel5 = new QLabel( "Display Mode", this ); arrLayout5->addWidget( textLabel5 ); box5 = new QComboBox( FALSE, this ); box5->insertItem( "Different Colors At Overlay" ); box5->insertItem( "Uniform Color At Overlay" ); arrLayout5->addWidget( box5 ); optionsFormLayout->addLayout( arrLayout5 ); if (!colors_flag) box5->setCurrentItem(1); arrLayout6 = new QHBoxLayout( 0, 0, 6 ); textLabel6 = new QLabel( "Grid Cube Size", this ); arrLayout6->addWidget( textLabel6 ); box6 = new QSpinBox( 1, 100, 1, this, "box6" ); box6->setValue(w_demo_p->cube_size); arrLayout6->addWidget( box6 ); optionsFormLayout->addLayout( arrLayout6 ); arrLayout7 = new QHBoxLayout( 0, 0, 6 ); textLabel7 = new QLabel( "Remove Curve Mode", this ); arrLayout7->addWidget( textLabel7 ); box7 = new QComboBox( FALSE, this ); box7->insertItem( "Remove entire original curve" ); box7->insertItem( "Remove Edge" ); arrLayout7->addWidget( box7 ); optionsFormLayout->addLayout( arrLayout7 ); if (!w_demo_p->remove_org_curve) box7->setCurrentItem(1); arrLayout8 = new QHBoxLayout( 0, 0, 6 ); textLabel8 = new QLabel( "Vertex Radius", this ); arrLayout8->addWidget( textLabel8 ); box8 = new QSpinBox( 1, 5, 1, this, "box8" ); box8->setValue(w_demo_p->m_vertex_width); arrLayout8->addWidget( box8 ); optionsFormLayout->addLayout( arrLayout8 ); arrLayout9 = new QHBoxLayout( 0, 0, 6 ); textLabel9 = new QLabel( "Draw vertex not in intersection", this ); arrLayout9->addWidget( textLabel9 ); box9 = new QComboBox( FALSE, this ); box9->insertItem( "Draw" ); box9->insertItem( "Don't draw" ); arrLayout9->addWidget( box9 ); optionsFormLayout->addLayout( arrLayout9 ); if (!w_demo_p->draw_vertex) box9->setCurrentItem(1); buttonsLayout = new QHBoxLayout( 0, 0, 6 ); okPushButton = new QPushButton( "OK", this ); okPushButton->setDefault( TRUE ); buttonsLayout->addWidget( okPushButton ); cancelPushButton = new QPushButton( "Cancel", this ); buttonsLayout->addWidget( cancelPushButton ); optionsFormLayout->addLayout( buttonsLayout ); connect( okPushButton, SIGNAL( clicked() ), this, SLOT( accept() ) ); connect( cancelPushButton, SIGNAL( clicked() ), this, SLOT( reject() ) ); textLabel1->setBuddy( box1 ); textLabel2->setBuddy( box2 ); textLabel3->setBuddy( box3 ); textLabel4->setBuddy( box4 ); } //////////////////////////////////////////////////////////////////////// /*! greem_icon - used in the overlay form */ const char* green_icon[]={ "16 16 2 1", "g c green", ". c None", "................", "................", "..gggggggggggg..", "..gggggggggggg..", "..gggggggggggg..", "..ggg......ggg..", "..ggg......ggg..", "..ggg......ggg..", "..ggg......ggg..", "..ggg......ggg..", "..ggg......ggg..", "..gggggggggggg..", "..gggggggggggg..", "..gggggggggggg..", "................", "................"}; /*! white_icon - used in the overlay form */ const char* white_icon[]={ "16 16 2 1", "g c green", ". c None", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................", "................"}; /*! OverlayForm constructor - build the overlay dialog form */ OverlayForm::OverlayForm( QTabWidget * bar, QWidget* parent ,int tab_number , const char* name, bool modal, WFlags f ): QDialog( parent, name, modal, f ), myBar(bar) { setCaption( "Planar Maps -- Overlay" ); resize( 590, 390 ); optionsFormLayout = new QVBoxLayout( this, 11, 6 ); split = new QSplitter(this); listBox1 = new DDListBox( split ); listBox2 = new DDListBox( split ); QString traits; Qt_widget_base_tab *w_demo_p; for (int i=0; i < tab_number; i++) { if ( myBar->isTabEnabled( myBar->page(i) ) ) { // We peform downcasting from QWigdet* to Qt_widget_base_tab*, // as we know that only // Qt_widget_base_tab objects are stored in the tab pages. w_demo_p = static_cast (myBar->page(i)); switch ( w_demo_p->traits_type ) { case SEGMENT_TRAITS: traits = " ( segment traits )"; break; case POLYLINE_TRAITS: traits = " ( polyline traits )"; break; case CONIC_TRAITS: traits = " ( conic traits )"; break; } listBox1->insertItem( QPixmap( green_icon ) , myBar->label(i) + traits ); } } listBox1->set_max_items(listBox1->count()); arrLayout = new QHBoxLayout(); textLabel1 = new QLabel( "Possible Planar Maps", this ); arrLayout->addWidget( textLabel1 ); textLabel2 = new QLabel( "Chosen Planar Maps", this ); arrLayout->addWidget( textLabel2 ); buttonsLayout = new QHBoxLayout( 0, 0, 6 ); okPushButton = new QPushButton( "OK", this ); okPushButton->setDefault( TRUE ); buttonsLayout->addWidget( okPushButton ); cancelPushButton = new QPushButton( "Cancel", this ); buttonsLayout->addWidget( cancelPushButton ); optionsFormLayout->addLayout( arrLayout ); optionsFormLayout->addWidget( split ); optionsFormLayout->addLayout( buttonsLayout ); connect( okPushButton, SIGNAL( clicked() ), this, SLOT( accept() ) ); connect( cancelPushButton, SIGNAL( clicked() ), this, SLOT( reject() ) ); setAcceptDrops(TRUE); } //////////////////////////////////////////////////////////////////////////////// //CheckItem::CheckItem( QListBox * listbox, const QPixmap & pix, // const QString & text ): // QListBoxPixmap( listbox, pix, text ) //{ // check_box = new QCheckBox(listbox); //} ////////////////////////////////////////////////////////////////////////////// /*! DDListBox constructor */ DDListBox::DDListBox( QWidget * parent, const char * name, WFlags f ) : QListBox( parent, name, f ), max_items(0), flag(false) { setAcceptDrops( TRUE ); dragging = FALSE; } /*! dragEnterEvent - accept drag event */ void DDListBox::dragEnterEvent( QDragEnterEvent *evt ) { if ( QTextDrag::canDecode( evt ) ) evt->accept(); } /*! dropEvent - insert new item. if we are in the first listBox * and all items are there, make all selectable */ void DDListBox::dropEvent( QDropEvent *evt ) { QString text; if ( QTextDrag::decode( evt, text ) ) insertItem( QPixmap( green_icon ) , text ); if (count() == max_items && max_items != 0) { flag = true; for (unsigned int i = 0; i < count(); i++) item(i)->setSelectable( true ); } } /*! mousePressEvent - mouse click on the list box */ void DDListBox::mousePressEvent( QMouseEvent *evt ) { QListBox::mousePressEvent( evt ); dragging = TRUE; } /*! mouseMoveEvent - mouse move on the list box */ void DDListBox::mouseMoveEvent( QMouseEvent * ) { if (count() == max_items && max_items != 0 && flag) { for (unsigned int i = 0; i < count(); i++) changeItem( QPixmap( green_icon ) , text(i) , i); flag = false; } if ( dragging && item(currentItem())->isSelectable() ) { QDragObject *d = new QTextDrag( currentText() , this ); d->dragCopy(); // do NOT delete d. dragging = FALSE; unsigned int current = currentItem(); if (count() == max_items && max_items != 0) { char s[100]; strcpy(s, currentText()); char * traits; traits = strtok(s," "); traits = strtok(NULL, " "); traits = strtok(NULL, " "); traits = strtok(NULL, " "); for (unsigned int i = 0; i < max_items; i++) { char s_i[100]; strcpy(s_i, text(i)); char * traits_i; traits_i = strtok(s_i," "); traits_i = strtok(NULL, " "); traits_i = strtok(NULL, " "); traits_i = strtok(NULL, " "); bool b = (strcmp(traits,traits_i) == 0); if (!b && i != current ) { changeItem( QPixmap( white_icon ) , text(i) , i); item(i)->setSelectable( b ); } } } removeItem ( current ); } } /*! set_max_items - access to private date member */ void DDListBox::set_max_items(int num) { max_items = num; } /*! OptionsForm constructor */ OptionsForm::OptionsForm( QWidget* parent ,int number_of_tabs , const char* name, bool modal, WFlags f ): QDialog( parent, name, modal, f ) { setCaption( "Conic Type - Options" ); resize( 320, 290 ); optionsFormLayout = new QVBoxLayout( this, 11, 6 ); arrLayout1 = new QHBoxLayout( 0, 0, 6 ); textLabel1 = new QLabel( "Conic Type", this ); arrLayout1->addWidget( textLabel1 ); arrComboBox1 = new QComboBox( FALSE, this ); arrComboBox1->insertItem( "Circle" ); arrComboBox1->insertItem( "Segment" ); arrComboBox1->insertItem( "Ellipse" ); arrComboBox1->insertItem( "Parabula" ); arrComboBox1->insertItem( "Hyperbula" ); arrLayout1->addWidget( arrComboBox1 ); optionsFormLayout->addLayout( arrLayout1 ); buttonsLayout = new QHBoxLayout( 0, 0, 6 ); okPushButton = new QPushButton( "OK", this ); okPushButton->setDefault( TRUE ); buttonsLayout->addWidget( okPushButton ); cancelPushButton = new QPushButton( "Cancel", this ); buttonsLayout->addWidget( cancelPushButton ); optionsFormLayout->addLayout( buttonsLayout ); connect( okPushButton, SIGNAL( clicked() ), this, SLOT( accept() ) ); connect( cancelPushButton, SIGNAL( clicked() ), this, SLOT( reject() ) ); textLabel1->setBuddy( arrComboBox1 ); } /*! CheckForm constructor */ CheckForm::CheckForm( OverlayForm *overlay_form , QWidget* parent ): QDialog( parent ) { setCaption( "Overlay - paint intersections" ); resize( 320, 290 ); optionsFormLayout = new QVBoxLayout( this, 11, 6 ); layout = new QHBoxLayout( 0, 0, 6 ); button_group = new QVButtonGroup("Check to paint Planar Maps intersections", this); for (unsigned int i = 0; i < overlay_form->listBox2->count(); i++) { overlay_form->listBox2->setCurrentItem(i); QCheckBox *b = new QCheckBox(overlay_form->listBox2->currentText() , button_group); b->setChecked( true ); button_group->insert( b , i ); } layout->addWidget( button_group ); optionsFormLayout->addLayout( layout ); buttonsLayout = new QHBoxLayout( 0, 0, 6 ); okPushButton = new QPushButton( "OK", this ); okPushButton->setDefault( TRUE ); buttonsLayout->addWidget( okPushButton ); cancelPushButton = new QPushButton( "Cancel", this ); buttonsLayout->addWidget( cancelPushButton ); optionsFormLayout->addLayout( buttonsLayout ); connect( okPushButton, SIGNAL( clicked() ), this, SLOT( accept() ) ); connect( cancelPushButton, SIGNAL( clicked() ), this, SLOT( reject() )); } /*! FileOpenOptionsForm constructor */ FileOpenOptionsForm::FileOpenOptionsForm( bool flag ,QWidget* parent , const char* name, bool modal, WFlags f ): QDialog( parent, name, modal, f ) { setCaption( "File Open - Options" ); resize( 320, 290 ); optionsFormLayout = new QVBoxLayout( this, 11, 6 ); buttonGroup = new QButtonGroup( 3, Qt::Vertical ,"Do you want to:", this, "buttonGroup" ); b1 = new QRadioButton( buttonGroup, "b1"); b1->setText( "open file in a new tab" ); b2 = new QRadioButton( buttonGroup, "b2"); b2->setText( "open file in current tab (delete current Pm)" ); if (flag) { b3 = new QRadioButton( buttonGroup, "b3"); b3->setText( "merge file into current tab" ); } buttonGroup->setButton(0); optionsFormLayout->addWidget( buttonGroup ); buttonsLayout = new QHBoxLayout( 0, 0, 6 ); okPushButton = new QPushButton( "OK", this ); okPushButton->setDefault( TRUE ); buttonsLayout->addWidget( okPushButton ); cancelPushButton = new QPushButton( "Cancel", this ); buttonsLayout->addWidget( cancelPushButton ); optionsFormLayout->addLayout( buttonsLayout ); connect( okPushButton, SIGNAL( clicked() ), this, SLOT( accept() ) ); connect( cancelPushButton, SIGNAL( clicked() ), this, SLOT( reject() ) ); } /*! RayShootingOptionsForm constructor */ RayShootingOptionsForm::RayShootingOptionsForm( QWidget* parent , int number_of_tabs ,const char* name, bool modal, WFlags f): QDialog( parent, name, modal, f ) { setCaption( "Ray Shooting - Direction" ); resize( 320, 290 ); optionsFormLayout = new QVBoxLayout( this, 11, 6 ); arrLayout1 = new QHBoxLayout( 0, 0, 6 ); textLabel1 = new QLabel( "Direction", this ); arrLayout1->addWidget( textLabel1 ); arrComboBox1 = new QComboBox( FALSE, this ); arrComboBox1->insertItem( "Up" ); arrComboBox1->insertItem( "Down" ); arrLayout1->addWidget( arrComboBox1 ); optionsFormLayout->addLayout( arrLayout1 ); buttonsLayout = new QHBoxLayout( 0, 0, 6 ); okPushButton = new QPushButton( "OK", this ); okPushButton->setDefault( TRUE ); buttonsLayout->addWidget( okPushButton ); cancelPushButton = new QPushButton( "Cancel", this ); buttonsLayout->addWidget( cancelPushButton ); optionsFormLayout->addLayout( buttonsLayout ); connect( okPushButton, SIGNAL( clicked() ), this, SLOT( accept() ) ); connect( cancelPushButton, SIGNAL( clicked() ), this, SLOT( reject() ) ); textLabel1->setBuddy( arrComboBox1 ); } /*! PointLocationStrategyForm constructor */ PointLocationStrategyForm::PointLocationStrategyForm(QWidget* parent , int number_of_tabs ,const char* name, bool modal, WFlags f): QDialog( parent, name, modal, f ) { setCaption( "Point Location - Strategy" ); optionsFormLayout = new QVBoxLayout( this, 11, 6 ); arrLayout1 = new QHBoxLayout( 0, 0, 6 ); textLabel1 = new QLabel( "Strategy", this ); arrLayout1->addWidget( textLabel1 ); arrComboBox1 = new QComboBox( FALSE, this ); arrComboBox1->insertItem( "Naive" ); arrComboBox1->insertItem( "Simple" ); arrComboBox1->insertItem( "Trapezoiedal" ); arrComboBox1->insertItem( "Walk" ); arrLayout1->addWidget( arrComboBox1 ); optionsFormLayout->addLayout( arrLayout1 ); buttonsLayout = new QHBoxLayout( 0, 0, 6 ); okPushButton = new QPushButton( "OK", this ); okPushButton->setDefault( TRUE ); buttonsLayout->addWidget( okPushButton ); cancelPushButton = new QPushButton( "Cancel", this ); buttonsLayout->addWidget( cancelPushButton ); optionsFormLayout->addLayout( buttonsLayout ); connect( okPushButton, SIGNAL( clicked() ), this, SLOT( accept() ) ); connect( cancelPushButton, SIGNAL( clicked() ), this, SLOT( reject() ) ); textLabel1->setBuddy( arrComboBox1 ); } #include "forms.moc" #endif