diff --git a/glabels/FieldButton.cpp b/glabels/FieldButton.cpp index f6c25b6..212a766 100644 --- a/glabels/FieldButton.cpp +++ b/glabels/FieldButton.cpp @@ -1,6 +1,6 @@ /* FieldButton.cpp * - * Copyright (C) 2014-2016 Jim Evins + * Copyright (C) 2014-2019 Jim Evins * * This file is part of gLabels-qt. * @@ -30,79 +30,61 @@ namespace glabels /// /// Constructor /// - FieldButton::FieldButton( QWidget* parent ) - : QComboBox(parent) + FieldButton::FieldButton( QWidget* parent ) : QPushButton(parent) { setEnabled( false ); - - connect( this, SIGNAL(currentIndexChanged(int)), this, SLOT(onIndexChanged(int)) ); + setMenu( &mMenu ); + + connect( &mMenu, SIGNAL(triggered(QAction*)), + this, SLOT(onMenuActionTriggered(QAction*)) ); } - void FieldButton::setName( const QString& name ) - { - mName = name; - if ( count() == 0 ) - { - addItem( mName ); - } - else - { - setItemText( 0, mName ); - } - - // Item 0 is the ComboBox title, not an item intended for selection. So disable it. - const auto* itemModel = qobject_cast(model()); - QStandardItem* item = itemModel->item(0); - item->setFlags( item->flags() & ~(Qt::ItemIsSelectable|Qt::ItemIsEnabled) ); - } - - - void FieldButton::setKeys( const QStringList& keyList ) + /// + /// Set Keys + /// + void FieldButton::setKeys( const merge::Merge* merge, + const model::Variables* variables ) { // Clear old keys - clear(); - addItem( mName ); + mMenu.clear(); + + // Add merge keys, if any + mMenu.addSection( tr("Merge fields") ); + for ( auto& key : merge->keys() ) + { + auto* action = mMenu.addAction( QString( "${%1}" ).arg( key ) ); + action->setData( key ); + } + if ( merge->keys().empty() ) + { + auto* action = mMenu.addAction( "None" ); + action->setEnabled( false ); + } - // Item 0 is the ComboBox title, not an item intended for selection. So disable it. - const auto* itemModel = qobject_cast(model()); - QStandardItem* item = itemModel->item(0); - item->setFlags( item->flags() & ~(Qt::ItemIsSelectable|Qt::ItemIsEnabled) ); - - // Add new keys - if ( keyList.size() > 0 ) + // Add variable keys, if any + mMenu.addSection( tr("Variables") ); + for ( auto& key : variables->keys() ) { - addItems( keyList ); - setEnabled( true ); + auto* action = mMenu.addAction( QString( "${%1}" ).arg( key ) ); + action->setData( key ); } - else + if ( variables->keys().empty() ) { - setEnabled( false ); + auto* action = mMenu.addAction( "None" ); + action->setEnabled( false ); } + + setEnabled( !merge->keys().empty() || !variables->keys().empty() ); } - void FieldButton::clearKeys() - { - clear(); - addItem( mName ); - - setEnabled( false ); - } - - - /// - /// onMenuKeySelected slot + /// onMenuActionTriggered slot /// - void FieldButton::onIndexChanged( int index ) + void FieldButton::onMenuActionTriggered( QAction* action ) { - if ( index > 0 ) - { - emit keySelected( itemText(index) ); - - setCurrentIndex( 0 ); - } + emit keySelected( action->data().toString() ); } } // namespace glabels diff --git a/glabels/FieldButton.h b/glabels/FieldButton.h index 1da2d57..230a86d 100644 --- a/glabels/FieldButton.h +++ b/glabels/FieldButton.h @@ -1,6 +1,6 @@ /* FieldButton.h * - * Copyright (C) 2014-2016 Jim Evins + * Copyright (C) 2019 Jim Evins * * This file is part of gLabels-qt. * @@ -22,8 +22,13 @@ #define FieldButton_h -#include -#include +#include "model/Variables.h" +#include "merge/Merge.h" + +#include +#include +#include +#include namespace glabels @@ -32,7 +37,7 @@ namespace glabels /// /// Field Button /// - class FieldButton : public QComboBox + class FieldButton : public QPushButton { Q_OBJECT @@ -54,23 +59,22 @@ namespace glabels // Public Methods ///////////////////////////////// public: - void setName( const QString& name = "" ); - void setKeys( const QStringList& keyList ); - void clearKeys(); + void setKeys( const merge::Merge* merge, + const model::Variables* variables ); ///////////////////////////////// // Slots ///////////////////////////////// private slots: - void onIndexChanged( int index ); + void onMenuActionTriggered( QAction* action ); ///////////////////////////////// // Private Data ///////////////////////////////// private: - QString mName; + QMenu mMenu; }; diff --git a/glabels/ObjectEditor.cpp b/glabels/ObjectEditor.cpp index ee2ba24..8736ddd 100644 --- a/glabels/ObjectEditor.cpp +++ b/glabels/ObjectEditor.cpp @@ -67,9 +67,9 @@ namespace glabels barcodeColorButton->init( tr("Default"), QColor(0,0,0,255), QColor(0,0,0,255) ); shadowColorButton->init( tr("Default"), QColor(0,0,0,255), QColor(0,0,0,255) ); - textInsertFieldCombo->setName( tr("Insert Field") ); - barcodeInsertFieldCombo->setName( tr("Insert Field") ); - imageFieldCombo->setSpecialSelectionText( tr("Selected File...") ); + textInsertFieldButton->setText( tr("Insert field") ); + barcodeInsertFieldButton->setText( tr("Insert field") ); + imageFieldCombo->setSpecialSelectionText( tr("Selected file...") ); setEnabled( false ); hidePages(); @@ -93,11 +93,14 @@ namespace glabels this, SLOT(onSelectionChanged()) ); connect( mModel, SIGNAL(mergeSourceChanged()), - this, SLOT(onMergeSourceChanged()) ); + this, SLOT(onFieldsAvailableChanged()) ); + + connect( mModel, SIGNAL(variablesChanged()), + this, SLOT(onFieldsAvailableChanged()) ); onLabelSizeChanged(); onSelectionChanged(); - onMergeSourceChanged(); + onFieldsAvailableChanged(); } @@ -498,15 +501,15 @@ namespace glabels } - void ObjectEditor::onMergeSourceChanged() + void ObjectEditor::onFieldsAvailableChanged() { if ( !mBlocked ) { QStringList keys = mModel->merge()->keys(); lineColorButton->setKeys( keys ); fillColorButton->setKeys( keys ); - textInsertFieldCombo->setKeys( keys ); - barcodeInsertFieldCombo->setKeys( keys ); + textInsertFieldButton->setKeys( mModel->merge(), mModel->variables() ); + barcodeInsertFieldButton->setKeys( mModel->merge(), mModel->variables() ); imageFieldCombo->setFieldSelections( mModel->merge(), mModel->variables() ); shadowColorButton->setKeys( keys ); } diff --git a/glabels/ObjectEditor.h b/glabels/ObjectEditor.h index 311f691..53cdf5b 100644 --- a/glabels/ObjectEditor.h +++ b/glabels/ObjectEditor.h @@ -80,7 +80,7 @@ namespace glabels void onSettingsChanged(); void onLabelSizeChanged(); void onSelectionChanged(); - void onMergeSourceChanged(); + void onFieldsAvailableChanged(); void onObjectChanged(); void onObjectMoved(); void onObjectDestroyed(); diff --git a/glabels/ui/ObjectEditor.ui b/glabels/ui/ObjectEditor.ui index d213373..1a9d51f 100644 --- a/glabels/ui/ObjectEditor.ui +++ b/glabels/ui/ObjectEditor.ui @@ -70,7 +70,7 @@ - 0 + 1 @@ -579,7 +579,11 @@ - + + + Insert field + + @@ -729,7 +733,11 @@ - + + + Insert field + + @@ -1526,14 +1534,6 @@ colorChanged() - - glabels::FieldButton - QComboBox -
FieldButton.h
- - keySelected(QString) - -
glabels::BarcodeMenuButton QPushButton @@ -1550,6 +1550,14 @@ selectionChanged() + + glabels::FieldButton + QPushButton +
FieldButton.h
+ + keySelected(QString) + +
@@ -1658,8 +1666,8 @@ onTextControlsChanged() - 157 - 333 + 160 + 332 396 @@ -1674,8 +1682,8 @@ onTextControlsChanged() - 198 - 333 + 200 + 332 398 @@ -1690,8 +1698,8 @@ onTextControlsChanged() - 238 - 333 + 240 + 332 395 @@ -1706,8 +1714,8 @@ onTextControlsChanged() - 284 - 333 + 286 + 332 393 @@ -1722,8 +1730,8 @@ onTextControlsChanged() - 325 - 333 + 326 + 332 396 @@ -1739,7 +1747,7 @@ 365 - 333 + 332 397 @@ -1754,8 +1762,8 @@ onTextControlsChanged() - 184 - 407 + 189 + 404 394 @@ -1771,7 +1779,7 @@ 178 - 143 + 139 392 @@ -1786,8 +1794,8 @@ onLineControlsChanged() - 137 - 179 + 136 + 174 1 @@ -1802,8 +1810,8 @@ onFillControlsChanged() - 136 - 263 + 135 + 256 6 @@ -1818,8 +1826,8 @@ onPositionControlsChanged() - 159 - 142 + 160 + 138 399 @@ -1834,8 +1842,8 @@ onPositionControlsChanged() - 159 - 179 + 160 + 174 325 @@ -1850,8 +1858,8 @@ onRectSizeControlsChanged() - 159 - 265 + 160 + 258 3 @@ -1866,8 +1874,8 @@ onRectSizeControlsChanged() - 159 - 302 + 160 + 294 0 @@ -1882,8 +1890,8 @@ onResetImageSize() - 210 - 372 + 213 + 362 4 @@ -1914,8 +1922,8 @@ onShadowControlsChanged() - 165 - 142 + 166 + 138 398 @@ -1930,8 +1938,8 @@ onShadowControlsChanged() - 165 - 179 + 166 + 174 294 @@ -1946,8 +1954,8 @@ onShadowControlsChanged() - 142 - 215 + 141 + 209 399 @@ -1962,8 +1970,8 @@ onShadowControlsChanged() - 159 - 252 + 162 + 245 399 @@ -1978,8 +1986,8 @@ onLineSizeControlsChanged() - 174 - 456 + 177 + 444 5 @@ -1994,8 +2002,8 @@ onLineSizeControlsChanged() - 174 - 493 + 177 + 480 1 @@ -2010,8 +2018,8 @@ onImageFileButtonClicked() - 365 - 175 + 367 + 168 394 @@ -2035,22 +2043,6 @@ - - textInsertFieldCombo - keySelected(QString) - ObjectEditor - onTextInsertFieldKeySelected(QString) - - - 239 - 599 - - - 395 - 645 - - - barcodeShowTextCheck toggled(bool) @@ -2058,8 +2050,8 @@ onBarcodeControlsChanged() - 178 - 172 + 195 + 167 4 @@ -2074,8 +2066,8 @@ onBarcodeControlsChanged() - 164 - 204 + 195 + 198 1 @@ -2091,7 +2083,7 @@ 126 - 239 + 232 1 @@ -2115,22 +2107,6 @@ - - barcodeInsertFieldCombo - keySelected(QString) - ObjectEditor - onBarcodeInsertFieldKeySelected(QString) - - - 239 - 400 - - - 403 - 625 - - - barcodeStyleButton selectionChanged() @@ -2138,8 +2114,8 @@ onBarcodeControlsChanged() - 178 - 140 + 195 + 136 5 @@ -2195,6 +2171,38 @@ + + textInsertFieldButton + keySelected(QString) + ObjectEditor + onTextInsertFieldKeySelected(QString) + + + 191 + 589 + + + 227 + 642 + + + + + barcodeInsertFieldButton + keySelected(QString) + ObjectEditor + onBarcodeInsertFieldKeySelected(QString) + + + 208 + 379 + + + 205 + 649 + + + onChanged() diff --git a/translations/glabels_C.ts b/translations/glabels_C.ts index f131f4f..933c810 100644 --- a/translations/glabels_C.ts +++ b/translations/glabels_C.ts @@ -1146,6 +1146,17 @@ + + glabels::FieldButton + + Merge fields + + + + Variables + + + glabels::File @@ -1892,6 +1903,14 @@ Selected File... + + Insert field + + + + Selected file... + + glabels::PrintView