#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<int>(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<Qt_widget_base_tab *> (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
syntax highlighted by Code2HTML, v. 0.9.1