Subversion Repositories Scribus

Compare Revisions

Ignore whitespace Rev 23087 → Rev 23088

/trunk/Scribus/Scribus.pro
20,6 → 20,7
 
# Input
HEADERS += scribus/actionmanager.h \
scribus/actionsearch.h \
scribus/annotation.h \
scribus/appmodehelper.h \
scribus/appmodes.h \
394,6 → 395,7
scribus/text/textsource.h \
scribus/ui/about.h \
scribus/ui/aboutplugins.h \
scribus/ui/actionsearchdialog.h \
scribus/ui/AdapterWidget.h \
scribus/ui/adjustcmsdialog.h \
scribus/ui/aligndistribute.h \
1022,7 → 1024,9
scribus/plugins/tools/2geomtools/meshdistortion/meshdistortiondialog.h \
scribus/plugins/tools/2geomtools/pathalongpath/pathalongpath.h \
scribus/plugins/tools/2geomtools/pathalongpath/pathdialog.h
 
FORMS += scribus/ui/aboutplugins.ui \
scribus/ui/actionsearchdialog.ui \
scribus/ui/aligndistribute.ui \
scribus/ui/annot.ui \
scribus/ui/arcvectorbase.ui \
1178,7 → 1182,9
scribus/plugins/scripter/python/sceditor/mainwindow.ui \
scribus/plugins/tools/2geomtools/meshdistortion/meshdistortiondialog.ui \
scribus/plugins/tools/2geomtools/pathalongpath/pathdialogbase.ui
 
SOURCES += scribus/actionmanager.cpp \
scribus/actionsearch.cpp \
scribus/appmodehelper.cpp \
scribus/canvas.cpp \
scribus/canvasgesture_cellselect.cpp \
1514,6 → 1520,7
scribus/text/textsource.cpp \
scribus/ui/about.cpp \
scribus/ui/aboutplugins.cpp \
scribus/ui/actionsearchdialog.cpp \
scribus/ui/AdapterWidget.cpp \
scribus/ui/adjustcmsdialog.cpp \
scribus/ui/aligndistribute.cpp \
/trunk/Scribus/scribus/CMakeLists.txt
88,6 → 88,7
 
set(SCRIBUS_UI_SRC
ui/aboutplugins.ui
ui/actionsearchdialog.ui
ui/aligndistribute.ui
ui/annot.ui
ui/arcvectorbase.ui
307,6 → 308,7
urllauncher.h
ui/about.h
ui/aboutplugins.h
ui/actionsearchdialog.h
ui/adjustcmsdialog.h
ui/aligndistribute.h
ui/alignselect.h
564,6 → 566,7
 
set(SCRIBUS_SOURCES
actionmanager.cpp
actionsearch.cpp
appmodehelper.cpp
canvas.cpp
canvasgesture_cellselect.cpp
808,6 → 811,7
third_party/fparser/fparser.cc
ui/about.cpp
ui/aboutplugins.cpp
ui/actionsearchdialog.cpp
ui/adjustcmsdialog.cpp
ui/aligndistribute.cpp
ui/alignselect.cpp
/trunk/Scribus/scribus/actionmanager.cpp
991,6 → 991,8
name="helpAboutQt";
scrActions->insert(name, new ScrAction("", defaultKey(name), mainWindow));
(*scrActions)[name]->setMenuRole(QAction::AboutQtRole);
name="helpActionSearch";
scrActions->insert(name, new ScrAction("", defaultKey(name), mainWindow));
name="helpTooltips";
scrActions->insert(name, new ScrAction("", defaultKey(name), mainWindow));
name="helpManual";
1014,6 → 1016,7
connect( (*scrActions)["helpAboutScribus"], SIGNAL(triggered()), mainWindow, SLOT(slotHelpAbout()) );
connect( (*scrActions)["helpAboutPlugins"], SIGNAL(triggered()), mainWindow, SLOT(slotHelpAboutPlugins()) );
connect( (*scrActions)["helpAboutQt"], SIGNAL(triggered()), mainWindow, SLOT(slotHelpAboutQt()) );
connect( (*scrActions)["helpActionSearch"], SIGNAL(triggered()), mainWindow, SLOT(slotHelpActionSearch()) );
connect( (*scrActions)["helpTooltips"], SIGNAL(triggered()), mainWindow, SLOT(ToggleTips()) );
connect( (*scrActions)["helpManual"], SIGNAL(triggered()), mainWindow, SLOT(slotOnlineHelp()) );
connect( (*scrActions)["helpCheckUpdates"], SIGNAL(triggered()), mainWindow, SLOT(slotHelpCheckUpdates()) );
1744,6 → 1747,7
(*scrActions)["helpAboutScribus"]->setTexts( tr("&About Scribus"));
(*scrActions)["helpAboutPlugins"]->setTexts( tr("&About Plugins"));
(*scrActions)["helpAboutQt"]->setTexts( tr("About &Qt"));
(*scrActions)["helpActionSearch"]->setTexts( tr("Action &Search"));
(*scrActions)["helpTooltips"]->setTexts( tr("Toolti&ps"));
(*scrActions)["showMouseCoordinates"]->setTexts( tr("Move/Resize Value Indicator"));
(*scrActions)["helpManual"]->setTexts( tr("Scribus &Manual..."));
1968,6 → 1972,7
//Extras Menu
//Windows Menu
//Help Menu
defKeys.insert("helpActionSearch", Qt::CTRL+Qt::Key_Slash);
defKeys.insert("helpManual", Qt::Key_F1);
 
//GUI and specials
/trunk/Scribus/scribus/actionsearch.cpp
0,0 → 1,77
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
 
#include "actionsearch.h"
 
#include <QAction>
#include <QDebug>
#include <QList>
#include <QMenuBar>
#include <QMenu>
#include <QStringList>
 
ActionSearch::ActionSearch(QMenuBar *menuBar)
: menuBar{menuBar}
{
 
}
 
void ActionSearch::update()
{
m_actions.clear();
for (auto menuAction: menuBar->actions())
readMenuActions(menuAction->menu());
}
 
void ActionSearch::execute(QString actionName)
{
if (!m_actions.contains(actionName))
return;
 
QAction* action = m_actions[actionName];
if (!action->isEnabled())
return;
action->trigger();
}
 
void ActionSearch::readMenuActions(QMenu* menu)
{
// TODO: check why menu can be null
if (menu == nullptr)
return;
QStringList menus;
QMenu* currentMenu = menu;
while (currentMenu != nullptr)
{
QString title = currentMenu->title().replace("&", "");
menus.prepend(title);
currentMenu = dynamic_cast<QMenu*>(currentMenu->parentWidget());
}
QString menuName = menus.join(" > ");
 
for (auto action: menu->actions())
{
if (action->menu() != nullptr)
{
readMenuActions(action->menu());
continue;
}
 
QString actionName = action->text().replace("&", "");
if (actionName.isEmpty() || !action->isEnabled())
continue;
 
// TODO: we might want to have a multilevel menuName
if (!menuName.isEmpty())
actionName += " (" + menuName +")";
m_actions.insert(actionName, action);
}
}
/trunk/Scribus/scribus/actionsearch.h
0,0 → 1,41
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
 
#ifndef ACTIONSEARCH_H
#define ACTIONSEARCH_H
 
class QAction;
class QMenu;
class QMenuBar;
 
#include <QList>
#include <QHash>
 
#include "scribusapi.h"
 
class SCRIBUS_API ActionSearch
{
public:
ActionSearch(QMenuBar *menuBar);
~ActionSearch() {}
QList<QString> getActionNames() const { return m_actions.keys(); }
 
void update();
void execute(QString actionName);
 
private:
QMenuBar* menuBar;
 
void readMenuActions(QMenu* menu);
 
QHash<QString, QAction*> m_actions; // std::unordered_map
};
 
#endif
/trunk/Scribus/scribus/scribus.cpp
95,6 → 95,7
 
 
#include "actionmanager.h"
#include "actionsearch.h"
#include "appmodehelper.h"
#include "appmodes.h"
#include "canvasmode.h"
156,6 → 157,7
#include "tocgenerator.h"
#include "ui/about.h"
#include "ui/aboutplugins.h"
#include "ui/actionsearchdialog.h"
#include "ui/adjustcmsdialog.h"
#include "ui/aligndistribute.h"
#include "ui/annot.h"
1151,6 → 1153,7
scrMenuMgr->addMenuItemString("helpManual", "Help");
scrMenuMgr->addMenuItemString("helpChat", "Help");
scrMenuMgr->addMenuItemString("SEPARATOR", "Help");
scrMenuMgr->addMenuItemString("helpActionSearch", "Help");
scrMenuMgr->addMenuItemString("helpTooltips", "Help");
scrMenuMgr->addMenuItemString("SEPARATOR", "Help");
scrMenuMgr->addMenuItemString("helpOnlineWWW", "Help");
5222,6 → 5225,24
ScMessageBox::aboutQt(this, tr("About Qt"));
}
 
void ScribusMainWindow::slotHelpActionSearch()
{
ActionSearch actionSearch(this->menuBar());
actionSearch.update();
 
QScopedPointer<ActionSearchDialog> dialog(new ActionSearchDialog(this, actionSearch.getActionNames()));
dialog->setModal(true);
 
int result = dialog->exec();
if (result != QDialog::Accepted)
return;
 
QString actionName = dialog->getActionName();
if (actionName.isEmpty())
return;
actionSearch.execute(actionName);
}
 
void ScribusMainWindow::slotHelpCheckUpdates()
{
About dia(this, About::CheckUpdates);
/trunk/Scribus/scribus/scribus.h
390,6 → 390,7
void slotHelpAbout();
void slotHelpAboutPlugins();
void slotHelpAboutQt();
void slotHelpActionSearch();
void slotHelpCheckUpdates();
void slotRaiseOnlineHelp();
void slotOnlineHelp(const QString & jumpToSection=QString(), const QString & jumpToFile=QString());
/trunk/Scribus/scribus/ui/actionsearchdialog.cpp
0,0 → 1,144
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
 
#include <QDebug>
#include <QMainWindow>
#include <QString>
#include <QEvent>
#include <QKeyEvent>
 
#include "actionsearchdialog.h"
#include "ui_actionsearchdialog.h"
 
ActionSearchDialog::ActionSearchDialog(QMainWindow *parent, QList<QString> actionNames) :
QDialog{parent},
ui{new Ui::ActionSearchDialog},
m_actionNames{actionNames}
{
ui->setupUi(this);
 
ui->filterLineEdit->installEventFilter(this);
installEventFilter(this);
 
connect(ui->filterLineEdit, &QLineEdit::textChanged, this, &ActionSearchDialog::updateList);
connect(this, &ActionSearchDialog::keyArrowUpPressed, this, &ActionSearchDialog::moveSelectionUp);
connect(this, &ActionSearchDialog::keyArrowDownPressed, this, &ActionSearchDialog::moveSelectionDown);
connect(ui->actionsListWidget, &QListWidget::itemDoubleClicked, this, &QDialog::accept);
}
 
ActionSearchDialog::~ActionSearchDialog()
{
delete ui;
}
 
QString ActionSearchDialog::getActionName() const
{
if (ui->actionsListWidget->count() == 0)
return QString();
 
return ui->actionsListWidget->currentItem()->text();
}
 
/**
* @brief capture return, arrow keys, and tab
*/
bool ActionSearchDialog::eventFilter(QObject *obj, QEvent *event)
{
if (obj == ui->filterLineEdit) {
if (event->type() == QEvent::KeyPress) {
return filterLineEditKeyPress(static_cast<QKeyEvent*>(event));
}
}
return false;
}
 
bool ActionSearchDialog::filterLineEditKeyPress(QKeyEvent * event)
{
switch (event->key())
{
case Qt::Key_Enter:
case Qt::Key_Return:
this->accept();
return true;
case Qt::Key_Up:
emit keyArrowUpPressed();
return true;
case Qt::Key_Down:
case Qt::Key_Tab:
emit keyArrowDownPressed();
return true;
default:
return false;
}
}
 
void ActionSearchDialog::moveSelectionUp()
{
int i = ui->actionsListWidget->currentRow();
if (i > 0)
{
ui->actionsListWidget->setCurrentRow(i - 1);
}
}
 
void ActionSearchDialog::moveSelectionDown()
{
int i = ui->actionsListWidget->currentRow();
if (i < ui->actionsListWidget->count() - 1)
ui->actionsListWidget->setCurrentRow(i + 1);
}
 
 
/**
* Fill the list with all actions that match the filter.
* If the filter contains multiple words, acceppts all actions that
* contain all the words
*/
void ActionSearchDialog::updateList()
{
ui->actionsListWidget->clear();
const auto filter = ui->filterLineEdit->text().trimmed();
if (filter.isEmpty())
return;
if (!filter.contains(" "))
{
for (const auto& name: m_actionNames)
{
if (name.contains(filter, Qt::CaseInsensitive))
{
ui->actionsListWidget->addItem(name);
}
}
}
else
{
auto words = filter.split(" ");
for (const auto& name: m_actionNames)
{
bool matches(true);
for (const auto& word: words)
{
if (!name.contains(word, Qt::CaseInsensitive))
{
matches = false;
break;
}
}
if (!matches)
continue;
ui->actionsListWidget->addItem(name);
}
}
if (ui->actionsListWidget->count() > 0)
ui->actionsListWidget->setCurrentRow(0);
}
/trunk/Scribus/scribus/ui/actionsearchdialog.h
0,0 → 1,52
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
 
#ifndef ACTIONSEARCHDIALOG_H
#define ACTIONSEARCHDIALOG_H
 
class QKeyEvent;
class QMainWindow;
class QString;
class QEvent;
 
#include <QDialog>
#include <QList>
 
namespace Ui { class ActionSearchDialog; }
 
class ActionSearchDialog : public QDialog
{
Q_OBJECT
 
public:
explicit ActionSearchDialog(QMainWindow *parent, QList<QString> actionNames);
~ActionSearchDialog();
 
QString getActionName() const;
 
protected:
bool eventFilter(QObject *obj, QEvent *ev);
 
private:
Ui::ActionSearchDialog *ui;
QList<QString> m_actionNames;
 
bool filterLineEditKeyPress(QKeyEvent * event);
 
private slots:
void moveSelectionUp();
void moveSelectionDown();
void updateList();
 
signals:
void keyArrowUpPressed();
void keyArrowDownPressed();
};
 
#endif
/trunk/Scribus/scribus/ui/actionsearchdialog.ui
0,0 → 1,31
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ActionSearchDialog</class>
<widget class="QDialog" name="ActionSearchDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Action Search</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLineEdit" name="filterLineEdit">
<property name="placeholderText">
<string>Search for action...</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="actionsListWidget"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
/trunk/Scribus/win32/msvc2013/scribus-main/Scribus.vcxproj
236,6 → 236,7
</ItemDefinitionGroup>
<ItemGroup>
<moc Include="..\..\..\scribus\appmodehelper.h" />
<ClInclude Include="..\..\..\scribus\actionsearch.h" />
<ClInclude Include="..\..\..\scribus\appmodes.h" />
<ClInclude Include="..\..\..\scribus\collapsedtablepainterex.h" />
<ClInclude Include="..\..\..\scribus\colormgmt\scciedata.h" />
605,6 → 606,7
<moc Include="..\..\..\scribus\ui\pdfversionmodel.h" />
<moc Include="..\..\..\scribus\ui\cxfimportdialog.h" />
<moc Include="..\..\..\scribus\ui\numformatcombo.h" />
<moc Include="..\..\..\scribus\ui\actionsearchdialog.h" />
<ClInclude Include="..\..\..\scribus\ui\propertywidgetbase.h" />
<moc Include="..\..\..\scribus\pslib.h" />
<moc Include="..\..\..\scribus\ui\query.h" />
843,6 → 845,7
<ClInclude Include="..\..\..\scribus\colormgmt\sclcms2colortransformimpl.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\scribus\actionsearch.cpp" />
<ClCompile Include="..\..\..\scribus\appmodehelper.cpp" />
<ClCompile Include="..\..\..\scribus\collapsedtablepainterex.cpp" />
<ClCompile Include="..\..\..\scribus\colormgmt\scciedata.cpp" />
902,6 → 905,7
<ClCompile Include="..\..\..\scribus\ui\about.cpp" />
<ClCompile Include="..\..\..\scribus\ui\aboutplugins.cpp" />
<ClCompile Include="..\..\..\scribus\actionmanager.cpp" />
<ClCompile Include="..\..\..\scribus\ui\actionsearchdialog.cpp" />
<ClCompile Include="..\..\..\scribus\ui\adjustcmsdialog.cpp" />
<ClCompile Include="..\..\..\scribus\ui\aligndistribute.cpp" />
<ClCompile Include="..\..\..\scribus\ui\alignselect.cpp" />
1528,6 → 1532,7
</ItemGroup>
<ItemGroup>
<uic Include="..\..\..\scribus\ui\aboutplugins.ui" />
<uic Include="..\..\..\scribus\ui\actionsearchdialog.ui" />
<uic Include="..\..\..\scribus\ui\aligndistribute.ui" />
<uic Include="..\..\..\scribus\ui\annot.ui" />
<uic Include="..\..\..\scribus\ui\arcvectorbase.ui" />
/trunk/Scribus/win32/msvc2013/scribus-main/Scribus.vcxproj.filters
797,10 → 797,10
<ClInclude Include="..\..\..\scribus\sccolorstructs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\scribus\ui\numformatcombo.h">
<ClInclude Include="..\..\..\scribus\actionsearch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\scribus\ui\smnumformatcombo.h">
<ClInclude Include="..\..\..\scribus\ui\actionsearchdialog.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
2488,6 → 2488,12
<ClCompile Include="..\..\..\scribus\ui\smnumformatcombo.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\scribus\actionsearch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\scribus\ui\actionsearchdialog.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Scribus.rc">
2866,6 → 2872,9
<uic Include="..\..\..\scribus\ui\cxfimportdialogbase.ui">
<Filter>Form Files</Filter>
</uic>
<uic Include="..\..\..\scribus\ui\actionsearchdialog.ui">
<Filter>Form Files</Filter>
</uic>
</ItemGroup>
<ItemGroup>
<lrelease Include="..\..\..\resources\translations\scribus.af.ts">
4103,6 → 4112,12
<moc Include="..\..\..\scribus\ui\cxfimportdialog.h">
<Filter>Header Files</Filter>
</moc>
<moc Include="..\..\..\scribus\ui\numformatcombo.h">
<Filter>Header Files</Filter>
</moc>
<moc Include="..\..\..\scribus\ui\smnumformatcombo.h">
<Filter>Header Files</Filter>
</moc>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\..\scribus\color.h">
/trunk/Scribus/win32/msvc2015/scribus-main/Scribus.vcxproj
236,6 → 236,7
</ItemDefinitionGroup>
<ItemGroup>
<moc Include="..\..\..\scribus\appmodehelper.h" />
<ClInclude Include="..\..\..\scribus\actionsearch.h" />
<ClInclude Include="..\..\..\scribus\appmodes.h" />
<ClInclude Include="..\..\..\scribus\collapsedtablepainterex.h" />
<ClInclude Include="..\..\..\scribus\colormgmt\scciedata.h" />
605,6 → 606,7
<moc Include="..\..\..\scribus\ui\pdfversionmodel.h" />
<moc Include="..\..\..\scribus\ui\cxfimportdialog.h" />
<moc Include="..\..\..\scribus\ui\numformatcombo.h" />
<moc Include="..\..\..\scribus\ui\actionsearchdialog.h" />
<ClInclude Include="..\..\..\scribus\ui\propertywidgetbase.h" />
<moc Include="..\..\..\scribus\pslib.h" />
<moc Include="..\..\..\scribus\ui\query.h" />
843,6 → 845,7
<ClInclude Include="..\..\..\scribus\colormgmt\sclcms2colortransformimpl.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\scribus\actionsearch.cpp" />
<ClCompile Include="..\..\..\scribus\appmodehelper.cpp" />
<ClCompile Include="..\..\..\scribus\collapsedtablepainterex.cpp" />
<ClCompile Include="..\..\..\scribus\colormgmt\scciedata.cpp" />
902,6 → 905,7
<ClCompile Include="..\..\..\scribus\ui\about.cpp" />
<ClCompile Include="..\..\..\scribus\ui\aboutplugins.cpp" />
<ClCompile Include="..\..\..\scribus\actionmanager.cpp" />
<ClCompile Include="..\..\..\scribus\ui\actionsearchdialog.cpp" />
<ClCompile Include="..\..\..\scribus\ui\adjustcmsdialog.cpp" />
<ClCompile Include="..\..\..\scribus\ui\aligndistribute.cpp" />
<ClCompile Include="..\..\..\scribus\ui\alignselect.cpp" />
1528,6 → 1532,7
</ItemGroup>
<ItemGroup>
<uic Include="..\..\..\scribus\ui\aboutplugins.ui" />
<uic Include="..\..\..\scribus\ui\actionsearchdialog.ui" />
<uic Include="..\..\..\scribus\ui\aligndistribute.ui" />
<uic Include="..\..\..\scribus\ui\annot.ui" />
<uic Include="..\..\..\scribus\ui\arcvectorbase.ui" />
/trunk/Scribus/win32/msvc2015/scribus-main/Scribus.vcxproj.filters
797,10 → 797,10
<ClInclude Include="..\..\..\scribus\sccolorstructs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\scribus\ui\numformatcombo.h">
<ClInclude Include="..\..\..\scribus\actionsearch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\scribus\ui\smnumformatcombo.h">
<ClInclude Include="..\..\..\scribus\ui\actionsearchdialog.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
2488,6 → 2488,12
<ClCompile Include="..\..\..\scribus\ui\smnumformatcombo.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\scribus\actionsearch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\scribus\ui\actionsearchdialog.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Scribus.rc">
2866,6 → 2872,9
<uic Include="..\..\..\scribus\ui\cxfimportdialogbase.ui">
<Filter>Form Files</Filter>
</uic>
<uic Include="..\..\..\scribus\ui\actionsearchdialog.ui">
<Filter>Form Files</Filter>
</uic>
</ItemGroup>
<ItemGroup>
<lrelease Include="..\..\..\resources\translations\scribus.af.ts">
4103,6 → 4112,12
<moc Include="..\..\..\scribus\ui\cxfimportdialog.h">
<Filter>Header Files</Filter>
</moc>
<moc Include="..\..\..\scribus\ui\numformatcombo.h">
<Filter>Header Files</Filter>
</moc>
<moc Include="..\..\..\scribus\ui\smnumformatcombo.h">
<Filter>Header Files</Filter>
</moc>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\..\scribus\color.h">