From 34da3fe17cc61a0bf2343e2fadf7f469a625dd53 Mon Sep 17 00:00:00 2001 From: Jim Evins Date: Sat, 22 Oct 2016 19:56:06 -0400 Subject: [PATCH] Use field button for image selection. --- glabels/ColorPaletteDialog.cpp | 2 +- glabels/FieldButton.cpp | 95 ++++++++++------------ glabels/FieldButton.h | 24 ++---- glabels/ObjectEditor.cpp | 16 +++- glabels/ObjectEditor.h | 1 + glabels/ui/ObjectEditor.ui | 144 ++++++++++++++++++--------------- 6 files changed, 144 insertions(+), 138 deletions(-) diff --git a/glabels/ColorPaletteDialog.cpp b/glabels/ColorPaletteDialog.cpp index 4f686fc..4a23003 100644 --- a/glabels/ColorPaletteDialog.cpp +++ b/glabels/ColorPaletteDialog.cpp @@ -153,7 +153,7 @@ ColorPaletteDialog::ColorPaletteDialog( const QString& defaultLabel, vLayout->addWidget( hline4 ); mMergeFieldCombo = new QComboBox(); - mMergeFieldCombo->addItem( tr("Merge field...") ); + mMergeFieldCombo->addItem( tr("Merge key...") ); mMergeFieldCombo->setMinimumSize( 34, 34 ); mMergeFieldCombo->setFrame( false ); mMergeFieldCombo->setEnabled( false ); diff --git a/glabels/FieldButton.cpp b/glabels/FieldButton.cpp index fc61aaf..2b345a2 100644 --- a/glabels/FieldButton.cpp +++ b/glabels/FieldButton.cpp @@ -1,6 +1,6 @@ /* FieldButton.cpp * - * Copyright (C) 2014 Jim Evins + * Copyright (C) 2014-2016 Jim Evins * * This file is part of gLabels-qt. * @@ -20,95 +20,84 @@ #include "FieldButton.h" +#include +#include + /// /// Constructor /// FieldButton::FieldButton( QWidget* parent ) - : QPushButton(parent) + : QComboBox(parent) { setEnabled( false ); - mMenu = new FieldMenu(); - setMenu( mMenu ); - - connect( mMenu, SIGNAL(keySelected(const QString&)), this, SLOT(onMenuKeySelected(const QString&)) ); + connect( this, SIGNAL(currentIndexChanged(int)), this, SLOT(onIndexChanged(int)) ); } void FieldButton::setName( const QString& name ) { - if ( name.isNull() || name.isEmpty() ) + mName = name; + if ( count() == 0 ) { - setText( tr("(None)") ); - mLabelIsKey = false; + addItem( mName ); } else { - setText( name ); - mLabelIsKey = true; + setItemText( 0, mName ); } + + // Item 0 is the ComboBox title, not an item intended for selection. So disable it. + const QStandardItemModel* itemModel = qobject_cast(model()); + QStandardItem* item = itemModel->item(0); + item->setFlags( item->flags() & ~(Qt::ItemIsSelectable|Qt::ItemIsEnabled) ); } -void FieldButton::setKeys( const QList& keyList ) +void FieldButton::setKeys( const QStringList& keyList ) { - mMenu->setKeys( keyList ); + // Clear old keys + clear(); + addItem( mName ); - if ( keyList.length() > 0 ) - { - mKey = keyList.first(); - - if ( mLabelIsKey ) - { - setText( mKey ); - } - else - { - setText( tr("(None)") ); - } - - setEnabled( true ); - } - else - { - setEnabled( false ); - } + // Item 0 is the ComboBox title, not an item intended for selection. So disable it. + const QStandardItemModel* itemModel = qobject_cast(model()); + QStandardItem* item = itemModel->item(0); + item->setFlags( item->flags() & ~(Qt::ItemIsSelectable|Qt::ItemIsEnabled) ); + + // Add new keys + if ( keyList.size() > 0 ) + { + addItems( keyList ); + setEnabled( true ); + } + else + { + setEnabled( false ); + } } void FieldButton::clearKeys() { - if ( !mLabelIsKey ) - { - setText( tr("(None)") ); - } - + clear(); + addItem( mName ); + setEnabled( false ); } -/// -/// key getter -/// -QString FieldButton::key() const -{ - return mKey; -} - - /// /// onMenuKeySelected slot /// -void FieldButton::onMenuKeySelected( const QString& key ) +void FieldButton::onIndexChanged( int index ) { - mKey = key; - - if ( mLabelIsKey ) + if ( index > 0 ) { - setText( key ); - } + emit keySelected( itemText(index) ); - emit keySelected( key ); + setCurrentIndex( 0 ); + } } diff --git a/glabels/FieldButton.h b/glabels/FieldButton.h index b05f2c8..61abf82 100644 --- a/glabels/FieldButton.h +++ b/glabels/FieldButton.h @@ -1,6 +1,6 @@ /* FieldButton.h * - * Copyright (C) 2014 Jim Evins + * Copyright (C) 2014-2016 Jim Evins * * This file is part of gLabels-qt. * @@ -21,15 +21,14 @@ #ifndef FieldButton_h #define FieldButton_h -#include +#include #include -#include "FieldMenu.h" /// /// Field Button /// -class FieldButton : public QPushButton +class FieldButton : public QComboBox { Q_OBJECT @@ -44,14 +43,7 @@ public: // Signals ///////////////////////////////// signals: - void keySelected( const QString& key ); - - - ///////////////////////////////// - // Properties - ///////////////////////////////// -public: - QString key() const; + void keySelected( QString key ); ///////////////////////////////// @@ -59,7 +51,7 @@ public: ///////////////////////////////// public: void setName( const QString& name = "" ); - void setKeys( const QList& keyList ); + void setKeys( const QStringList& keyList ); void clearKeys(); @@ -67,16 +59,14 @@ public: // Slots ///////////////////////////////// private slots: - void onMenuKeySelected( const QString& key ); + void onIndexChanged( int index ); ///////////////////////////////// // Private Data ///////////////////////////////// private: - FieldMenu* mMenu; - QString mKey; - bool mLabelIsKey; + QString mName; }; diff --git a/glabels/ObjectEditor.cpp b/glabels/ObjectEditor.cpp index 2242889..50521d1 100644 --- a/glabels/ObjectEditor.cpp +++ b/glabels/ObjectEditor.cpp @@ -50,6 +50,8 @@ ObjectEditor::ObjectEditor( QWidget *parent ) fillColorButton->init( "No fill", QColor(0,0,0,0), QColor(0,0,0,255) ); shadowColorButton->init( "Default", QColor(0,0,0,255), QColor(0,0,0,255) ); + imageFieldCombo->setName( "Key" ); + setEnabled( false ); hidePages(); @@ -362,9 +364,11 @@ void ObjectEditor::onMergeSourceChanged() { if ( !mBlocked ) { - lineColorButton->setKeys( mModel->merge()->keys() ); - fillColorButton->setKeys( mModel->merge()->keys() ); - shadowColorButton->setKeys( mModel->merge()->keys() ); + QStringList keys = mModel->merge()->keys(); + lineColorButton->setKeys( keys ); + fillColorButton->setKeys( keys ); + imageFieldCombo->setKeys( keys ); + shadowColorButton->setKeys( keys ); } } @@ -444,6 +448,12 @@ void ObjectEditor::onImageFileButtonClicked() } +void ObjectEditor::onImageKeySelected(QString key ) +{ + qDebug() << "Key = " << key; +} + + void ObjectEditor::onPositionControlsChanged() { if ( !mBlocked ) diff --git a/glabels/ObjectEditor.h b/glabels/ObjectEditor.h index 88515a7..c986eb7 100644 --- a/glabels/ObjectEditor.h +++ b/glabels/ObjectEditor.h @@ -78,6 +78,7 @@ private slots: void onLineControlsChanged(); void onFillControlsChanged(); void onImageFileButtonClicked(); + void onImageKeySelected(QString key ); void onPositionControlsChanged(); void onRectSizeControlsChanged(); void onLineSizeControlsChanged(); diff --git a/glabels/ui/ObjectEditor.ui b/glabels/ui/ObjectEditor.ui index 2aece52..5732a7a 100644 --- a/glabels/ui/ObjectEditor.ui +++ b/glabels/ui/ObjectEditor.ui @@ -451,7 +451,7 @@ - + @@ -679,7 +679,7 @@ - + @@ -766,37 +766,8 @@ - - - QFormLayout::AllNonFixedFieldsGrow - - - - - - 0 - 0 - - - - File... - - - - - - - - 0 - 0 - - - - Merge field... - - - - + + @@ -818,6 +789,51 @@ + + + + + + + 0 + 0 + + + + Select File... + + + + + + + + 0 + 0 + + + + or + + + + + + + + 0 + 0 + + + + + Select Merge Field... + + + + + + @@ -1488,10 +1504,10 @@ FieldButton - QPushButton + QComboBox
FieldButton.h
- keySelected() + keySelected(QString)
@@ -1570,8 +1586,8 @@ onChanged() - 223 - 202 + 236 + 200 395 @@ -1586,8 +1602,8 @@ onChanged() - 134 - 237 + 138 + 235 396 @@ -1618,8 +1634,8 @@ onChanged() - 208 - 318 + 219 + 315 398 @@ -1634,8 +1650,8 @@ onChanged() - 249 - 318 + 271 + 315 395 @@ -1682,8 +1698,8 @@ onChanged() - 267 - 360 + 271 + 357 397 @@ -1698,8 +1714,8 @@ onChanged() - 149 - 390 + 180 + 389 394 @@ -1906,8 +1922,8 @@ onFillControlsChanged() - 124 - 237 + 146 + 236 6 @@ -1923,7 +1939,7 @@ 153 - 132 + 128 399 @@ -1986,8 +2002,8 @@ onResetImageSize() - 211 - 324 + 228 + 323 4 @@ -2066,8 +2082,8 @@ onShadowControlsChanged() - 115 - 229 + 151 + 227 406 @@ -2098,8 +2114,8 @@ onLineSizeControlsChanged() - 120 - 437 + 164 + 424 1 @@ -2124,18 +2140,18 @@ - imageMergeFieldButton - keySelected() + imageFieldCombo + keySelected(QString) ObjectEditor - onImageKeySelected() + onImageKeySelected(QString) - 351 - 147 + 343 + 151 - 7 - 143 + 397 + 32 @@ -2150,6 +2166,6 @@ onShadowControlsChanged() onLineSizeControlsChanged() onImageFileButtonClicked() - onImageKeySelected() + onImageKeySelected(QString)