[spectacle] /: Add new button "Record screen" that allows to select a Screen Recording tool

Gregor Mi null at kde.org
Thu Feb 15 09:09:04 UTC 2018


Git commit 45c37a64e1cc9f683ee51bdf6398db89fc241b23 by Gregor Mi.
Committed on 15/02/2018 at 09:09.
Pushed by gregormi into branch 'master'.

Add new button "Record screen" that allows to select a Screen Recording tool

Summary:
Adds a new button "Record screen" that allows to select a screen recording tool, currently Peek and SimpleScreenRecorder (and soon vokoscreen: https://phabricator.kde.org/D10390)

{F5698788}

Moved from Reviewboard: https://git.reviewboard.kde.org/r/130215/

Reviewers: ngraham, #spectacle, rkflx

Reviewed By: ngraham, #spectacle, rkflx

Subscribers: rkflx

Maniphest Tasks: T7841

Differential Revision: https://phabricator.kde.org/D10295

M  +1    -0    CMakeLists.txt
M  +15   -7    doc/index.docbook
M  +1    -0    src/CMakeLists.txt
M  +9    -0    src/Gui/KSMainWindow.cpp
M  +4    -0    src/Gui/KSMainWindow.h

https://commits.kde.org/spectacle/45c37a64e1cc9f683ee51bdf6398db89fc241b23

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3a640df..5cae6ee 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -56,6 +56,7 @@ find_package(
         WindowSystem
         DocTools
         Declarative
+        NewStuff
 )
 
 add_definitions(-DQT_NO_URL_CAST_FROM_STRING)
diff --git a/doc/index.docbook b/doc/index.docbook
index b0af19f..e3d87a5 100644
--- a/doc/index.docbook
+++ b/doc/index.docbook
@@ -189,31 +189,39 @@
 		<sect1>
 			<title>Buttons</title>
 
-			<para>There are six buttons located at the bottom of the &spectacle; window. Their functions are described below:</para>
+			<para>There are some buttons located at the bottom of the &spectacle; window. Their functions are described below:</para>
 
 			<variablelist>
 				<varlistentry>
 					<term><guibutton>Help</guibutton></term>
 					<listitem>
-						<para>This button gives you the common menu items described in the <ulink url="help:/fundamentals/ui.html#menus-help">Help Menu</ulink> of the &kde; Fundamentals.</para>
+						<para>Gives you the common menu items described in the <ulink url="help:/fundamentals/ui.html#menus-help">Help Menu</ulink> of the &kde; Fundamentals.</para>
 					</listitem>
 				</varlistentry>
 				<varlistentry>
 					<term><guibutton>Configure...</guibutton></term>
 					<listitem>
-						<para>This button gives you access to Spectacle's Configure window where you can change the capture settings and default save location and filename.</para>
+						<para>Gives you access to Spectacle's Configure window where you can change the capture settings and default save location and filename.</para>
 					</listitem>
 				</varlistentry>
 				<varlistentry>
 					<term><guibutton>Tools</guibutton></term>
 					<listitem>
-						<para>Clicking on this button shows a drop-down menu, offering access to various functions. You can open the <guimenuitem>Print</guimenuitem> dialog, and <guimenuitem>Open Screenshots Folder</guimenuitem> is a shortcut to highlight the last saved screenshot in the default file manager.</para>
+                        <para>Opens a drop-down menu which offers various tools:</para>
+                        <itemizedlist>
+                            <listitem>
+                                <para>the print dialog</para>
+                            </listitem>
+                            <listitem>
+                                <para>a range of external programs for Screen Recording</para>
+                            </listitem>
+                        </itemizedlist>
 					</listitem>
 				</varlistentry>
 				<varlistentry>
 					<term><guibutton>Export</guibutton></term>
 					<listitem>
-						<para>This drop-down menu will allow you to directly open the screenshot with all programs that are associated with the PNG (Portable Network Graphics) &MIME; type. Depending on what programs are installed, you will be able to open and edit the snapshot in your graphics applications or viewers.</para>
+						<para>Opens a drop-down menu that will allow you to directly open the screenshot with all programs that are associated with the PNG (Portable Network Graphics) &MIME; type. Depending on what programs are installed, you will be able to open and edit the snapshot in your graphics applications or viewers.</para>
 
 						<para>Furthermore, if you have the <application>KIPI Plugins</application> installed, you will be able to email your screenshots and export them directly to some social networks and websites.</para>
 					</listitem>
@@ -221,13 +229,13 @@
 				<varlistentry>
 					<term><guibutton>Copy To Clipboard</guibutton></term>
 					<listitem>
-						<para>This button copies the current screenshot to the clipboard. You can also use the <keycombo action="simul">&Ctrl;<keycap>C</keycap></keycombo> keyboard shortcut for this.</para>
+						<para>Copies the current screenshot to the clipboard. You can also use the <keycombo action="simul">&Ctrl;<keycap>C</keycap></keycombo> keyboard shortcut for this.</para>
 					</listitem>
 				</varlistentry>
 				<varlistentry>
 					<term><guibutton>Save As</guibutton></term>
 					<listitem>
-						<para>Clicking this button saves the screenshot as a PNG image to a location of your choosing. Clicking on the arrow on the side will expose the other save mode, <guimenuitem>Save</guimenuitem>, which will save the screenshot as a PNG image to the standard location (which defaults to your Pictures folder). By default, the last-used save mode is remembered for next time.</para>
+						<para>Saves the screenshot as a PNG image in your default Pictures folder and immediately exits the application.</para>
 					</listitem>
 				</varlistentry>
 			</variablelist>
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 057da34..71d22ed 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -75,6 +75,7 @@ target_link_libraries(
         KF5::WindowSystem
         KF5::XmlGui
         KF5::Declarative
+        KF5::NewStuff
 )
 
 if(XCB_FOUND)
diff --git a/src/Gui/KSMainWindow.cpp b/src/Gui/KSMainWindow.cpp
index 8c6aa5b..02f8a8a 100644
--- a/src/Gui/KSMainWindow.cpp
+++ b/src/Gui/KSMainWindow.cpp
@@ -41,6 +41,7 @@
 #include <KAboutData>
 #include <KWindowSystem>
 #include <KIO/OpenFileManagerWindowJob>
+#include <KNS3/KMoreToolsMenuFactory>
 
 #include "SettingsDialog/SettingsDialog.h"
 #include "ExportMenu.h"
@@ -66,6 +67,7 @@ KSMainWindow::KSMainWindow(bool onClickAvailable, QWidget *parent) :
     mSaveAction(new QAction),
     mMessageWidget(new KMessageWidget),
     mToolsMenu(new QMenu),
+    mScreenRecorderToolsMenu(new QMenu),
     mExportMenu(new ExportMenu(this)),
     mOnClickAvailable(onClickAvailable)
 {
@@ -150,6 +152,13 @@ void KSMainWindow::init()
     KGuiItem::assign(mToolsButton, KGuiItem(i18n("Tools")));
     mToolsButton->setIcon(QIcon::fromTheme(QStringLiteral("application-menu")));
     mDialogButtonBox->addButton(mToolsButton, QDialogButtonBox::ActionRole);
+    mScreenRecorderToolsMenu = mToolsMenu->addMenu(i18n("Record Screen"));
+    connect(mScreenRecorderToolsMenu, &QMenu::aboutToShow, [this]()
+    {
+        mScreenrecorderToolsMenuFactory.reset(new KMoreToolsMenuFactory(QStringLiteral("spectacle/screenrecorder-tools")));
+        mScreenRecorderToolsMenu->clear();
+        mScreenrecorderToolsMenuFactory->fillMenuFromGroupingNames(mScreenRecorderToolsMenu, { QStringLiteral("screenrecorder") });
+    } );
     mToolsButton->setMenu(mToolsMenu);
 
     KGuiItem::assign(mSendToButton, KGuiItem(i18n("Export")));
diff --git a/src/Gui/KSMainWindow.h b/src/Gui/KSMainWindow.h
index 1fb0e1d..0b8086c 100644
--- a/src/Gui/KSMainWindow.h
+++ b/src/Gui/KSMainWindow.h
@@ -33,6 +33,8 @@
 #include "KSWidget.h"
 #include "SpectacleConfig.h"
 
+class KMoreToolsMenuFactory;
+
 class KSMainWindow : public QDialog
 {
     Q_OBJECT
@@ -89,6 +91,8 @@ class KSMainWindow : public QDialog
     QAction          *mSaveAction;
     KMessageWidget   *mMessageWidget;
     QMenu            *mToolsMenu;
+    QMenu            *mScreenRecorderToolsMenu;
+    QScopedPointer<KMoreToolsMenuFactory> mScreenrecorderToolsMenuFactory;
     ExportMenu       *mExportMenu;
     bool              mOnClickAvailable;
 };


More information about the kde-doc-english mailing list