File indexing completed on 2024-05-12 04:39:40

0001 /*
0002     SPDX-FileCopyrightText: 2010 Andreas Pakulat <apaku@gmx.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-or-later
0005 */
0006 
0007 #include "defineswidget.h"
0008 
0009 #include <KLocalizedString>
0010 #include <QAction>
0011 
0012 #include "../ui_defineswidget.h"
0013 #include "definesmodel.h"
0014 #include <debug.h>
0015 
0016 using namespace KDevelop;
0017 
0018 DefinesWidget::DefinesWidget( QWidget* parent )
0019     : QWidget ( parent ), ui( new Ui::DefinesWidget )
0020     , definesModel( new DefinesModel( this ) )
0021 {
0022     ui->setupUi( this );
0023     ui->defines->setModel( definesModel );
0024     ui->defines->horizontalHeader()->setSectionResizeMode( QHeaderView::Stretch );
0025     connect(definesModel, &DefinesModel::dataChanged, this, QOverload<>::of(&DefinesWidget::definesChanged));
0026     connect(definesModel, &DefinesModel::rowsInserted, this, QOverload<>::of(&DefinesWidget::definesChanged));
0027     connect(definesModel, &DefinesModel::rowsRemoved, this, QOverload<>::of(&DefinesWidget::definesChanged));
0028 
0029     auto* delDefAction = new QAction(i18nc("@action", "Delete Define"), this);
0030     delDefAction->setShortcut( QKeySequence(Qt::Key_Delete) );
0031     delDefAction->setShortcutContext( Qt::WidgetWithChildrenShortcut );
0032     delDefAction->setIcon( QIcon::fromTheme(QStringLiteral("edit-delete")) );
0033     ui->defines->addAction( delDefAction );
0034     ui->defines->setContextMenuPolicy( Qt::ActionsContextMenu );
0035     connect( delDefAction, &QAction::triggered, this, &DefinesWidget::deleteDefine );
0036 }
0037 
0038 DefinesWidget::~DefinesWidget()
0039 {
0040 }
0041 
0042 void DefinesWidget::setDefines( const Defines& defines )
0043 {
0044     bool b = blockSignals( true );
0045     clear();
0046     definesModel->setDefines( defines );
0047     blockSignals( b );
0048 }
0049 
0050 void DefinesWidget::definesChanged()
0051 {
0052     qCDebug(DEFINESANDINCLUDES) << "defines changed";
0053     emit definesChanged( definesModel->defines() );
0054 }
0055 
0056 void DefinesWidget::clear()
0057 {
0058     definesModel->setDefines( {} );
0059 }
0060 
0061 void DefinesWidget::deleteDefine()
0062 {
0063     qCDebug(DEFINESANDINCLUDES) << "Deleting defines";
0064     const QModelIndexList selection = ui->defines->selectionModel()->selectedRows();
0065     for (const QModelIndex& row : selection) {
0066         definesModel->removeRow( row.row() );
0067     }
0068 }
0069 
0070 #include "moc_defineswidget.cpp"