From 669c1d02e7a00066ba6df3d9c193931d45da4233 Mon Sep 17 00:00:00 2001 From: Jim Evins Date: Tue, 17 May 2016 23:31:52 -0400 Subject: [PATCH] Fleshing out of using merge for colors. --- glabels/ColorButton.cpp | 16 ++++++++++--- glabels/ColorPaletteDialog.cpp | 44 +++++++++++++++++++++++++++------- glabels/ColorPaletteDialog.h | 9 ++++++- glabels/FieldMenu.cpp | 6 ++--- glabels/FieldMenu.h | 6 ++--- glabels/FieldMenuItem.h | 2 +- glabels/LabelModel.cpp | 2 ++ glabels/LabelModel.h | 1 + glabels/Merge.h | 2 +- glabels/MergeNone.cpp | 2 +- glabels/MergeNone.h | 2 +- glabels/MergeText.cpp | 2 +- glabels/MergeText.h | 2 +- glabels/MergeView.cpp | 2 +- glabels/ObjectEditor.cpp | 13 ++++++++++ glabels/ObjectEditor.h | 1 + 16 files changed, 87 insertions(+), 25 deletions(-) diff --git a/glabels/ColorButton.cpp b/glabels/ColorButton.cpp index 0840a7a..31cf60c 100644 --- a/glabels/ColorButton.cpp +++ b/glabels/ColorButton.cpp @@ -44,6 +44,8 @@ void ColorButton::init( const QString& defaultLabel, const QColor& defaultColor, mDefaultColor = defaultColor; mColorNode = ColorNode( color ); + setMinimumSize( QSize( 85, 34 ) ); + setIcon( QIcon( ColorSwatch( SWATCH_W, SWATCH_H, color ) ) ); setText( "" ); setCheckable( true ); @@ -67,7 +69,7 @@ void ColorButton::setColorNode( ColorNode colorNode ) if ( colorNode.fieldFlag() ) { setIcon( QIcon() ); - setText( colorNode.key() ); + setText( QString("${%1}").arg( colorNode.key() ) ); } else { @@ -155,8 +157,16 @@ void ColorButton::onPaletteDialogChanged( ColorNode colorNode, bool isDefault ) mColorNode = colorNode; mIsDefault = isDefault; - setIcon( QIcon( ColorSwatch( SWATCH_W, SWATCH_H, colorNode.color() ) ) ); - setText( "" ); + if ( colorNode.fieldFlag() ) + { + setIcon( QIcon() ); + setText( QString("${%1}").arg( colorNode.key() ) ); + } + else + { + setIcon( QIcon( ColorSwatch( SWATCH_W, SWATCH_H, colorNode.color() ) ) ); + setText( "" ); + } emit colorChanged(); } diff --git a/glabels/ColorPaletteDialog.cpp b/glabels/ColorPaletteDialog.cpp index 73a45db..6385d44 100644 --- a/glabels/ColorPaletteDialog.cpp +++ b/glabels/ColorPaletteDialog.cpp @@ -20,9 +20,6 @@ #include "ColorPaletteDialog.h" -#include "ColorPaletteItem.h" -#include "ColorPaletteButtonItem.h" - #include #include #include @@ -153,12 +150,17 @@ ColorPaletteDialog::ColorPaletteDialog( const QString& defaultLabel, hline4->setLineWidth( 1 ); vLayout->addWidget( hline4 ); - ColorPaletteButtonItem* mergeFieldButton = new ColorPaletteButtonItem( "TODO: Field Button" ); - vLayout->addWidget( mergeFieldButton ); + mMergeFieldButton = new ColorPaletteButtonItem( tr("Merge field") ); + connect( mMergeFieldButton, SIGNAL(activated()), this, SLOT(onMergeFieldItemActivated()) ); + mMergeFieldButton->setEnabled( false ); + vLayout->addWidget( mMergeFieldButton ); setLayout( vLayout ); loadCustomColorHistory(); + + mFieldMenu = new FieldMenu(); + connect( mFieldMenu, SIGNAL(keySelected(QString)), this, SLOT(onFieldMenuItemActivated(QString)) ); } @@ -168,15 +170,23 @@ void ColorPaletteDialog::setColorNode( const ColorNode& colorNode ) } -void ColorPaletteDialog::setKeys( const QList keyList ) +void ColorPaletteDialog::setKeys( const QStringList& keyList ) { - // TODO + if ( keyList.size() > 0 ) + { + mFieldMenu->setKeys( keyList ); + mMergeFieldButton->setEnabled( true ); + } + else + { + mMergeFieldButton->setEnabled( false ); + } } void ColorPaletteDialog::clearKeys() { - // TODO + mMergeFieldButton->setEnabled( false ); } @@ -263,3 +273,21 @@ void ColorPaletteDialog::loadCustomColorHistory() id++; } } + + +void ColorPaletteDialog::onMergeFieldItemActivated() +{ + QPoint pos( mMergeFieldButton->width(), 0 ); + mFieldMenu->popup( mMergeFieldButton->mapToGlobal(pos) ); +} + + +void ColorPaletteDialog::onFieldMenuItemActivated( QString key ) +{ + mColorNode.setFieldFlag( true ); + mColorNode.setColor( QColor("#eeeeec") ); + mColorNode.setKey( key ); + + emit colorChanged( mColorNode, false ); + accept(); +} diff --git a/glabels/ColorPaletteDialog.h b/glabels/ColorPaletteDialog.h index 975e61f..24f229a 100644 --- a/glabels/ColorPaletteDialog.h +++ b/glabels/ColorPaletteDialog.h @@ -27,6 +27,8 @@ #include "ColorNode.h" #include "ColorHistory.h" #include "ColorPaletteItem.h" +#include "ColorPaletteButtonItem.h" +#include "FieldMenu.h" /// @@ -59,7 +61,7 @@ signals: ///////////////////////////////// public: void setColorNode( const ColorNode& colorNode ); - void setKeys( const QList keyList ); + void setKeys( const QStringList& keyList ); void clearKeys(); @@ -72,6 +74,8 @@ private slots: void onHistoryItemActivated( int id ); void onCustomColorItemActivated(); void onColorHistoryChanged(); + void onMergeFieldItemActivated(); + void onFieldMenuItemActivated( QString key ); ///////////////////////////////// @@ -101,6 +105,9 @@ private: ColorHistory* mColorHistory; ColorPaletteItem* mHistoryItem[PALETTE_COLS]; + FieldMenu* mFieldMenu; + ColorPaletteButtonItem* mMergeFieldButton; + }; diff --git a/glabels/FieldMenu.cpp b/glabels/FieldMenu.cpp index 296c4ec..9d51390 100644 --- a/glabels/FieldMenu.cpp +++ b/glabels/FieldMenu.cpp @@ -34,14 +34,14 @@ FieldMenu::FieldMenu() /// /// set keys /// -void FieldMenu::setKeys( const QList& keyList ) +void FieldMenu::setKeys( const QStringList& keyList ) { clear(); foreach ( QString key, keyList ) { FieldMenuItem* menuItem = new FieldMenuItem( key ); - connect( menuItem, SIGNAL(activated()), this, SLOT(onMenuItemActivated) ); + connect( menuItem, SIGNAL(activated(QString)), this, SLOT(onMenuItemActivated(QString)) ); addAction( menuItem ); } @@ -51,7 +51,7 @@ void FieldMenu::setKeys( const QList& keyList ) /// /// onMenuItemActivated slot /// -void FieldMenu::onMenuItemActivated( const QString& key ) +void FieldMenu::onMenuItemActivated( QString key ) { emit keySelected( key ); } diff --git a/glabels/FieldMenu.h b/glabels/FieldMenu.h index d598a1b..640c4b1 100644 --- a/glabels/FieldMenu.h +++ b/glabels/FieldMenu.h @@ -43,21 +43,21 @@ public: // Signals ///////////////////////////////// signals: - void keySelected( const QString& key ); + void keySelected( QString key ); ///////////////////////////////// // Public Methods ///////////////////////////////// public: - void setKeys( const QList& keyList ); + void setKeys( const QStringList& keyList ); ///////////////////////////////// // Slots ///////////////////////////////// private slots: - void onMenuItemActivated( const QString& key ); + void onMenuItemActivated( QString key ); ///////////////////////////////// diff --git a/glabels/FieldMenuItem.h b/glabels/FieldMenuItem.h index 90f671a..166a806 100644 --- a/glabels/FieldMenuItem.h +++ b/glabels/FieldMenuItem.h @@ -43,7 +43,7 @@ public: // Signals ///////////////////////////////// signals: - void activated( const QString& key ); + void activated( QString key ); ///////////////////////////////// diff --git a/glabels/LabelModel.cpp b/glabels/LabelModel.cpp index 53109dd..58cdea5 100644 --- a/glabels/LabelModel.cpp +++ b/glabels/LabelModel.cpp @@ -297,6 +297,7 @@ void LabelModel::setMerge( Merge* merge ) setModified(); emit mergeChanged(); + emit mergeSourceChanged(); } } @@ -426,6 +427,7 @@ void LabelModel::onMergeSourceChanged() { setModified(); emit changed(); + emit mergeSourceChanged(); } diff --git a/glabels/LabelModel.h b/glabels/LabelModel.h index e4921ab..b48d488 100644 --- a/glabels/LabelModel.h +++ b/glabels/LabelModel.h @@ -73,6 +73,7 @@ signals: void selectionChanged(); void modifiedChanged(); void mergeChanged(); + void mergeSourceChanged(); ///////////////////////////////// diff --git a/glabels/Merge.h b/glabels/Merge.h index fcd4685..3c0dc72 100644 --- a/glabels/Merge.h +++ b/glabels/Merge.h @@ -80,7 +80,7 @@ public: // Virtual methods ///////////////////////////////// public: - virtual QStringList keyList() const = 0; + virtual QStringList keys() const = 0; virtual QString primaryKey() const = 0; protected: virtual void open() = 0; diff --git a/glabels/MergeNone.cpp b/glabels/MergeNone.cpp index ace7180..732b513 100644 --- a/glabels/MergeNone.cpp +++ b/glabels/MergeNone.cpp @@ -76,7 +76,7 @@ Merge* MergeNone::create() /// /// Get key list /// -QStringList MergeNone::keyList() const +QStringList MergeNone::keys() const { QStringList emptyList; return emptyList; diff --git a/glabels/MergeNone.h b/glabels/MergeNone.h index 6d051c0..f17d64d 100644 --- a/glabels/MergeNone.h +++ b/glabels/MergeNone.h @@ -57,7 +57,7 @@ public: // Implementation of virtual methods ///////////////////////////////// public: - QStringList keyList() const; + QStringList keys() const; QString primaryKey() const; protected: void open(); diff --git a/glabels/MergeText.cpp b/glabels/MergeText.cpp index 2446657..60d6e1f 100644 --- a/glabels/MergeText.cpp +++ b/glabels/MergeText.cpp @@ -55,7 +55,7 @@ MergeText::~MergeText() /// /// Get key list /// -QStringList MergeText::keyList() const +QStringList MergeText::keys() const { QStringList keys; for ( int iField = 0; iField < mNFieldsMax; iField++ ) diff --git a/glabels/MergeText.h b/glabels/MergeText.h index 5c76f15..e22333a 100644 --- a/glabels/MergeText.h +++ b/glabels/MergeText.h @@ -45,7 +45,7 @@ protected: // Implementation of virtual methods ///////////////////////////////// public: - QStringList keyList() const; + QStringList keys() const; QString primaryKey() const; protected: void open(); diff --git a/glabels/MergeView.cpp b/glabels/MergeView.cpp index 37c46ba..9891ee6 100644 --- a/glabels/MergeView.cpp +++ b/glabels/MergeView.cpp @@ -226,7 +226,7 @@ void MergeView::onCellChanged( int iRow, int iCol ) void MergeView::loadHeaders( Merge* merge ) { mPrimaryKey = merge->primaryKey(); - mKeys = merge->keyList(); + mKeys = merge->keys(); if ( mKeys.size() > 0 ) { diff --git a/glabels/ObjectEditor.cpp b/glabels/ObjectEditor.cpp index cfba1d9..790c297 100644 --- a/glabels/ObjectEditor.cpp +++ b/glabels/ObjectEditor.cpp @@ -59,9 +59,11 @@ void ObjectEditor::setModel( LabelModel* model, UndoRedoModel* undoRedoModel ) connect( mModel, SIGNAL(sizeChanged()), this, SLOT(onLabelSizeChanged()) ); connect( mModel, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()) ); + connect( mModel, SIGNAL(mergeSourceChanged()), this, SLOT(onMergeSourceChanged()) ); onLabelSizeChanged(); onSelectionChanged(); + onMergeSourceChanged(); } @@ -246,6 +248,17 @@ void ObjectEditor::onSelectionChanged() } +void ObjectEditor::onMergeSourceChanged() +{ + if ( !mBlocked ) + { + lineColorButton->setKeys( mModel->merge()->keys() ); + fillColorButton->setKeys( mModel->merge()->keys() ); + shadowColorButton->setKeys( mModel->merge()->keys() ); + } +} + + void ObjectEditor::onObjectChanged() { if ( !mBlocked ) diff --git a/glabels/ObjectEditor.h b/glabels/ObjectEditor.h index eaa89da..673de42 100644 --- a/glabels/ObjectEditor.h +++ b/glabels/ObjectEditor.h @@ -69,6 +69,7 @@ private slots: void onSettingsChanged(); void onLabelSizeChanged(); void onSelectionChanged(); + void onMergeSourceChanged(); void onObjectChanged(); void onObjectMoved(); void onObjectDestroyed();