22#include <QDialogButtonBox>
25#include "moc_qgstabpositionwidget.cpp"
27using namespace Qt::StringLiterals;
39 connect( mAddButton, &QPushButton::clicked,
this, &QgsTabPositionWidget::mAddButton_clicked );
40 connect( mRemoveButton, &QPushButton::clicked,
this, &QgsTabPositionWidget::mRemoveButton_clicked );
41 connect( mTabPositionTreeWidget, &QTreeWidget::itemChanged,
this, &QgsTabPositionWidget::emitPositionsChanged );
46 mTabPositionTreeWidget->clear();
49 QTreeWidgetItem *entry =
new QTreeWidgetItem();
50 entry->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled );
51 entry->setText( 0, QLocale().toString( tab.position() ) );
52 entry->setData( 0, Qt::EditRole, tab.position() );
53 mTabPositionTreeWidget->addTopLevelItem( entry );
59 QList<QgsTextFormat::Tab> result;
60 const int nTopLevelItems = mTabPositionTreeWidget->topLevelItemCount();
61 result.reserve( nTopLevelItems );
62 for (
int i = 0; i < nTopLevelItems; ++i )
64 if ( QTreeWidgetItem *currentItem = mTabPositionTreeWidget->topLevelItem( i ) )
71 return a.position() < b.position();
79 QTreeWidgetItem *headerItem = mTabPositionTreeWidget->headerItem();
83void QgsTabPositionWidget::mAddButton_clicked()
85 const QList<QgsTextFormat::Tab> currentPositions =
positions();
86 double newPosition = 6;
87 if ( !currentPositions.empty() )
89 newPosition = currentPositions.last().position() + 6;
92 QTreeWidgetItem *entry =
new QTreeWidgetItem();
93 entry->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled );
94 entry->setText( 0, QLocale().toString( newPosition ) );
95 entry->setData( 0, Qt::EditRole, newPosition );
96 mTabPositionTreeWidget->addTopLevelItem( entry );
97 emitPositionsChanged();
100void QgsTabPositionWidget::mRemoveButton_clicked()
102 if ( QTreeWidgetItem *currentItem = mTabPositionTreeWidget->currentItem() )
104 mTabPositionTreeWidget->takeTopLevelItem( mTabPositionTreeWidget->indexOfTopLevelItem( currentItem ) );
106 emitPositionsChanged();
109void QgsTabPositionWidget::emitPositionsChanged()
116 : QDialog( parent, f )
118 QVBoxLayout *vLayout =
new QVBoxLayout();
120 vLayout->addWidget( mWidget );
121 QDialogButtonBox *bbox =
new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal );
122 connect( bbox, &QDialogButtonBox::accepted,
this, &QgsTabPositionDialog::accept );
123 connect( bbox, &QDialogButtonBox::rejected,
this, &QgsTabPositionDialog::reject );
124 vLayout->addWidget( bbox );
125 setLayout( vLayout );
126 setWindowTitle( tr(
"Tab Positions" ) );
136 return mWidget->positions();
141 mWidget->setUnit( unit );
RenderUnit
Rendering size units.
@ Millimeters
Millimeters.
static QIcon getThemeIcon(const QString &name, const QColor &fillColor=QColor(), const QColor &strokeColor=QColor())
Helper to get a theme icon.
static double toDouble(const QString &input, bool *ok)
Converts input string to double value.
QList< QgsTextFormat::Tab > positions() const
Returns the tab positions defined in the dialog.
QgsTabPositionDialog(QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags())
Constructor for QgsTabPositionDialog.
void setPositions(const QList< QgsTextFormat::Tab > &positions)
Sets the tab positions to show in the dialog.
void setUnit(Qgis::RenderUnit unit)
Sets the unit type used for the tab positions (used to update interface labels).
Defines a tab position for a text format.
static Q_INVOKABLE QString toAbbreviatedString(Qgis::DistanceUnit unit)
Returns a translated abbreviation representing a distance unit.