View Issue Details

IDProjectCategoryView StatusLast Update
0015552ScribusUsabilitypublic2019-07-30 21:27
Reporterale Assigned Toale  
PrioritynormalSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
Product Version1.5.5.svn 
Fixed in Version1.5.5.svn 
Summary0015552: Add possibility to search through scribus actions
Descriptionprobono asked for a / command that would allow to search through the scribus actions (like in olive or gimp).

i've created a plugin for it and will upload a tar ball soon...

or just get it from

https://github.com/aoloe/scribus-plugin-actionSearch

as soon as i write a note that it's ready : - )
Additional Informationi would be glad if the plugin is committed "as is".

if modifications are needed please comment on github and / or make pull requests.
Tagspatch
PatchNo

Activities

ale

2019-01-24 14:35

manager   ~0045854

patch attached

or, even better, get the code from

https://github.com/aoloe/scribus-plugin-actionSearch
actionSearch.tar (20,480 bytes)

jghali

2019-07-25 21:35

administrator   ~0046423

I've worked on that patch so as to integrate it into main code. When possible the "menu path" is now also displayed into the action search window.
15552_action_search.patch (25,784 bytes)   
Index: Scribus.pro
===================================================================
--- Scribus.pro	(revision 23086)
+++ Scribus.pro	(working copy)
@@ -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 \
Index: scribus/actionmanager.cpp
===================================================================
--- scribus/actionmanager.cpp	(revision 23086)
+++ scribus/actionmanager.cpp	(working copy)
@@ -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
Index: scribus/actionsearch.cpp
===================================================================
--- scribus/actionsearch.cpp	(nonexistent)
+++ scribus/actionsearch.cpp	(working copy)
@@ -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);
+	}
+}
Index: scribus/actionsearch.h
===================================================================
--- scribus/actionsearch.h	(nonexistent)
+++ scribus/actionsearch.h	(working copy)
@@ -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
Index: scribus/CMakeLists.txt
===================================================================
--- scribus/CMakeLists.txt	(revision 23086)
+++ scribus/CMakeLists.txt	(working copy)
@@ -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
Index: scribus/scribus.cpp
===================================================================
--- scribus/scribus.cpp	(revision 23086)
+++ scribus/scribus.cpp	(working copy)
@@ -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);
Index: scribus/scribus.h
===================================================================
--- scribus/scribus.h	(revision 23086)
+++ scribus/scribus.h	(working copy)
@@ -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());
Index: scribus/ui/actionsearchdialog.cpp
===================================================================
--- scribus/ui/actionsearchdialog.cpp	(nonexistent)
+++ scribus/ui/actionsearchdialog.cpp	(working copy)
@@ -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);
+}
Index: scribus/ui/actionsearchdialog.h
===================================================================
--- scribus/ui/actionsearchdialog.h	(nonexistent)
+++ scribus/ui/actionsearchdialog.h	(working copy)
@@ -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
Index: scribus/ui/actionsearchdialog.ui
===================================================================
--- scribus/ui/actionsearchdialog.ui	(nonexistent)
+++ scribus/ui/actionsearchdialog.ui	(working copy)
@@ -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>
Index: win32/msvc2013/scribus-main/Scribus.vcxproj
===================================================================
--- win32/msvc2013/scribus-main/Scribus.vcxproj	(revision 23086)
+++ win32/msvc2013/scribus-main/Scribus.vcxproj	(working copy)
@@ -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" />
Index: win32/msvc2013/scribus-main/Scribus.vcxproj.filters
===================================================================
--- win32/msvc2013/scribus-main/Scribus.vcxproj.filters	(revision 23086)
+++ win32/msvc2013/scribus-main/Scribus.vcxproj.filters	(working copy)
@@ -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">
Index: win32/msvc2015/scribus-main/Scribus.vcxproj
===================================================================
--- win32/msvc2015/scribus-main/Scribus.vcxproj	(revision 23086)
+++ win32/msvc2015/scribus-main/Scribus.vcxproj	(working copy)
@@ -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" />
Index: win32/msvc2015/scribus-main/Scribus.vcxproj.filters
===================================================================
--- win32/msvc2015/scribus-main/Scribus.vcxproj.filters	(revision 23086)
+++ win32/msvc2015/scribus-main/Scribus.vcxproj.filters	(working copy)
@@ -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">
15552_action_search.patch (25,784 bytes)   

Issue History

Date Modified Username Field Change
2019-01-24 10:29 ale New Issue
2019-01-24 14:35 ale File Added: actionSearch.tar
2019-01-24 14:35 ale Note Added: 0045854
2019-01-24 14:35 ale Assigned To => ale
2019-01-24 14:35 ale Status new => assigned
2019-01-24 14:35 ale Tag Attached: patch
2019-01-24 14:35 ale Summary / to search through the scribus actions => [Patch] / to search through the scribus actions
2019-07-25 21:35 jghali File Added: 15552_action_search.patch
2019-07-25 21:35 jghali Note Added: 0046423
2019-07-27 23:10 jghali Summary [Patch] / to search through the scribus actions => Add possibility to search through scribus actions
2019-07-27 23:17 jghali Status assigned => resolved
2019-07-27 23:17 jghali Resolution open => fixed
2019-07-27 23:17 jghali Fixed in Version => 1.5.5.svn
2019-07-30 21:27 cbradney Status resolved => closed