diff --git a/glabels/MainWindow.cpp b/glabels/MainWindow.cpp index d1745f3..0a46162 100644 --- a/glabels/MainWindow.cpp +++ b/glabels/MainWindow.cpp @@ -54,6 +54,7 @@ namespace glabels /// Constructor /// MainWindow::MainWindow() + : mModel(0) { mView = new View(); mObjectEditor = new ObjectEditor(); @@ -66,7 +67,6 @@ namespace glabels QWidget* editorPage = createEditorPage(); setCentralWidget( editorPage ); - mModel = 0; setDocVerbsEnabled( false ); setPasteVerbsEnabled( false ); @@ -103,6 +103,7 @@ namespace glabels { mModel = label; mView->setModel( mModel ); + mObjectEditor->setModel( mModel ); setDocVerbsEnabled( true ); setSelectionVerbsEnabled( false ); diff --git a/glabels/ObjectEditor.cpp b/glabels/ObjectEditor.cpp index 52f125b..4a57787 100644 --- a/glabels/ObjectEditor.cpp +++ b/glabels/ObjectEditor.cpp @@ -21,6 +21,13 @@ #include "ObjectEditor.h" +#include "LabelModel.h" +#include "LabelModelObject.h" +#include "LabelModelBoxObject.h" + +#include + + namespace glabels { @@ -28,6 +35,7 @@ namespace glabels /// Constructor /// ObjectEditor::ObjectEditor( QWidget *parent ) + : mModel(0), mObject(0) { setupUi( this ); @@ -35,7 +43,17 @@ namespace glabels hidePages(); } + + void ObjectEditor::setModel( LabelModel* model ) + { + mModel = model; + connect( mModel, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()) ); + + onSelectionChanged(); + } + + void ObjectEditor::hidePages() { notebook->removeTab( notebook->indexOf(textPage) ); @@ -45,4 +63,91 @@ namespace glabels notebook->removeTab( notebook->indexOf(posSizePage) ); notebook->removeTab( notebook->indexOf(shadowPage) ); } + + + void ObjectEditor::loadLineFillPage() + { + lineWidthSpin->setValue( mObject->lineWidth() ); + lineColorButton->setColorNode( mObject->lineColorNode() ); + fillColorButton->setColorNode( mObject->fillColorNode() ); + } + + + void ObjectEditor::onSelectionChanged() + { + if ( mObject ) + { + disconnect( mObject, 0, this, 0 ); + } + + hidePages(); + + if ( mModel->isSelectionAtomic() ) + { + mObject = mModel->getFirstSelectedObject(); + + if ( dynamic_cast(mObject) ) + { + titleImageLabel->setPixmap( QPixmap(":icons/24x24/actions/glabels-box.png") ); + titleLabel->setText( "Box object properties" ); + + notebook->addTab( lineFillPage, "line/fill" ); + notebook->addTab( posSizePage, "position/size" ); + notebook->addTab( shadowPage, "shadow" ); + + sizeRectFrame->setVisible( true ); + sizeResetImageButton->setVisible( false ); + sizeLineFrame->setVisible( false ); + + loadLineFillPage(); + + setEnabled( true ); + } + else + { + Q_ASSERT_X( false, "ObjectEditor::onSelectionChanged", "Invalid object" ); + } + + connect( mObject, SIGNAL(changed()), this, SLOT(onObjectChanged()) ); + connect( mObject, SIGNAL(moved()), this, SLOT(onObjectMoved()) ); + } + else + { + mObject = 0; + + titleImageLabel->setPixmap( QPixmap(":icons/24x24/actions/glabels-object-properties.png") ); + titleLabel->setText( "Object properties" ); + setEnabled( false ); + } + } + + + void ObjectEditor::onObjectChanged() + { + qDebug() << "Object changed."; + } + + + void ObjectEditor::onObjectMoved() + { + qDebug() << "Object moved."; + } + + + void ObjectEditor::onLineControlsChanged() + { + mObject->setLineWidth( lineWidthSpin->value() ); + } + + + void ObjectEditor::onFillControlsChanged() + { + } + + + void ObjectEditor::onChanged() + { + qDebug() << "Form changed."; + } + } diff --git a/glabels/ObjectEditor.h b/glabels/ObjectEditor.h index bbdd938..548eda8 100644 --- a/glabels/ObjectEditor.h +++ b/glabels/ObjectEditor.h @@ -26,6 +26,9 @@ namespace glabels { + class LabelModel; // Forward reference + class LabelModelObject; // Forward reference + /// /// Object Editor Widget @@ -43,8 +46,9 @@ namespace glabels ///////////////////////////////// - // Accessors + // Public methods ///////////////////////////////// + void setModel( LabelModel* model ); ///////////////////////////////// @@ -52,13 +56,27 @@ namespace glabels ///////////////////////////////// private: void hidePages(); + void loadLineFillPage(); ///////////////////////////////// // Slots ///////////////////////////////// private slots: + void onSelectionChanged(); + void onObjectChanged(); + void onObjectMoved(); + void onLineControlsChanged(); + void onFillControlsChanged(); + void onChanged(); + + ///////////////////////////////// + // Private data + ///////////////////////////////// + private: + LabelModel* mModel; + LabelModelObject* mObject; }; diff --git a/glabels/ui/ObjectEditor.ui b/glabels/ui/ObjectEditor.ui index 2f68777..3b510d7 100644 --- a/glabels/ui/ObjectEditor.ui +++ b/glabels/ui/ObjectEditor.ui @@ -7,7 +7,7 @@ 0 0 400 - 861 + 853 @@ -35,7 +35,7 @@ - + 0 @@ -51,7 +51,7 @@ - + Sans Serif @@ -70,7 +70,7 @@ - 5 + 3 @@ -419,7 +419,7 @@ 20 - 150 + 142 @@ -492,7 +492,7 @@ 20 - 356 + 352 @@ -767,7 +767,7 @@ 20 - 654 + 646 @@ -966,7 +966,7 @@ 20 - 578 + 570 @@ -1354,7 +1354,7 @@ 20 - 583 + 575 @@ -1370,15 +1370,700 @@ glabels::ColorButton QPushButton
ColorButton.h
+ + colorChanged() + glabels::FieldButton QPushButton
FieldButton.h
+ + keySelected() +
- + + + textFontFamilyCombo + currentIndexChanged(int) + ObjectEditor + onChanged() + + + 254 + 113 + + + 397 + 119 + + + + + textFontSizeSpin + valueChanged(double) + ObjectEditor + onChanged() + + + 128 + 154 + + + 398 + 159 + + + + + textFontBoldToggle + toggled(bool) + ObjectEditor + onChanged() + + + 125 + 183 + + + 396 + 185 + + + + + textFontItalicToggle + toggled(bool) + ObjectEditor + onChanged() + + + 172 + 200 + + + 396 + 212 + + + + + textFontUnderlineToggle + toggled(bool) + ObjectEditor + onChanged() + + + 223 + 202 + + + 395 + 247 + + + + + textColorButton + colorChanged() + ObjectEditor + onChanged() + + + 134 + 237 + + + 396 + 281 + + + + + textHAlignLeftToggle + toggled(bool) + ObjectEditor + onChanged() + + + 154 + 310 + + + 396 + 309 + + + + + textHAlignCenterToggle + toggled(bool) + ObjectEditor + onChanged() + + + 208 + 318 + + + 398 + 334 + + + + + textHAlignRightToggle + toggled(bool) + ObjectEditor + onChanged() + + + 249 + 318 + + + 395 + 367 + + + + + textVAlignTopToggle + toggled(bool) + ObjectEditor + onChanged() + + + 161 + 357 + + + 393 + 396 + + + + + textVAlignMiddleToggle + toggled(bool) + ObjectEditor + onChanged() + + + 209 + 352 + + + 396 + 423 + + + + + textVAlignBottomToggle + toggled(bool) + ObjectEditor + onChanged() + + + 267 + 360 + + + 397 + 450 + + + + + textLineSpacingSpin + valueChanged(double) + ObjectEditor + onChanged() + + + 149 + 390 + + + 394 + 485 + + + + + textEdit + textChanged() + ObjectEditor + onChanged() + + + 271 + 538 + + + 394 + 543 + + + + + textInsertFieldButton + keySelected() + ObjectEditor + onChanged() + + + 215 + 652 + + + 396 + 638 + + + + + barcodeTypeCombo + currentIndexChanged(int) + ObjectEditor + onChanged() + + + 162 + 113 + + + 394 + 114 + + + + + barcodeShowTextCheck + toggled(bool) + ObjectEditor + onChanged() + + + 172 + 151 + + + 397 + 145 + + + + + barcodeChecksumCheck + toggled(bool) + ObjectEditor + onChanged() + + + 160 + 175 + + + 5 + 174 + + + + + barcodeColorButton + colorChanged() + ObjectEditor + onChanged() + + + 125 + 210 + + + 1 + 211 + + + + + barcodeLiteralRadio + toggled(bool) + ObjectEditor + onChanged() + + + 55 + 277 + + + 0 + 271 + + + + + barcodeKeyRadio + toggled(bool) + ObjectEditor + onChanged() + + + 57 + 387 + + + 2 + 391 + + + + + barcodeTextEdit + textChanged() + ObjectEditor + onChanged() + + + 333 + 299 + + + 0 + 312 + + + + + barcodeDigitsSpin + valueChanged(int) + ObjectEditor + onChanged() + + + 206 + 446 + + + 393 + 476 + + + + + imageFileRadio + toggled(bool) + ObjectEditor + onChanged() + + + 47 + 118 + + + 0 + 118 + + + + + imageKeyRadio + toggled(bool) + ObjectEditor + onChanged() + + + 42 + 151 + + + 0 + 152 + + + + + imageFieldButton + keySelected() + ObjectEditor + onChanged() + + + 180 + 158 + + + 4 + 203 + + + + + lineWidthSpin + valueChanged(double) + ObjectEditor + onLineControlsChanged() + + + 119 + 117 + + + 392 + 110 + + + + + lineColorButton + colorChanged() + ObjectEditor + onLineControlsChanged() + + + 105 + 150 + + + 1 + 247 + + + + + fillColorButton + colorChanged() + ObjectEditor + onFillControlsChanged() + + + 124 + 237 + + + 6 + 302 + + + + + posXSpin + valueChanged(double) + ObjectEditor + onChanged() + + + 90 + 112 + + + 400 + 90 + + + + + posYSpin + valueChanged(double) + ObjectEditor + onChanged() + + + 112 + 160 + + + 325 + 4 + + + + + sizeWSpin + valueChanged(double) + ObjectEditor + onChanged() + + + 135 + 223 + + + 3 + 340 + + + + + sizeHSpin + valueChanged(double) + ObjectEditor + onChanged() + + + 98 + 262 + + + 0 + 381 + + + + + sizeAspectCheck + toggled(bool) + ObjectEditor + onChanged() + + + 191 + 293 + + + 395 + 275 + + + + + sizeResetImageButton + clicked() + ObjectEditor + onResetImageSize() + + + 211 + 324 + + + 4 + 423 + + + + + sizeLineLengthSpin + valueChanged(double) + ObjectEditor + onChanged() + + + 129 + 391 + + + 395 + 568 + + + + + sizeLineAngleSpin + valueChanged(double) + ObjectEditor + onChanged() + + + 113 + 437 + + + 404 + 628 + + + + + shadowEnableCheck + toggled(bool) + ObjectEditor + onChanged() + + + 58 + 84 + + + 183 + -5 + + + + + shadowXSpin + valueChanged(double) + ObjectEditor + onChanged() + + + 125 + 127 + + + 398 + 56 + + + + + shadowYSpin + valueChanged(double) + ObjectEditor + onChanged() + + + 147 + 151 + + + 294 + -2 + + + + + shadowColorButton + colorChanged() + ObjectEditor + onChanged() + + + 106 + 194 + + + 405 + 410 + + + + + shadowOpacitySpin + valueChanged(int) + ObjectEditor + onChanged() + + + 115 + 229 + + + 406 + 503 + + + + + + onChanged() + onResetImageSize() + onLineControlsChanged() + onFillControlsChanged() +