Scribus Developer Documentation - API
logo-pen

Scribus Developer Documentation - API

propertiespalette.cpp

Go to the documentation of this file.
00001 /*
00002 For general Scribus (>=1.3.2) copyright and licensing information please refer
00003 to the COPYING file provided with the program. Following this notice may exist
00004 a copyright and/or license notice that predates the release of Scribus 1.3.2
00005 for which a new license (GPL+exception) is in place.
00006 */
00007 
00008 
00009 #include "propertiespalette.h"
00010 
00011 #include <QButtonGroup>
00012 #include <QCheckBox>
00013 #include <QCloseEvent>
00014 #include <QComboBox>
00015 #include <QEvent>
00016 #include <QFocusEvent>
00017 #include <QFrame>
00018 #include <QGridLayout>
00019 #include <QGroupBox>
00020 #include <QHBoxLayout>
00021 #include <QImage>
00022 #include <QKeyEvent>
00023 #include <QLabel>
00024 #include <QListView>
00025 #include <QMatrix>
00026 #include <QMenu>
00027 #include <QMessageBox>
00028 #include <QObject>
00029 #include <QPixmap>
00030 #include <QPoint>
00031 #include <QPushButton>
00032 #include <QRadioButton>
00033 #include <QRegExp>
00034 #include <QSpacerItem>
00035 #include <QSpinBox>
00036 #include <QStackedWidget>
00037 #include <QTimer>
00038 #include <QToolBox>
00039 #include <QToolTip>
00040 #include <QVBoxLayout>
00041 #include <QValidator>
00042 #include <QWidget>
00043 
00044 
00045 #include <cmath>
00046 #include "arrowchooser.h"
00047 #include "autoform.h"
00048 #include "commonstrings.h"
00049 #include "colorlistbox.h"
00050 #include "sccolorengine.h"
00051 #include "cpalette.h"
00052 #include "pageitem_textframe.h"
00053 #include "sccombobox.h"
00054 #include "scfonts.h"
00055 #include "scribus.h"
00056 #include "scribuscore.h"
00057 #include "scraction.h"
00058 #include "scribusview.h"
00059 #include "selection.h"
00060 #include "spalette.h"
00061 #include "styleselect.h"
00062 #include "tabmanager.h"
00063 #include "units.h"
00064 #include "undomanager.h"
00065 #include "util.h"
00066 #include "util_icon.h"
00067 #include "text/nlsconfig.h"
00068 #include "dasheditor.h"
00069 
00070 using namespace std;
00071 
00072 
00073 LineFormatValue::LineFormatValue() : m_Line(), m_doc(NULL), m_name() {};
00074 
00075 LineFormatValue::LineFormatValue( const multiLine& line, ScribusDoc* doc, const QString name ) : m_Line(line), m_doc(doc), m_name(name) {};
00076 
00077 LineFormatValue::LineFormatValue(const LineFormatValue& other)
00078 {
00079     m_name = other.m_name;
00080     m_Line = other.m_Line;
00081     m_doc = other.m_doc;
00082 }
00083 
00084 LineFormatValue& LineFormatValue::operator= (const LineFormatValue& other)
00085 {
00086     m_name = other.m_name;
00087     m_Line = other.m_Line;
00088     m_doc = other.m_doc;
00089     return *this;
00090 }
00091 
00092 
00093 void LineFormatItemDelegate::redraw(const QVariant& data) const  
00094 {
00095     const LineFormatValue& item(data.value<LineFormatValue>());
00096     QColor tmpf;
00097     pmap->fill(Qt::white);
00098     QPainter p;
00099     p.begin(pmap.get());
00100     for (int its = item.m_Line.size()-1; its > -1; its--)
00101     {
00102         const ScColor& col = item.m_doc->PageColors[item.m_Line[its].Color];
00103         tmpf = ScColorEngine::getDisplayColor(col, item.m_doc, item.m_Line[its].Shade);
00104         QPen pen;
00105         QList<double> m_array;
00106         if (item.m_Line[its].Dash == 1)
00107             pen.setStyle(Qt::SolidLine);
00108         else
00109         {
00110             getDashArray(item.m_Line[its].Dash, 1, m_array);
00111             pen.setDashPattern(m_array.toVector());
00112         }
00113         pen.setColor(tmpf);
00114         pen.setWidth(qMax(static_cast<int>(item.m_Line[its].Width), 1));
00115         pen.setCapStyle(static_cast<Qt::PenCapStyle>(item.m_Line[its].LineEnd));
00116         pen.setJoinStyle(static_cast<Qt::PenJoinStyle>(item.m_Line[its].LineJoin));
00117         p.setPen(pen);
00118         p.drawLine(0, 18, 37, 18);
00119     }
00120     p.end();
00121 }
00122 
00123 QString LineFormatItemDelegate::text(const QVariant& data) const
00124 {
00125     return data.toString();
00126 }
00127 
00128 NameWidget::NameWidget(QWidget* parent) : QLineEdit(parent)
00129 {
00130     setObjectName("namewidget");
00131     QRegExp rx( "\\w+" );
00132     QValidator* validator = new QRegExpValidator( rx, this );
00133     setValidator( validator );
00134 }
00135 
00136 void NameWidget::focusOutEvent(QFocusEvent *e)
00137 {
00138     emit Leaved();
00139     QLineEdit::focusOutEvent(e);
00140 }
00141 
00142 PropertiesPalette::PropertiesPalette( QWidget* parent) : ScrPaletteBase( parent, "PropertiesPalette", false, 0)
00143 {
00144     m_ScMW=0;
00145     doc=0;
00146     HaveDoc = false;
00147     HaveItem = false;
00148     RoVal = 0;
00149     m_unitRatio = 1.0;
00150     setSizePolicy( QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum));
00151 
00152     _userActionOn = false;
00153     userActionSniffer = new UserActionSniffer(this);
00154     connect(userActionSniffer, SIGNAL(actionStart()), this, SLOT(spinboxStartUserAction()));
00155     connect(userActionSniffer, SIGNAL(actionEnd()), this, SLOT(spinboxFinishUserAction()));
00156 
00157     MpalLayout = new QVBoxLayout( this );
00158     MpalLayout->setMargin(5);
00159     MpalLayout->setSpacing(1);
00160     setOrientation(Qt::Vertical);
00161     QFont f(font());
00162     f.setPointSize(f.pointSize()-1);
00163     setFont(f);
00164 
00165     TabStack = new QToolBox( this );
00166 
00167     page = new QWidget( TabStack );
00168     pageLayout = new QVBoxLayout( page );
00169     pageLayout->setMargin(0);
00170     pageLayout->setSpacing(5);
00171 
00172     NameGroup = new QGroupBox( page );
00173     NameGroupLayout = new QHBoxLayout( NameGroup );
00174     NameGroupLayout->setMargin(5);
00175     NameGroupLayout->setSpacing(4);
00176     NameGroupLayout->setAlignment( Qt::AlignTop );
00177     NameEdit = new NameWidget(NameGroup);
00178     NameEdit->setFocusPolicy(Qt::ClickFocus);
00179     NameGroupLayout->addWidget( NameEdit );
00180     pageLayout->addWidget( NameGroup );
00181 
00182     GeoGroup = new QGroupBox(page);
00183     GeoGroupLayout = new QGridLayout( GeoGroup );
00184     GeoGroupLayout->setMargin(5);
00185     GeoGroupLayout->setSpacing(4);
00186     GeoGroupLayout->setAlignment( Qt::AlignTop );
00187 
00188     Xpos = new ScrSpinBox( -3000, 3000, GeoGroup, 0 );
00189     installSniffer(Xpos);
00190     GeoGroupLayout->addWidget( Xpos, 0, 1 );
00191     Ypos = new ScrSpinBox( -3000, 3000, GeoGroup, 0 );
00192     installSniffer(Ypos);
00193     GeoGroupLayout->addWidget( Ypos, 1, 1 );
00194     Width = new ScrSpinBox( GeoGroup, 0 );
00195     installSniffer(Width);
00196     GeoGroupLayout->addWidget( Width, 2, 1 );
00197     Height = new ScrSpinBox( GeoGroup, 0 );
00198     installSniffer(Height);
00199     GeoGroupLayout->addWidget( Height, 3, 1 );
00200 
00201     xposLabel = new QLabel( "&X-Pos:", GeoGroup );
00202     xposLabel->setBuddy(Xpos);
00203     GeoGroupLayout->addWidget( xposLabel, 0, 0 );
00204     yposLabel = new QLabel( "&Y-Pos:", GeoGroup );
00205     yposLabel->setBuddy(Ypos);
00206     GeoGroupLayout->addWidget( yposLabel, 1, 0 );
00207     widthLabel = new QLabel( "&Width:", GeoGroup );
00208     widthLabel->setBuddy(Width);
00209     GeoGroupLayout->addWidget( widthLabel, 2, 0 );
00210     heightLabel = new QLabel( "&Height:", GeoGroup );
00211     heightLabel->setBuddy(Height);
00212     GeoGroupLayout->addWidget( heightLabel, 3, 0 );
00213 
00214     keepFrameWHRatioButton = new LinkButton( GeoGroup );
00215     keepFrameWHRatioButton->setCheckable( true );
00216     keepFrameWHRatioButton->setAutoRaise( true );
00217     keepFrameWHRatioButton->setMaximumSize( QSize( 15, 32767 ) );
00218     keepFrameWHRatioButton->setChecked(true);
00219     GeoGroupLayout->addWidget( keepFrameWHRatioButton, 2, 2, 2, 1 );
00220     Rot = new ScrSpinBox( GeoGroup, 6);
00221     Rot->setWrapping( true );
00222     installSniffer(Rot);
00223     rotationLabel = new QLabel( "&Rotation:", GeoGroup );
00224     rotationLabel->setBuddy(Rot);
00225     GeoGroupLayout->addWidget( rotationLabel, 4, 0 );
00226     GeoGroupLayout->addWidget( Rot, 4, 1 );
00227     basepointLabel = new QLabel( "Basepoint:", GeoGroup );
00228     GeoGroupLayout->addWidget( basepointLabel, 5, 0 );
00229     RotationGroup = new QButtonGroup( GeoGroup );
00230     Layout12 = new QGridLayout;
00231     Layout12->setMargin(0);
00232     Layout12->setSpacing(0);
00233     TopLeft = new QRadioButton( GeoGroup );
00234     RotationGroup->addButton(TopLeft, 0);
00235     TopLeft->setText( "" );
00236     TopLeft->setChecked( true );
00237     TopLeft->setLayoutDirection(Qt::RightToLeft);
00238     TopLeft->setMaximumSize( TopLeft->iconSize() );
00239     Layout12->addWidget( TopLeft, 0, 0, Qt::AlignCenter );
00240     Line1 = new QFrame( GeoGroup);
00241     Line1->setMinimumSize( QSize( 20, 4 ) );
00242     Line1->setMaximumSize( QSize( 20, 4 ) );
00243     Line1->setFrameShape( QFrame::HLine );
00244     Line1->setFrameShadow( QFrame::Plain );
00245     Line1->setLineWidth( 3 );
00246     Line1->setFrameShape( QFrame::HLine );
00247     Layout12->addWidget( Line1, 0, 1, Qt::AlignCenter );
00248     TopRight = new QRadioButton( GeoGroup );
00249     RotationGroup->addButton(TopRight, 1);
00250     TopRight->setText( "" );
00251     TopRight->setMaximumSize( TopRight->iconSize() );
00252     Layout12->addWidget( TopRight, 0, 2, Qt::AlignCenter );
00253     Line2 = new QFrame( GeoGroup );
00254     Line2->setMinimumSize( QSize( 4, 20 ) );
00255     Line2->setMaximumSize( QSize( 4, 20 ) );
00256     Line2->setFrameShape( QFrame::VLine );
00257     Line2->setFrameShadow( QFrame::Plain );
00258     Line2->setLineWidth( 3 );
00259     Line2->setFrameShape( QFrame::VLine );
00260     Layout12->addWidget( Line2, 1, 0, Qt::AlignCenter );
00261     Center = new QRadioButton( GeoGroup );
00262     RotationGroup->addButton(Center, 2);
00263     Center->setText( "" );
00264     Center->setMaximumSize( Center->iconSize() );
00265     Layout12->addWidget( Center, 1, 1, Qt::AlignCenter );
00266     Line4 = new QFrame( GeoGroup );
00267     Line4->setMinimumSize( QSize( 4, 20 ) );
00268     Line4->setMaximumSize( QSize( 4, 20 ) );
00269     Line4->setFrameShadow( QFrame::Plain );
00270     Line4->setLineWidth( 3 );
00271     Line4->setFrameShape( QFrame::VLine );
00272     Layout12->addWidget( Line4, 1, 2, Qt::AlignCenter );
00273     BottomLeft = new QRadioButton( GeoGroup );
00274     RotationGroup->addButton(BottomLeft, 3);
00275     BottomLeft->setText( "" );
00276     BottomLeft->setLayoutDirection(Qt::RightToLeft);
00277     BottomLeft->setMaximumSize( BottomLeft->iconSize() );
00278     Layout12->addWidget( BottomLeft, 2, 0, Qt::AlignCenter );
00279     Line5 = new QFrame( GeoGroup );
00280     Line5->setMinimumSize( QSize( 20, 4 ) );
00281     Line5->setMaximumSize( QSize( 20, 4 ) );
00282     Line5->setFrameShape( QFrame::HLine );
00283     Line5->setFrameShadow( QFrame::Plain );
00284     Line5->setLineWidth( 3 );
00285     Line5->setFrameShape( QFrame::HLine );
00286     Layout12->addWidget( Line5, 2, 1, Qt::AlignCenter );
00287     BottomRight = new QRadioButton( GeoGroup );
00288     RotationGroup->addButton(BottomRight, 4);
00289     BottomRight->setText( "" );
00290     BottomRight->setMaximumSize( BottomRight->iconSize() );
00291     Layout12->addWidget( BottomRight, 2, 2, Qt::AlignCenter );
00292     GeoGroupLayout->addLayout( Layout12, 5, 1, 1, 1, Qt::AlignLeft);
00293     pageLayout->addWidget( GeoGroup );
00294 
00295     layout60 = new QHBoxLayout;
00296     layout60->setMargin(0);
00297     layout60->setSpacing(5);
00298 
00299     LayerGroup = new QGroupBox( "Level", page );
00300     LayerGroupLayout = new QGridLayout( LayerGroup );
00301     LayerGroupLayout->setSpacing( 4 );
00302     LayerGroupLayout->setMargin( 5 );
00303     LayerGroupLayout->setAlignment( Qt::AlignTop );
00304     Zup = new QToolButton( LayerGroup );
00305     Zup->setMaximumSize( QSize( 22, 22 ) );
00306     Zup->setIcon(QIcon(loadIcon("16/go-up.png")));
00307     LayerGroupLayout->addWidget( Zup, 0, 0 );
00308     ZDown = new QToolButton( LayerGroup );
00309     ZDown->setMaximumSize( QSize( 22, 22 ) );
00310     ZDown->setIcon(QIcon(loadIcon("16/go-down.png")));
00311     LayerGroupLayout->addWidget( ZDown, 1, 0 );
00312     ZTop = new QToolButton( LayerGroup );
00313     ZTop->setMaximumSize( QSize( 22, 22 ) );
00314     ZTop->setIcon(QIcon(loadIcon("16/go-top.png")));
00315     LayerGroupLayout->addWidget( ZTop, 0, 1 );
00316     ZBottom = new QToolButton( LayerGroup );
00317     ZBottom->setMaximumSize( QSize( 22, 22 ) );
00318     ZBottom->setIcon(QIcon(loadIcon("16/go-bottom.png")));
00319     LayerGroupLayout->addWidget( ZBottom, 1, 1 );
00320     LevelTxt = new QLabel( "  1", LayerGroup );
00321     LevelTxt->setAlignment( Qt::AlignCenter );
00322     LayerGroupLayout->addWidget( LevelTxt, 0, 2, 2, 1 );
00323 
00324     layout60->addWidget( LayerGroup );
00325     QSpacerItem* spacer2 = new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum );
00326     layout60->addItem( spacer2 );
00327 
00328     Layout44 = new QGridLayout;
00329     Layout44->setSpacing( 4 );
00330     Layout44->setMargin( 5 );
00331 
00332     DoGroup = new QToolButton( page );
00333     DoGroup->setIcon(QIcon(loadIcon("group.png")));
00334     Layout44->addWidget( DoGroup, 0, 0 );
00335     DoUnGroup = new QToolButton( page );
00336     DoUnGroup->setIcon(QIcon(loadIcon("ungroup.png")));
00337     Layout44->addWidget( DoUnGroup, 1, 0 );
00338 
00339     FlipH = new QToolButton( page );
00340     FlipH->setIcon(QIcon(loadIcon("16/flip-object-horizontal.png")));
00341     FlipH->setCheckable( true );
00342     Layout44->addWidget( FlipH, 0, 1 );
00343     FlipV = new QToolButton( page );
00344     FlipV->setIcon(QIcon(loadIcon("16/flip-object-vertical.png")));
00345     FlipV->setCheckable( true );
00346     Layout44->addWidget( FlipV, 1, 1 );
00347     Locked = new QToolButton( page );
00348     Locked->setCheckable( true );
00349     QIcon a = QIcon();
00350     a.addPixmap(loadIcon("16/lock.png"), QIcon::Normal, QIcon::On);
00351     a.addPixmap(loadIcon("16/lock-unlocked.png"), QIcon::Normal, QIcon::Off);
00352     Locked->setIcon(a);
00353     Layout44->addWidget( Locked, 0, 2 );
00354     NoPrint = new QToolButton( page );
00355     NoPrint->setCheckable( true );
00356     QIcon a2 = QIcon();
00357     a2.addPixmap(loadIcon("NoPrint.png"), QIcon::Normal, QIcon::On);
00358     a2.addPixmap(loadIcon("16/document-print.png"), QIcon::Normal, QIcon::Off);
00359     NoPrint->setIcon(a2);
00360     Layout44->addWidget( NoPrint, 1, 2 );
00361     NoResize = new QToolButton( page );
00362     NoResize->setCheckable( true );
00363     QIcon a3 = QIcon();
00364     a3.addPixmap(loadIcon("framenoresize.png"), QIcon::Normal, QIcon::On);
00365     a3.addPixmap(loadIcon("frameresize.png"), QIcon::Normal, QIcon::Off);
00366     NoResize->setIcon(a3);
00367     Layout44->addWidget( NoResize, 0, 3 );
00368     layout60->addLayout( Layout44 );
00369 
00370     pageLayout->addLayout( layout60 );
00371 
00372     QSpacerItem* spacer13 = new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding );
00373     pageLayout->addItem( spacer13 );
00374     idXYZItem = TabStack->addItem( page, "X, Y, &Z" );
00375 
00376     page_2 = new QWidget( TabStack );
00377     pageLayout_2 = new QVBoxLayout( page_2 );
00378     pageLayout_2->setSpacing( 5 );
00379     pageLayout_2->setMargin( 0 );
00380 
00381     ShapeGroup = new QGroupBox( page_2 );
00382     ShapeGroupLayout = new QHBoxLayout( ShapeGroup );
00383     ShapeGroupLayout->setSpacing( 2 );
00384     ShapeGroupLayout->setMargin( 0 );
00385     ShapeGroupLayout->setAlignment( Qt::AlignTop );
00386     SRect = new QLabel( "Shape:", ShapeGroup );
00387     ShapeGroupLayout->addWidget( SRect );
00388     SCustom = new Autoforms( ShapeGroup );
00389     ShapeGroupLayout->addWidget( SCustom );
00390 
00391     EditShape = new QToolButton( ShapeGroup );
00392 //  EditShape->setSizePolicy(QSizePolicy(static_cast<QSizePolicy::Policy>(5), static_cast<QSizePolicy::Policy>(5)));
00393     ShapeGroupLayout->addWidget( EditShape );
00394     pageLayout_2->addWidget( ShapeGroup );
00395 
00396     Layout13 = new QHBoxLayout;
00397     Layout13->setSpacing( 2 );
00398     Layout13->setMargin( 0 );
00399 
00400     RoundRect = new ScrSpinBox( page_2, 0 );
00401     rndcornersLabel = new QLabel( "R&ound\nCorners:", page_2 );
00402     rndcornersLabel->setBuddy(RoundRect);
00403     Layout13->addWidget( rndcornersLabel );
00404     Layout13->addWidget( RoundRect );
00405     pageLayout_2->addLayout( Layout13 );
00406 
00407     textFlowOptions = new QGroupBox( page_2 );
00408     textFlowOptionsLayout = new QVBoxLayout( textFlowOptions );
00409     textFlowOptionsLayout->setSpacing( 5 );
00410     textFlowOptionsLayout->setMargin( 5 );
00411     textFlowOptionsLayout->setAlignment( Qt::AlignTop );
00412     textFlowDisabled = new QToolButton( textFlowOptions );
00413     textFlowDisabled->setCheckable( true );
00414     textFlowDisabled->setAutoExclusive(true);
00415     textFlowDisabled->setToolButtonStyle( Qt::ToolButtonTextBesideIcon );
00416     textFlowDisabled->setText( "Disabled" );
00417     textFlowDisabled->setIcon(QIcon(loadIcon("flow-none.png")));
00418     textFlowOptionsLayout->addWidget( textFlowDisabled );
00419     textFlowUsesFrameShape  = new QToolButton( textFlowOptions );
00420     textFlowUsesFrameShape->setCheckable( true );
00421     textFlowUsesFrameShape->setAutoExclusive(true);
00422     textFlowUsesFrameShape->setToolButtonStyle( Qt::ToolButtonTextBesideIcon );
00423     textFlowUsesFrameShape->setText( "Use &Frame Shape" );
00424     textFlowUsesFrameShape->setIcon(QIcon(loadIcon("flow-frame.png")));
00425     textFlowOptionsLayout->addWidget( textFlowUsesFrameShape );
00426     textFlowUsesBoundingBox = new QToolButton( textFlowOptions );
00427     textFlowUsesBoundingBox->setCheckable( true );
00428     textFlowUsesBoundingBox->setAutoExclusive(true);
00429     textFlowUsesBoundingBox->setToolButtonStyle( Qt::ToolButtonTextBesideIcon );
00430     textFlowUsesBoundingBox->setText( "Use &Bounding Box" );
00431     textFlowUsesBoundingBox->setIcon(QIcon(loadIcon("flow-bounding.png")));
00432     textFlowOptionsLayout->addWidget( textFlowUsesBoundingBox );
00433     textFlowUsesContourLine = new QToolButton( textFlowOptions );
00434     textFlowUsesContourLine->setCheckable( true );
00435     textFlowUsesContourLine->setAutoExclusive(true);
00436     textFlowUsesContourLine->setToolButtonStyle( Qt::ToolButtonTextBesideIcon );
00437     textFlowUsesContourLine->setText( "&Use Contour Line" );
00438     textFlowUsesContourLine->setIcon(QIcon(loadIcon("flow-contour.png")));
00439     textFlowOptionsLayout->addWidget( textFlowUsesContourLine );
00440     textFlowUsesImageClipping = new QToolButton( textFlowOptions );
00441     textFlowUsesImageClipping->setCheckable( true );
00442     textFlowUsesImageClipping->setAutoExclusive(true);
00443     textFlowUsesImageClipping->setToolButtonStyle( Qt::ToolButtonTextBesideIcon );
00444     textFlowUsesImageClipping->setText( "Use Image Clip Path" );
00445     textFlowUsesImageClipping->setIcon(QIcon(loadIcon("flow-contour.png")));
00446     textFlowOptionsLayout->addWidget( textFlowUsesImageClipping );
00447     pageLayout_2->addWidget( textFlowOptions  );
00448     textFlowDisabled->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
00449     textFlowUsesFrameShape->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
00450     textFlowUsesBoundingBox->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
00451     textFlowUsesContourLine->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
00452     textFlowUsesImageClipping->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
00453     textFlowOptionsB = new QButtonGroup( page_2 );
00454     textFlowOptionsB->addButton(textFlowDisabled, 0);
00455     textFlowOptionsB->addButton(textFlowUsesFrameShape, 1);
00456     textFlowOptionsB->addButton(textFlowUsesBoundingBox, 2);
00457     textFlowOptionsB->addButton(textFlowUsesContourLine, 3);
00458     textFlowOptionsB->addButton(textFlowUsesImageClipping, 4);
00459 
00460     TabStack2 = new QStackedWidget( page_2 );
00461 
00462     page_2a = new QWidget( TabStack2 );
00463     pageLayout_2a = new QVBoxLayout( page_2a );
00464     pageLayout_2a->setSpacing( 5 );
00465     pageLayout_2a->setMargin( 0 );
00466     Distance = new QGroupBox( page_2a );
00467     DistanceLayout = new QGridLayout( Distance );
00468     DistanceLayout->setSpacing( 2 );
00469     DistanceLayout->setMargin( 5 );
00470     DistanceLayout->setAlignment( Qt::AlignTop );
00471 
00472     DCol = new QSpinBox(Distance );
00473     DCol->setMaximum( 3000 );
00474     DCol->setMinimum( 1 );
00475     columnsLabel = new QLabel( "Colu&mns:", Distance );
00476     columnsLabel->setBuddy(DCol);
00477     DistanceLayout->addWidget( columnsLabel, 0, 0 );
00478     DistanceLayout->addWidget( DCol, 0, 1 );
00479 
00480     dGap = new ScrSpinBox( 0, 300, Distance, 0 );
00481 //  colgapLabel = new LabelButton( Distance, "&Gap:", "&Width:");
00482 //  colgapLabel->setBuddy(dGap);
00483     colgapLabel = new ScComboBox( Distance );
00484     DistanceLayout->addWidget( colgapLabel, 1, 0, Qt::AlignLeft );
00485     DistanceLayout->addWidget( dGap, 1, 1 );
00486 
00487     DTop = new ScrSpinBox( 0, 300, Distance, 0 );
00488     topLabel = new QLabel( "To&p:", Distance );
00489     topLabel->setBuddy(DTop);
00490     DistanceLayout->addWidget( topLabel, 2, 0 );
00491     DistanceLayout->addWidget( DTop, 2, 1 );
00492 
00493     DBottom = new ScrSpinBox( 0, 300, Distance, 0 );
00494     bottomLabel = new QLabel( "&Bottom:", Distance );
00495     bottomLabel->setBuddy(DBottom);
00496     DistanceLayout->addWidget( bottomLabel, 3, 0 );
00497     DistanceLayout->addWidget( DBottom, 3, 1 );
00498 
00499     DLeft = new ScrSpinBox( 0, 300, Distance, 0 );
00500     leftLabel = new QLabel( "&Left:", Distance );
00501     leftLabel->setBuddy(DLeft);
00502     DistanceLayout->addWidget( leftLabel, 4, 0 );
00503     DistanceLayout->addWidget( DLeft, 4, 1 );
00504 
00505     DRight = new ScrSpinBox( 0, 300, Distance, 0 );
00506     rightLabel = new QLabel( "&Right:", Distance );
00507     rightLabel->setBuddy(DRight);
00508     DistanceLayout->addWidget( rightLabel, 5, 0 );
00509     DistanceLayout->addWidget( DRight, 5, 1 );
00510 
00511     TabsButton = new QToolButton( Distance );
00512     TabsButton->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
00513     DistanceLayout->addWidget( TabsButton, 6, 0, 1, 2 );
00514     pageLayout_2a->addWidget(Distance);
00515     TabStack2->addWidget( page_2a );
00516 
00517     page_2b = new QWidget( TabStack2 );
00518     pageLayout_2b = new QVBoxLayout( page_2b );
00519     pageLayout_2b->setSpacing( 5 );
00520     pageLayout_2b->setMargin( 0 );
00521     Distance2 = new QGroupBox( "Path Text Properties", page_2b );
00522     DistanceLayout2 = new QGridLayout( Distance2 );
00523     DistanceLayout2->setSpacing( 2 );
00524     DistanceLayout2->setMargin( 5 );
00525     DistanceLayout2->setAlignment( Qt::AlignTop );
00526 
00527     pathTextType = new ScComboBox( Distance2 );
00528     DistanceLayout2->addWidget( pathTextType, 0, 1);
00529     pathTextTypeLabel = new QLabel( "Type:", Distance2 );
00530     DistanceLayout2->addWidget( pathTextTypeLabel, 0, 0);
00531     
00532     startoffsetLabel = new QLabel( "Start Offset:", Distance2 );
00533     DistanceLayout2->addWidget( startoffsetLabel, 1, 0);
00534     Dist = new ScrSpinBox( 0, 30000, Distance2, 0 );
00535     Dist->setSingleStep(10);
00536     DistanceLayout2->addWidget( Dist, 1, 1);
00537 
00538     distfromcurveLabel = new QLabel( "Distance from Curve:", Distance2 );
00539     DistanceLayout2->addWidget( distfromcurveLabel, 2, 0);
00540     LineW = new ScrSpinBox( -300, 300, Distance2, 0 );
00541     LineW->setSingleStep(10);
00542     DistanceLayout2->addWidget( LineW, 2, 1);
00543 
00544     flippedPathText = new QCheckBox( Distance2 );
00545     flippedPathText->setText( "Flip Text" );
00546     DistanceLayout2->addWidget( flippedPathText, 3, 0, 1, 2 );
00547 
00548     showcurveCheckBox = new QCheckBox( Distance2 );
00549     showcurveCheckBox->setText( "Show Curve" );
00550     DistanceLayout2->addWidget( showcurveCheckBox, 4, 0, 1, 2 );
00551 
00552     pageLayout_2b->addWidget(Distance2);
00553     TabStack2->addWidget( page_2b );
00554 
00555     page_2c = new QWidget( TabStack2 );
00556     pageLayout_2c = new QVBoxLayout( page_2c );
00557     pageLayout_2c->setSpacing( 5 );
00558     pageLayout_2c->setMargin( 0 );
00559     Distance3 = new QGroupBox( page_2c );
00560     DistanceLayout3 = new QVBoxLayout( Distance3 );
00561     DistanceLayout3->setSpacing( 2 );
00562     DistanceLayout3->setMargin( 5 );
00563     DistanceLayout3->setAlignment( Qt::AlignTop );
00564     EvenOdd = new QRadioButton( "Even-Odd", Distance3 );
00565     DistanceLayout3->addWidget( EvenOdd );
00566     NonZero = new QRadioButton( "Non Zero", Distance3 );
00567     DistanceLayout3->addWidget( NonZero );
00568     EvenOdd->setChecked( true );
00569     Distance3->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
00570     pageLayout_2c->addWidget(Distance3);
00571     TabStack2->addWidget( page_2c );
00572 
00573     pageLayout_2->addWidget( TabStack2 );
00574 
00575     QSpacerItem* spacer6 = new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding );
00576     pageLayout_2->addItem( spacer6 );
00577     idShapeItem = TabStack->addItem( page_2, "&Shape" );
00578 
00579     page_group = new QWidget(TabStack);
00580     page_group_layout = new QVBoxLayout( page_group );
00581     page_group_layout->setSpacing( 5 );
00582     page_group_layout->setMargin( 0 );
00583 
00584     ShapeGroup2 = new QGroupBox( page_group );
00585     ShapeGroupLayout2 = new QHBoxLayout( ShapeGroup2 );
00586     ShapeGroupLayout2->setSpacing( 2 );
00587     ShapeGroupLayout2->setMargin( 0 );
00588     ShapeGroupLayout2->setAlignment( Qt::AlignTop );
00589     SRect2 = new QLabel( "Shape:", ShapeGroup2 );
00590     ShapeGroupLayout2->addWidget( SRect2 );
00591     SCustom2 = new Autoforms( ShapeGroup2 );
00592     ShapeGroupLayout2->addWidget( SCustom2 );
00593     EditShape2 = new QToolButton( ShapeGroup2 );
00594 //  EditShape2->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
00595     ShapeGroupLayout2->addWidget( EditShape2 );
00596     page_group_layout->addWidget( ShapeGroup2 );
00597 
00598     textFlowOptions2 = new QGroupBox( page_group );
00599     textFlowOptionsLayout2 = new QVBoxLayout( textFlowOptions2 );
00600     textFlowOptionsLayout2->setSpacing( 5 );
00601     textFlowOptionsLayout2->setMargin( 5 );
00602     textFlowOptionsLayout2->setAlignment( Qt::AlignTop );
00603     textFlowDisabled2 = new QToolButton( textFlowOptions2 );
00604     textFlowDisabled2->setCheckable( true );
00605     textFlowDisabled2->setAutoExclusive(true);
00606     textFlowDisabled2->setToolButtonStyle( Qt::ToolButtonTextBesideIcon );
00607     textFlowDisabled2->setText( "Disabled" );
00608     textFlowDisabled2->setIcon(QIcon(loadIcon("flow-none.png")));
00609     textFlowOptionsLayout2->addWidget( textFlowDisabled2 );
00610     textFlowUsesFrameShape2  = new QToolButton( textFlowOptions2 );
00611     textFlowUsesFrameShape2->setCheckable( true );
00612     textFlowUsesFrameShape2->setAutoExclusive(true);
00613     textFlowUsesFrameShape2->setToolButtonStyle( Qt::ToolButtonTextBesideIcon );
00614     textFlowUsesFrameShape2->setText( "Use &Frame Shape" );
00615     textFlowUsesFrameShape2->setIcon(QIcon(loadIcon("flow-frame.png")));
00616     textFlowOptionsLayout2->addWidget( textFlowUsesFrameShape2 );
00617     textFlowUsesBoundingBox2 = new QToolButton( textFlowOptions2 );
00618     textFlowUsesBoundingBox2->setCheckable( true );
00619     textFlowUsesBoundingBox2->setAutoExclusive(true);
00620     textFlowUsesBoundingBox2->setToolButtonStyle( Qt::ToolButtonTextBesideIcon );
00621     textFlowUsesBoundingBox2->setText( "Use &Bounding Box" );
00622     textFlowUsesBoundingBox2->setIcon(QIcon(loadIcon("flow-bounding.png")));
00623     textFlowOptionsLayout2->addWidget( textFlowUsesBoundingBox2 );
00624     textFlowUsesContourLine2 = new QToolButton( textFlowOptions2 );
00625     textFlowUsesContourLine2->setCheckable( true );
00626     textFlowUsesContourLine2->setAutoExclusive(true);
00627     textFlowUsesContourLine2->setToolButtonStyle( Qt::ToolButtonTextBesideIcon );
00628     textFlowUsesContourLine2->setText( "&Use Contour Line" );
00629     textFlowUsesContourLine2->setIcon(QIcon(loadIcon("flow-contour.png")));
00630     textFlowOptionsLayout2->addWidget( textFlowUsesContourLine2 );
00631     textFlowUsesImageClipping2 = new QToolButton( textFlowOptions2 );
00632     textFlowUsesImageClipping2->setCheckable( true );
00633     textFlowUsesImageClipping2->setAutoExclusive(true);
00634     textFlowUsesImageClipping2->setToolButtonStyle( Qt::ToolButtonTextBesideIcon );
00635     textFlowUsesImageClipping2->setText( "Use Image Clip Path" );
00636     textFlowUsesImageClipping2->setIcon(QIcon(loadIcon("flow-contour.png")));
00637     textFlowOptionsLayout2->addWidget( textFlowUsesImageClipping2 );
00638     page_group_layout->addWidget( textFlowOptions2  );
00639     textFlowDisabled2->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
00640     textFlowUsesFrameShape2->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
00641     textFlowUsesBoundingBox2->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
00642     textFlowUsesContourLine2->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
00643     textFlowUsesImageClipping2->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));
00644     textFlowOptionsB2 = new QButtonGroup( page_group );
00645     textFlowOptionsB2->addButton(textFlowDisabled2, 0);
00646     textFlowOptionsB2->addButton(textFlowUsesFrameShape2, 1);
00647     textFlowOptionsB2->addButton(textFlowUsesBoundingBox2, 2);
00648     textFlowOptionsB2->addButton(textFlowUsesContourLine2, 3);
00649     textFlowOptionsB2->addButton(textFlowUsesImageClipping2, 4);
00650 
00651     TransGroup = new QGroupBox( tr( "Transparency Settings" ), page_group );
00652     Layout1t = new QGridLayout( TransGroup );
00653     Layout1t->setAlignment( Qt::AlignTop );
00654     Layout1t->setSpacing( 5 );
00655     Layout1t->setMargin( 5 );
00656     TransTxt = new QLabel( TransGroup );
00657     Layout1t->addWidget( TransTxt, 0, 0 );
00658     TransSpin = new QSpinBox( TransGroup );
00659     TransSpin->setMinimum(0);
00660     TransSpin->setMaximum(100);
00661     TransSpin->setSingleStep(10);
00662     TransSpin->setValue(100);
00663     Layout1t->addWidget(TransSpin, 0, 1);
00664     TransTxt2 =