QtSupport: Show thumbnails for YoutTube videos in "Tutorials" page
This change replaces the generic thumbnails for online talks and online tutorials with an actual video thumbnail + "play" overlay. The video thumbnails are stored as .webm files in order to have good compression and reduced visual artifacts. In order to fetch and process the thumbnails from YouTube, there is now the new Python script downloadytthumbnails.py: usage: downloadytthumbnails.py [-h] [-xmlfile XMLFILE] [-outputdir OUTPUTDIR] [-overwrite] Parses a 'qtcreator_tutorials.xml', downloads the video thumbnails from YouTube, scales them down to WelcomeScreen thumbnail size and saves them as .webm files. optional arguments: -h, --help show this help message and exit -xmlfile XMLFILE The 'qtcreator_tutorials.xml' file. -outputdir OUTPUTDIR Where the downloaded files are written. -overwrite Overwrite existing downloaded files. Task-number: QTCREATORBUG-26937 Change-Id: Id7a91c757e5d87996026e3d0d9e63f1cb7f2d76b Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
@@ -30,6 +30,7 @@
|
||||
|
||||
#include <utils/fileutils.h>
|
||||
#include <utils/pathchooser.h>
|
||||
#include <utils/stylehelper.h>
|
||||
#include <utils/theme/theme.h>
|
||||
#include <utils/winutils.h>
|
||||
|
||||
@@ -254,6 +255,14 @@ protected:
|
||||
painter->drawText(currentPixmapRect.translated(0, -WelcomePageHelpers::ItemGap),
|
||||
exampleItem->videoLength, Qt::AlignBottom | Qt::AlignHCenter);
|
||||
painter->restore();
|
||||
static const QPixmap playOverlay =
|
||||
StyleHelper::dpiSpecificImageFile(":/qtsupport/images/icons/playoverlay.png");
|
||||
const QSize playOverlaySize = playOverlay.size() / playOverlay.devicePixelRatio();
|
||||
const QPoint playOverlayPos =
|
||||
QPoint((currentPixmapRect.width() - playOverlaySize.width()) / 2,
|
||||
(currentPixmapRect.height() - playOverlaySize.height()) / 2)
|
||||
+ currentPixmapRect.topLeft();
|
||||
painter->drawPixmap(playOverlayPos, playOverlay);
|
||||
}
|
||||
}
|
||||
|
||||
|
BIN
src/plugins/qtsupport/images/icons/playoverlay.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
src/plugins/qtsupport/images/icons/playoverlay@2x.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 8.6 KiB |
BIN
src/plugins/qtsupport/images/icons/youtube-xhiVA0P4yk.webp
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
src/plugins/qtsupport/images/icons/youtube1tSpq5OLkYI.webp
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
src/plugins/qtsupport/images/icons/youtube1w0ak9RNNWY.webp
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
src/plugins/qtsupport/images/icons/youtube2RvhhEAZQxM.webp
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
src/plugins/qtsupport/images/icons/youtube3o2Wo4YzlII.webp
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
src/plugins/qtsupport/images/icons/youtube9BcAYDlpuT8.webp
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
src/plugins/qtsupport/images/icons/youtube9xqhq9nDiOg.webp
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeB0X5FOev9Lw.webp
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeBkgjJfxYN20.webp
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeDP0lMoLVneY.webp
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeDRFz0Tll4G8.webp
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeECA8_oLT0ZE.webp
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeG0AbgVHGdXI.webp
Normal file
After Width: | Height: | Size: 6.5 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeKo3DuCgFamo.webp
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubePzV2MYRAUYQ.webp
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeR6zWLfHIYJw.webp
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeT_13aX5NTPk.webp
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeTiJiF0MOOFc.webp
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeW3WC-VpKdGQ.webp
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeWIRRoPxIerc.webp
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeX0kEkB0ewyw.webp
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeY-MM-9FigTc.webp
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeYJfFwDBOvqk.webp
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeau3brB7lNms.webp
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubehrKz63Q_Rf0.webp
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubejbx3Oq1Q4gY.webp
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubemAhwHsGdJuI.webp
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubemn-JmXIMCqk.webp
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubenmvurCcsWos.webp
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubepN0pRBUqrrc.webp
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeqclquZ99ZVQ.webp
Normal file
After Width: | Height: | Size: 6.0 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubesRihJdZFuCg.webp
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubetnZo9umrPtg.webp
Normal file
After Width: | Height: | Size: 6.6 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubeuuhmSZxK1mk.webp
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubev4glCQt2jE0.webp
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubev_ynSET9FHU.webp
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubexNIz78IPBu0.webp
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
src/plugins/qtsupport/images/icons/youtubezAqSiIGdj8M.webp
Normal file
After Width: | Height: | Size: 7.7 KiB |
@@ -26,156 +26,156 @@
|
||||
<tags>qt quick,controls,tumbler,help</tags>
|
||||
</tutorial>
|
||||
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: How to set up and deploy an application using Qt for Device Creation" isVideo="true" videoUrl="https://youtu.be/1tSpq5OLkYI" videoLength="5:48">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtube1tSpq5OLkYI.webp" difficulty="" projectPath="" name="Online: How to set up and deploy an application using Qt for Device Creation" isVideo="true" videoUrl="https://youtu.be/1tSpq5OLkYI" videoLength="5:48">
|
||||
<description><![CDATA[Using Qt Creator to deploy applications to an embedded device.]]></description>
|
||||
<tags>qt creator,embedded,device creation,video,2021</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: Qt SCXML and State Machine Tooling in Qt Creator" isVideo="true" videoUrl="https://youtu.be/9xqhq9nDiOg" videoLength="4:53">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtube9xqhq9nDiOg.webp" difficulty="" projectPath="" name="Online: Qt SCXML and State Machine Tooling in Qt Creator" isVideo="true" videoUrl="https://youtu.be/9xqhq9nDiOg" videoLength="4:53">
|
||||
<description><![CDATA[Creating state machines.]]></description>
|
||||
<tags>qt creator,SCXML,video</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: Using C++ Models in QML - To-do List" isVideo="true" videoUrl="https://www.youtube.com/watch?v=9BcAYDlpuT8" videoLength="49:48">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtube9BcAYDlpuT8.webp" difficulty="" projectPath="" name="Online: Using C++ Models in QML - To-do List" isVideo="true" videoUrl="https://www.youtube.com/watch?v=9BcAYDlpuT8" videoLength="49:48">
|
||||
<description><![CDATA[Creating and using a C++ model in QML.]]></description>
|
||||
<tags>qt creator,qt quick,c++,video</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: Qt Creator - Meet Qt Creator" isVideo="true" videoUrl="https://youtu.be/zAqSiIGdj8M" videoLength="2:06">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubezAqSiIGdj8M.webp" difficulty="" projectPath="" name="Online: Qt Creator - Meet Qt Creator" isVideo="true" videoUrl="https://youtu.be/zAqSiIGdj8M" videoLength="2:06">
|
||||
<description><![CDATA[Overview of Qt Creator.]]></description>
|
||||
<tags>qt creator,video</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: Qt Creator - Examples" isVideo="true" videoUrl="https://www.youtube.com/watch?v=R6zWLfHIYJw" videoLength="9:29">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeR6zWLfHIYJw.webp" difficulty="" projectPath="" name="Online: Qt Creator - Examples" isVideo="true" videoUrl="https://www.youtube.com/watch?v=R6zWLfHIYJw" videoLength="9:29">
|
||||
<description><![CDATA[Using Qt Creator tutorials and examples to develop Qt applications.]]></description>
|
||||
<tags>qt creator,video,2018</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: Qt Creator - Introduction to Qt Quick Controls" isVideo="true" videoUrl="https://www.youtube.com/watch?v=uuhmSZxK1mk" videoLength="7:09">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeuuhmSZxK1mk.webp" difficulty="" projectPath="" name="Online: Qt Creator - Introduction to Qt Quick Controls" isVideo="true" videoUrl="https://www.youtube.com/watch?v=uuhmSZxK1mk" videoLength="7:09">
|
||||
<description><![CDATA[Using Qt Quick Controls to develop Qt Quick applications.]]></description>
|
||||
<tags>qt creator,qt quick,controls,video,2018</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: Debugging inside Qt Creator" isVideo="true" videoUrl="https://youtu.be/Y-MM-9FigTc" videoLength="21:54">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeY-MM-9FigTc.webp" difficulty="" projectPath="" name="Online: Debugging inside Qt Creator" isVideo="true" videoUrl="https://youtu.be/Y-MM-9FigTc" videoLength="21:54">
|
||||
<description><![CDATA[Debugging applications in Qt Creator.]]></description>
|
||||
<tags>qt creator,debugging,2021</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: How to do translations with Qt Linguist" isVideo="true" videoUrl="https://youtu.be/xNIz78IPBu0" videoLength="9:14">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubexNIz78IPBu0.webp" difficulty="" projectPath="" name="Online: How to do translations with Qt Linguist" isVideo="true" videoUrl="https://youtu.be/xNIz78IPBu0" videoLength="9:14">
|
||||
<description><![CDATA[Preparing applications for translation, translating them with Qt Linguist, and using the translations in apps.]]></description>
|
||||
<tags>qt creator,qt linguist,translation,2021</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: Qt Windows Online Installer walkthrough" isVideo="true" videoUrl="https://youtu.be/-xhiVA0P4yk" videoLength="6:17">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtube-xhiVA0P4yk.webp" difficulty="" projectPath="" name="Online: Qt Windows Online Installer walkthrough" isVideo="true" videoUrl="https://youtu.be/-xhiVA0P4yk" videoLength="6:17">
|
||||
<description><![CDATA[Downloading and installing Qt with the options that you want.]]></description>
|
||||
<tags>qt,installation,online installer,modules,video,2021</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: How to install and set up Qt for Device Creation on Linux" isVideo="true" videoUrl="https://youtu.be/YJfFwDBOvqk" videoLength="6:52">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeYJfFwDBOvqk.webp" difficulty="" projectPath="" name="Online: How to install and set up Qt for Device Creation on Linux" isVideo="true" videoUrl="https://youtu.be/YJfFwDBOvqk" videoLength="6:52">
|
||||
<description><![CDATA[Downloading and installing Qt Device Creation with the options that you want.]]></description>
|
||||
<tags>embedded,installation,device creation,2021</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: Creating a simple widget app" isVideo="true" videoUrl="https://youtu.be/jbx3Oq1Q4gY" videoLength="6:08">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubejbx3Oq1Q4gY.webp" difficulty="" projectPath="" name="Online: Creating a simple widget app" isVideo="true" videoUrl="https://youtu.be/jbx3Oq1Q4gY" videoLength="6:08">
|
||||
<description><![CDATA[Creating a simple widget-based application and running it on your development machine using Qt Creator 5.0.]]></description>
|
||||
<tags>qt creator,widgets,2021</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: Creating a simple Qt Quick app" isVideo="true" videoUrl="https://youtu.be/mAhwHsGdJuI" videoLength="8:21">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubemAhwHsGdJuI.webp" difficulty="" projectPath="" name="Online: Creating a simple Qt Quick app" isVideo="true" videoUrl="https://youtu.be/mAhwHsGdJuI" videoLength="8:21">
|
||||
<description><![CDATA[Creating a simple Qt Quick application and running it on your development machine using Qt Creator 5.0.]]></description>
|
||||
<tags>qt creator,qt quick,2021</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: Qt Widgets or Qt Quick" isVideo="true" videoUrl="https://youtu.be/2RvhhEAZQxM" videoLength="5:00">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtube2RvhhEAZQxM.webp" difficulty="" projectPath="" name="Online: Qt Widgets or Qt Quick" isVideo="true" videoUrl="https://youtu.be/2RvhhEAZQxM" videoLength="5:00">
|
||||
<description><![CDATA[Learning the differences between Qt Widgets and Qt Quick and making the right choice for your application needs.]]></description>
|
||||
<tags>qt quick,widgets,ui,video,2021</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: How to install and set up Qt for MCUs" isVideo="true" videoUrl="https://youtu.be/DRFz0Tll4G8" videoLength="8:29">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeDRFz0Tll4G8.webp" difficulty="" projectPath="" name="Online: How to install and set up Qt for MCUs" isVideo="true" videoUrl="https://youtu.be/DRFz0Tll4G8" videoLength="8:29">
|
||||
<description><![CDATA[Downloading and installing Qt for MCUs with the options that you want.]]></description>
|
||||
<tags>qt,mcus,video,STM32H750B-DISCOVERY,2021</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: How to build your first 'Qt for MCUs' application" isVideo="true" videoUrl="https://youtu.be/BkgjJfxYN20" videoLength="21:54">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeBkgjJfxYN20.webp" difficulty="" projectPath="" name="Online: How to build your first 'Qt for MCUs' application" isVideo="true" videoUrl="https://youtu.be/BkgjJfxYN20" videoLength="21:54">
|
||||
<description><![CDATA[Building your first application for the NXP IMXRT1050 device.]]></description>
|
||||
<tags>qtformcus,mcus,qt,video,NXP IMXRT1050-EVKB,2020</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/videotutorialicon.png" difficulty="" projectPath="" name="Online: How to create a simple application with Qt for MCUs" isVideo="true" videoUrl="https://youtu.be/mn-JmXIMCqk" videoLength="5:16">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubemn-JmXIMCqk.webp" difficulty="" projectPath="" name="Online: How to create a simple application with Qt for MCUs" isVideo="true" videoUrl="https://youtu.be/mn-JmXIMCqk" videoLength="5:16">
|
||||
<description><![CDATA[Creating a simple Qt for MCUs application and running it on your development machine using Qt Creator 5.0.]]></description>
|
||||
<tags>qtformcus,mcus,qt,video,2021</tags>
|
||||
</tutorial>
|
||||
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: Custom Qt Creator Wizards" isVideo="true" videoUrl="https://www.youtube.com/watch?v=Ko3DuCgFamo" videoLength="27:21">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeKo3DuCgFamo.webp" difficulty="" projectPath="" name="Talk: Custom Qt Creator Wizards" isVideo="true" videoUrl="https://www.youtube.com/watch?v=Ko3DuCgFamo" videoLength="27:21">
|
||||
<description><![CDATA[Adding custom file and project creation wizards to Qt Creator.]]></description>
|
||||
<tags>qt creator,wizard,talk,2015</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: Extending Qt Creator" isVideo="true" videoUrl="http://www.youtube.com/watch?v=DP0lMoLVneY" videoLength="59:49">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeDP0lMoLVneY.webp" difficulty="" projectPath="" name="Talk: Extending Qt Creator" isVideo="true" videoUrl="http://www.youtube.com/watch?v=DP0lMoLVneY" videoLength="59:49">
|
||||
<description><![CDATA[Customizing Qt Creator to fit your own or your customers' purposes.]]></description>
|
||||
<tags>qt creator,configuration,talk,2013</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: How to create a plugin for Qt Creator" isVideo="true" videoUrl="https://youtu.be/PzV2MYRAUYQ" videoLength="55:37">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubePzV2MYRAUYQ.webp" difficulty="" projectPath="" name="Talk: How to create a plugin for Qt Creator" isVideo="true" videoUrl="https://youtu.be/PzV2MYRAUYQ" videoLength="55:37">
|
||||
<description><![CDATA[Adding plugins to Qt Creator.]]></description>
|
||||
<tags>qt creator,plugins,talk,2019</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: Qt Creator - Using the QML Profiler" isVideo="true" videoUrl="https://www.youtube.com/watch?v=TiJiF0MOOFc" videoLength="55:12">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeTiJiF0MOOFc.webp" difficulty="" projectPath="" name="Talk: Qt Creator - Using the QML Profiler" isVideo="true" videoUrl="https://www.youtube.com/watch?v=TiJiF0MOOFc" videoLength="55:12">
|
||||
<description><![CDATA[Monitoring the performance of a Qt Quick application.]]></description>
|
||||
<tags>qt quick,qt creator,qml profiler,talk,2014</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: The CPU Usage Analyzer for Device Creation" isVideo="true" videoUrl="https://www.youtube.com/watch?v=G0AbgVHGdXI" videoLength="22:30">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeG0AbgVHGdXI.webp" difficulty="" projectPath="" name="Talk: The CPU Usage Analyzer for Device Creation" isVideo="true" videoUrl="https://www.youtube.com/watch?v=G0AbgVHGdXI" videoLength="22:30">
|
||||
<description><![CDATA[Using the Linux perf tool to generate data for code analysis.]]></description>
|
||||
<tags>qt creator,cpu usage analyzer,perf,embedded,device creation,talk,2015</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: Qt SCXML - State Machines Made Easier" isVideo="true" videoUrl="https://youtu.be/X0kEkB0ewyw" videoLength="42:22">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeX0kEkB0ewyw.webp" difficulty="" projectPath="" name="Talk: Qt SCXML - State Machines Made Easier" isVideo="true" videoUrl="https://youtu.be/X0kEkB0ewyw" videoLength="42:22">
|
||||
<description><![CDATA[Using the Qt SCXML module and Qt Creator SCXML editor.]]></description>
|
||||
<tags>qt creator,scxml,talk,2016</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: Effective Multi-Platform Development with Qt Creator, QBS, and QEMU" isVideo="true" videoUrl="https://www.youtube.com/watch?v=v4glCQt2jE0" videoLength="19:08">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubev4glCQt2jE0.webp" difficulty="" projectPath="" name="Talk: Effective Multi-Platform Development with Qt Creator, QBS, and QEMU" isVideo="true" videoUrl="https://www.youtube.com/watch?v=v4glCQt2jE0" videoLength="19:08">
|
||||
<description><![CDATA[Using Qt Creator, Qbs, and QEMU for application development.]]></description>
|
||||
<tags>qt creator,qbs,qemu,talk,2015</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: Qt for iOS - A to Z" isVideo="true" videoUrl="https://youtu.be/T_13aX5NTPk" videoLength="1:00:13">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeT_13aX5NTPk.webp" difficulty="" projectPath="" name="Talk: Qt for iOS - A to Z" isVideo="true" videoUrl="https://youtu.be/T_13aX5NTPk" videoLength="1:00:13">
|
||||
<description><![CDATA[Developing Qt applications for iOS.]]></description>
|
||||
<tags>qt creator,ios,talk,2016</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: Qt Creator for Bare Metal Development" isVideo="true" videoUrl="http://www.youtube.com/watch?v=hrKz63Q_Rf0" videoLength="9:35">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubehrKz63Q_Rf0.webp" difficulty="" projectPath="" name="Talk: Qt Creator for Bare Metal Development" isVideo="true" videoUrl="http://www.youtube.com/watch?v=hrKz63Q_Rf0" videoLength="9:35">
|
||||
<description><![CDATA[Developing Qt Applications for Bare Metal devices.]]></description>
|
||||
<tags>qt creator,baremetal,talk,2013</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: The Curse of Choice - An Overview of GUI Technologies in Qt" isVideo="true" videoUrl="https://youtu.be/WIRRoPxIerc" videoLength="40:45">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeWIRRoPxIerc.webp" difficulty="" projectPath="" name="Talk: The Curse of Choice - An Overview of GUI Technologies in Qt" isVideo="true" videoUrl="https://youtu.be/WIRRoPxIerc" videoLength="40:45">
|
||||
<description><![CDATA[Overview of UI technologies that can be used with Qt.]]></description>
|
||||
<tags>qt quick,ui,widgets,talk,2016</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: Code Once Deploy Everywhere: How Qt is ideal for cross-platform development" isVideo="true" videoUrl="https://youtu.be/sRihJdZFuCg" videoLength="42:37">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubesRihJdZFuCg.webp" difficulty="" projectPath="" name="Talk: Code Once Deploy Everywhere: How Qt is ideal for cross-platform development" isVideo="true" videoUrl="https://youtu.be/sRihJdZFuCg" videoLength="42:37">
|
||||
<description><![CDATA[Using Qt Creator for cross-platform development.]]></description>
|
||||
<tags>qt creator,talk,2019</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: WEBASM with Qt - Qt for WebAssembly" isVideo="true" videoUrl="https://youtu.be/W3WC-VpKdGQ" videoLength="27:50">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeW3WC-VpKdGQ.webp" difficulty="" projectPath="" name="Talk: WEBASM with Qt - Qt for WebAssembly" isVideo="true" videoUrl="https://youtu.be/W3WC-VpKdGQ" videoLength="27:50">
|
||||
<description><![CDATA[Running Qt applications on the Web using Qt for WebAssembly.]]></description>
|
||||
<tags>qt creator,webassembly,emscripten,talk,2019</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: How to Develop with Qt for Multiple Screen Resolutions and Platforms and Best Practices for an Efficient App Lifecycle with Qt" isVideo="true" videoUrl="https://youtu.be/qclquZ99ZVQ" videoLength="27:44">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeqclquZ99ZVQ.webp" difficulty="" projectPath="" name="Talk: How to Develop with Qt for Multiple Screen Resolutions and Platforms and Best Practices for an Efficient App Lifecycle with Qt" isVideo="true" videoUrl="https://youtu.be/qclquZ99ZVQ" videoLength="27:44">
|
||||
<description><![CDATA[Best practices for an efficient app lifecycle.]]></description>
|
||||
<tags>qt,qt quick,screen resolution,ui,talk,2016</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: Qt Designer tutorial: Integrate custom widgets" isVideo="true" videoUrl="https://youtu.be/B0X5FOev9Lw" videoLength="27:07">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeB0X5FOev9Lw.webp" difficulty="" projectPath="" name="Talk: Qt Designer tutorial: Integrate custom widgets" isVideo="true" videoUrl="https://youtu.be/B0X5FOev9Lw" videoLength="27:07">
|
||||
<description><![CDATA[Integrating custom widgets into Qt Designer.]]></description>
|
||||
<tags>qt designer,widgets,ui,talk,2019</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: Android & iOS - Put Your App on a Diet" isVideo="true" videoUrl="https://www.youtube.com/watch?v=3o2Wo4YzlII" videoLength="23:41">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtube3o2Wo4YzlII.webp" difficulty="" projectPath="" name="Talk: Android & iOS - Put Your App on a Diet" isVideo="true" videoUrl="https://www.youtube.com/watch?v=3o2Wo4YzlII" videoLength="23:41">
|
||||
<description><![CDATA[Making Android and iOS apps smaller.]]></description>
|
||||
<tags>android,ios,talk,2017</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: LTTng for full stack tracing" isVideo="true" videoUrl="https://youtu.be/v_ynSET9FHU" videoLength="25:46">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubev_ynSET9FHU.webp" difficulty="" projectPath="" name="Talk: LTTng for full stack tracing" isVideo="true" videoUrl="https://youtu.be/v_ynSET9FHU" videoLength="25:46">
|
||||
<description><![CDATA[Using tracing and profiling to optimize the startup time of apps.]]></description>
|
||||
<tags>qt creator,qml profiler,ctf viewer,lttng,talk,2019</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: No Limits - How to Make a More Complicated Mobile Business App" isVideo="true" videoUrl="https://www.youtube.com/watch?v=au3brB7lNms" videoLength="23:33">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeau3brB7lNms.webp" difficulty="" projectPath="" name="Talk: No Limits - How to Make a More Complicated Mobile Business App" isVideo="true" videoUrl="https://www.youtube.com/watch?v=au3brB7lNms" videoLength="23:33">
|
||||
<description><![CDATA[Creating mobile business apps using Qt Quick Controls 2.]]></description>
|
||||
<tags>android,ios,qt quick,controls,talk,2017</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: Qt & Yocto, an ECU development workflow" isVideo="true" videoUrl="https://youtu.be/ECA8_oLT0ZE" videoLength="29:08">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubeECA8_oLT0ZE.webp" difficulty="" projectPath="" name="Talk: Qt & Yocto, an ECU development workflow" isVideo="true" videoUrl="https://youtu.be/ECA8_oLT0ZE" videoLength="29:08">
|
||||
<description><![CDATA[Using Qt Creator kits and Yocto when developing for embedded devices.]]></description>
|
||||
<tags>qt creator,kits,yocto,embedded,talk,2019</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: Qt Creator in Space" isVideo="true" videoUrl="https://youtu.be/1w0ak9RNNWY" videoLength="28:05">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtube1w0ak9RNNWY.webp" difficulty="" projectPath="" name="Talk: Qt Creator in Space" isVideo="true" videoUrl="https://youtu.be/1w0ak9RNNWY" videoLength="28:05">
|
||||
<description><![CDATA[Creating and maintaining a portfolio of Qt Creator plugins.]]></description>
|
||||
<tags>qt creator,plugins,video,2021</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: All You Need to Get Your App Done with Qt for Android" isVideo="true" videoUrl="https://youtu.be/nmvurCcsWos" videoLength="24:11">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubenmvurCcsWos.webp" difficulty="" projectPath="" name="Talk: All You Need to Get Your App Done with Qt for Android" isVideo="true" videoUrl="https://youtu.be/nmvurCcsWos" videoLength="24:11">
|
||||
<description><![CDATA[Developing an Android app using Qt for Android.]]></description>
|
||||
<tags>android,talk,2021</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: Styling a Qt Quick Controls Desktop Application" isVideo="true" videoUrl="https://youtu.be/tnZo9umrPtg" videoLength="29:40">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubetnZo9umrPtg.webp" difficulty="" projectPath="" name="Talk: Styling a Qt Quick Controls Desktop Application" isVideo="true" videoUrl="https://youtu.be/tnZo9umrPtg" videoLength="29:40">
|
||||
<description><![CDATA[Styling Qt Quick Controls using the styling API.]]></description>
|
||||
<tags>qt quick,controls,styling,ui,talk,2021</tags>
|
||||
</tutorial>
|
||||
<tutorial imageUrl=":qtsupport/images/icons/qteventicon.png" difficulty="" projectPath="" name="Talk: The New Property Bindings: Making C++ more QMLish" isVideo="true" videoUrl="https://youtu.be/pN0pRBUqrrc" videoLength="29:54">
|
||||
<tutorial imageUrl=":qtsupport/images/icons/youtubepN0pRBUqrrc.webp" difficulty="" projectPath="" name="Talk: The New Property Bindings: Making C++ more QMLish" isVideo="true" videoUrl="https://youtu.be/pN0pRBUqrrc" videoLength="29:54">
|
||||
<description><![CDATA[Using the Qt 6 property system in pure C++ and mixed C++/QML applications.]]></description>
|
||||
<tags>qt,c++,qml,talk,2021</tags>
|
||||
</tutorial>
|
||||
|
@@ -6,11 +6,47 @@
|
||||
<file>images/dark_qt_qrc.png</file>
|
||||
<file>images_areaofinterest.xml</file>
|
||||
<file>qtcreator_tutorials.xml</file>
|
||||
<file>images/icons/playoverlay.png</file>
|
||||
<file>images/icons/playoverlay@2x.png</file>
|
||||
<file>images/icons/tutorialicon.png</file>
|
||||
<file>images/icons/tutorialicon@2x.png</file>
|
||||
<file>images/icons/videotutorialicon.png</file>
|
||||
<file>images/icons/videotutorialicon@2x.png</file>
|
||||
<file>images/icons/qteventicon.png</file>
|
||||
<file>images/icons/qteventicon@2x.png</file>
|
||||
<file>images/icons/youtube-xhiVA0P4yk.webp</file>
|
||||
<file>images/icons/youtube1tSpq5OLkYI.webp</file>
|
||||
<file>images/icons/youtube1w0ak9RNNWY.webp</file>
|
||||
<file>images/icons/youtube2RvhhEAZQxM.webp</file>
|
||||
<file>images/icons/youtube3o2Wo4YzlII.webp</file>
|
||||
<file>images/icons/youtube9BcAYDlpuT8.webp</file>
|
||||
<file>images/icons/youtube9xqhq9nDiOg.webp</file>
|
||||
<file>images/icons/youtubeB0X5FOev9Lw.webp</file>
|
||||
<file>images/icons/youtubeBkgjJfxYN20.webp</file>
|
||||
<file>images/icons/youtubeDP0lMoLVneY.webp</file>
|
||||
<file>images/icons/youtubeDRFz0Tll4G8.webp</file>
|
||||
<file>images/icons/youtubeECA8_oLT0ZE.webp</file>
|
||||
<file>images/icons/youtubeG0AbgVHGdXI.webp</file>
|
||||
<file>images/icons/youtubeKo3DuCgFamo.webp</file>
|
||||
<file>images/icons/youtubePzV2MYRAUYQ.webp</file>
|
||||
<file>images/icons/youtubeR6zWLfHIYJw.webp</file>
|
||||
<file>images/icons/youtubeT_13aX5NTPk.webp</file>
|
||||
<file>images/icons/youtubeTiJiF0MOOFc.webp</file>
|
||||
<file>images/icons/youtubeW3WC-VpKdGQ.webp</file>
|
||||
<file>images/icons/youtubeWIRRoPxIerc.webp</file>
|
||||
<file>images/icons/youtubeX0kEkB0ewyw.webp</file>
|
||||
<file>images/icons/youtubeY-MM-9FigTc.webp</file>
|
||||
<file>images/icons/youtubeYJfFwDBOvqk.webp</file>
|
||||
<file>images/icons/youtubeau3brB7lNms.webp</file>
|
||||
<file>images/icons/youtubehrKz63Q_Rf0.webp</file>
|
||||
<file>images/icons/youtubejbx3Oq1Q4gY.webp</file>
|
||||
<file>images/icons/youtubemAhwHsGdJuI.webp</file>
|
||||
<file>images/icons/youtubemn-JmXIMCqk.webp</file>
|
||||
<file>images/icons/youtubenmvurCcsWos.webp</file>
|
||||
<file>images/icons/youtubepN0pRBUqrrc.webp</file>
|
||||
<file>images/icons/youtubeqclquZ99ZVQ.webp</file>
|
||||
<file>images/icons/youtubesRihJdZFuCg.webp</file>
|
||||
<file>images/icons/youtubetnZo9umrPtg.webp</file>
|
||||
<file>images/icons/youtubeuuhmSZxK1mk.webp</file>
|
||||
<file>images/icons/youtubev4glCQt2jE0.webp</file>
|
||||
<file>images/icons/youtubev_ynSET9FHU.webp</file>
|
||||
<file>images/icons/youtubexNIz78IPBu0.webp</file>
|
||||
<file>images/icons/youtubezAqSiIGdj8M.webp</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
144
src/tools/icons/downloadytthumbnails.py
Normal file
@@ -0,0 +1,144 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
############################################################################
|
||||
#
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# Contact: https://www.qt.io/licensing/
|
||||
#
|
||||
# This file is part of Qt Creator.
|
||||
#
|
||||
# Commercial License Usage
|
||||
# Licensees holding valid commercial Qt licenses may use this file in
|
||||
# accordance with the commercial license agreement provided with the
|
||||
# Software or, alternatively, in accordance with the terms contained in
|
||||
# a written agreement between you and The Qt Company. For licensing terms
|
||||
# and conditions see https://www.qt.io/terms-conditions. For further
|
||||
# information use the contact form at https://www.qt.io/contact-us.
|
||||
#
|
||||
# GNU General Public License Usage
|
||||
# Alternatively, this file may be used under the terms of the GNU
|
||||
# General Public License version 3 as published by the Free Software
|
||||
# Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
||||
# included in the packaging of this file. Please review the following
|
||||
# information to ensure the GNU General Public License requirements will
|
||||
# be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import pathlib
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import urllib.request
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
from distutils import spawn
|
||||
|
||||
|
||||
def qtcRoot():
|
||||
return os.path.abspath(
|
||||
os.path.join(os.path.dirname(sys.argv[0]), '../../..')).replace('\\', '/')
|
||||
|
||||
|
||||
def youtubeIdsFromXmlFile(xmlFile):
|
||||
ids = []
|
||||
xmlTree = ET.ElementTree()
|
||||
xmlTree.parse(xmlFile)
|
||||
xmlTreeRoot = xmlTree.getroot()
|
||||
for xmlElement in xmlTreeRoot.iter():
|
||||
try:
|
||||
videoUrlAttrib = xmlElement.attrib['videoUrl']
|
||||
ids.append(videoUrlAttrib[-11 : ])
|
||||
except Exception:
|
||||
pass
|
||||
return ids
|
||||
|
||||
|
||||
def youtubeThumbnailPath(youtubeId):
|
||||
return tempfile.gettempdir() + os.path.sep + youtubeId + ".jpg"
|
||||
|
||||
|
||||
def downloadThumbnails(youtubeIds, outputDir, overwriteFiles):
|
||||
print("Downloading YouTube thumbnails:")
|
||||
for id in youtubeIds:
|
||||
thumbnailUrl = "https://img.youtube.com/vi/{}/maxresdefault.jpg".format(id)
|
||||
# Available thumbnail options: "0.jpg", "hqdefault.jpg", "maxresdefault.jpg"
|
||||
thumbnailFile = youtubeThumbnailPath(id)
|
||||
if not overwriteFiles and os.path.exists(thumbnailFile):
|
||||
print("Skipping " + thumbnailFile)
|
||||
continue
|
||||
print(thumbnailUrl + " -> " + thumbnailFile)
|
||||
try:
|
||||
urllib.request.urlretrieve(thumbnailUrl, thumbnailFile)
|
||||
except Exception:
|
||||
print("Failed to download " + thumbnailUrl)
|
||||
pass
|
||||
|
||||
|
||||
def saveQtcThumbnails(youtubeIds, outputDir, magick):
|
||||
print("Creating Qt Creator thumbnails:")
|
||||
for id in youtubeIds:
|
||||
ytThumbnail = youtubeThumbnailPath(id)
|
||||
qtcThumbnail = os.path.abspath(outputDir) + os.path.sep + "youtube" + id + ".webp"
|
||||
print(qtcThumbnail)
|
||||
try:
|
||||
subprocess.check_call([magick,
|
||||
ytThumbnail,
|
||||
|
||||
# https://imagemagick.org/script/command-line-options.php#filter
|
||||
"-filter", "Parzen",
|
||||
|
||||
# ListMyoutubeThumbnailPathodel::defaultImageSize(214, 160);
|
||||
"-resize", "214x160",
|
||||
|
||||
# https://imagemagick.org/script/webp.php
|
||||
"-define", "webp:use-sharp-yuv=1",
|
||||
"-define", "webp:image-hint=picture",
|
||||
"-define", "webp:method=6",
|
||||
"-define", "webp:near-lossless=100",
|
||||
|
||||
qtcThumbnail])
|
||||
except subprocess.CalledProcessError:
|
||||
print("Failed to convert to {}.".format(qtcThumbnail))
|
||||
pass
|
||||
|
||||
|
||||
def processXmlFile(xmlFile, outputDir, overwriteFiles, magick):
|
||||
ids = youtubeIdsFromXmlFile(xmlFile)
|
||||
downloadThumbnails(ids, outputDir, overwriteFiles)
|
||||
saveQtcThumbnails(ids, outputDir, magick)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Parses a \'qtcreator_tutorials.xml\', '
|
||||
'downloads the video thumbnails from YouTube, '
|
||||
'scales them down to WelcomeScreen thumbnail size '
|
||||
'and saves them as .webm files.')
|
||||
parser.add_argument('-xmlfile',
|
||||
help='The \'qtcreator_tutorials.xml\' file.',
|
||||
type=pathlib.Path,
|
||||
default=qtcRoot() + "/src/plugins/qtsupport/qtcreator_tutorials.xml")
|
||||
parser.add_argument('-outputdir',
|
||||
help='Where the downloaded files are written.',
|
||||
type=pathlib.Path,
|
||||
default=qtcRoot() + "/src/plugins/qtsupport/images/icons")
|
||||
parser.add_argument('-overwrite',
|
||||
help='Overwrite existing downloaded files.',
|
||||
action='store_true')
|
||||
args = parser.parse_args()
|
||||
|
||||
magick = spawn.find_executable("magick")
|
||||
if magick is None:
|
||||
magick = spawn.find_executable("convert")
|
||||
if magick is None:
|
||||
sys.exit("ImageMagick was not found in Path.")
|
||||
|
||||
processXmlFile(args.xmlfile, args.outputdir, args.overwrite, magick)
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
@@ -30,22 +30,6 @@
|
||||
offset="1"
|
||||
id="stop2548" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3970">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0"
|
||||
offset="0"
|
||||
id="stop3966" />
|
||||
<stop
|
||||
id="stop3974"
|
||||
offset="0.35135135"
|
||||
style="stop-color:#000000;stop-opacity:0" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3968" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient9821">
|
||||
@@ -497,27 +481,6 @@
|
||||
stop-color="#425fcf"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linear-gradient-7"
|
||||
id="linearGradient2898"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(75,0,0,-75,14430,8329)"
|
||||
x1="-190.82001"
|
||||
y1="109.69"
|
||||
x2="-191.87"
|
||||
y2="110.83" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3970"
|
||||
id="radialGradient3972"
|
||||
cx="548.5"
|
||||
cy="91.5"
|
||||
fx="548.5"
|
||||
fy="91.5"
|
||||
r="18.5"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(112,18)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2550"
|
||||
@@ -527,6 +490,43 @@
|
||||
x2="75"
|
||||
y2="534"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<filter
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow"
|
||||
id="filter7112"
|
||||
x="-0.34384615"
|
||||
y="-0.34384615"
|
||||
width="1.6876923"
|
||||
height="1.6876923"
|
||||
inkscape:auto-region="false">
|
||||
<feFlood
|
||||
flood-opacity=".85"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood"
|
||||
id="feFlood7102" />
|
||||
<feComposite
|
||||
in="flood"
|
||||
in2="SourceGraphic"
|
||||
operator="in"
|
||||
result="composite1"
|
||||
id="feComposite7104" />
|
||||
<feGaussianBlur
|
||||
in="composite1"
|
||||
stdDeviation="3.1"
|
||||
result="blur"
|
||||
id="feGaussianBlur7106" />
|
||||
<feOffset
|
||||
dx="0"
|
||||
dy="0"
|
||||
result="offset"
|
||||
id="feOffset7108" />
|
||||
<feComposite
|
||||
in="offset"
|
||||
in2="SourceGraphic"
|
||||
operator="destination-over"
|
||||
result="composite2"
|
||||
id="feComposite7110" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
@@ -673,27 +673,32 @@
|
||||
id="layer7"
|
||||
inkscape:label="Welcome screen thumbnails">
|
||||
<g
|
||||
id="src/plugins/qtsupport/images/icons/videotutorialicon"
|
||||
transform="translate(0,-32)">
|
||||
<rect
|
||||
id="rect2451"
|
||||
height="160"
|
||||
width="214"
|
||||
class="cls-1"
|
||||
id="src/plugins/qtsupport/images/icons/playoverlay"
|
||||
transform="translate(-166,-44)">
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
style="fill:#26282a" />
|
||||
xlink:href="#transparentBackgroundRect"
|
||||
id="use7212"
|
||||
width="100%"
|
||||
height="100%"
|
||||
transform="matrix(4.5,0,0,4.5,238,-1990)" />
|
||||
<g
|
||||
id="g6770"
|
||||
style="filter:url(#filter7112)"
|
||||
transform="translate(32.5,-8)">
|
||||
<circle
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path1730"
|
||||
cx="169.5"
|
||||
cy="88"
|
||||
r="20.5" />
|
||||
<path
|
||||
d="M 102.73,92.34 V 81.12 l 9.62,5.61 z m -0.53,-14 a 1,1 0 0 0 -1.06,0 1.05,1.05 0 0 0 -0.54,0.93 V 94.2 a 1,1 0 0 0 0.54,0.92 1,1 0 0 0 0.53,0.15 1,1 0 0 0 0.53,-0.15 L 115,87.65 a 1.06,1.06 0 0 0 0,-1.84 z m 32.53,-11.88 v 38.4 a 1.07,1.07 0 0 1 -2.13,0 V 66.47 A 1.07,1.07 0 0 0 131.53,65.4 H 82.47 a 1.07,1.07 0 0 0 -1.07,1.07 v 41.6 h 52.27 a 1.07,1.07 0 0 1 0,2.13 H 80.33 a 1.06,1.06 0 0 1 -1.06,-1.07 V 66.47 a 3.2,3.2 0 0 1 3.2,-3.2 h 49.06 a 3.2,3.2 0 0 1 3.2,3.2 z M 95.27,116.6 a 1.07,1.07 0 1 1 1.06,-1.07 1.07,1.07 0 0 1 -1.06,1.07 z m 36.26,-2.13 H 98.27 a 3.18,3.18 0 0 0 -6,0 H 84.6 a 1.07,1.07 0 1 0 0,2.13 h 7.66 a 3.18,3.18 0 0 0 6,0 h 33.26 a 1.07,1.07 0 1 0 0,-2.13 z m 5.34,3.2 a 3.21,3.21 0 0 1 -3.2,3.2 H 80.33 a 3.21,3.21 0 0 1 -3.2,-3.2 V 64.33 a 3.21,3.21 0 0 1 3.2,-3.2 h 53.34 a 3.21,3.21 0 0 1 3.2,3.2 z M 133.67,59 H 80.33 A 5.33,5.33 0 0 0 75,64.33 v 53.34 a 5.33,5.33 0 0 0 5.33,5.33 h 53.34 A 5.33,5.33 0 0 0 139,117.67 V 64.33 A 5.33,5.33 0 0 0 133.67,59 Z"
|
||||
class="cls-2"
|
||||
id="video-player"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:url(#linearGradient2898);fill-opacity:1" />
|
||||
<path
|
||||
id="path2480"
|
||||
style="fill:#17a81a"
|
||||
d="M 157.135,41.74 V 29 h 2 v 12.74 z m -2.58,-6.22 v 4.1 a 0.91,0.91 0 0 0 0.21,0.58 1,1 0 0 0 0.59,0.25 l -0.06,1.49 a 3.8,3.8 0 0 1 -2.39,-0.66 6.91,6.91 0 0 1 -2.9,0.66 c -1.79,0 -2.68,-1 -2.68,-2.86 a 2.44,2.44 0 0 1 0.73,-2 4,4 0 0 1 2.24,-0.74 l 2.32,-0.2 V 35.5 a 1.33,1.33 0 0 0 -0.31,-1 1.35,1.35 0 0 0 -0.93,-0.29 c -0.77,0 -1.73,0 -2.88,0.14 h -0.58 L 147.845,33 a 15.72,15.72 0 0 1 3.61,-0.46 3.31,3.31 0 0 1 2.38,0.71 3,3 0 0 1 0.72,2.27 z m -4,2.23 a 1.21,1.21 0 0 0 -1.24,1.35 c 0,0.83 0.37,1.24 1.1,1.24 a 7.1,7.1 0 0 0 1.91,-0.29 l 0.32,-0.11 v -2.39 z m -6.99,-6.54 v -2.07 h 2 v 2.07 z m 0,10.53 v -9 h 2 v 9 z m -6.5,0 v -9 h 1.94 v 1.08 a 8.5,8.5 0 0 1 3.06,-1.27 v 2 a 12.57,12.57 0 0 0 -2.64,0.79 l -0.4,0.16 v 6.28 z m -9.05,-8.02 a 4.67,4.67 0 0 1 6.18,0 5.57,5.57 0 0 1 0.92,3.51 5.76,5.76 0 0 1 -0.9,3.52 4.66,4.66 0 0 1 -6.22,0 5.76,5.76 0 0 1 -0.9,-3.52 5.57,5.57 0 0 1 0.92,-3.51 z m 1.47,5.85 a 2.18,2.18 0 0 0 3.24,0 5,5 0 0 0 0.41,-2.36 4.42,4.42 0 0 0 -0.44,-2.32 2.18,2.18 0 0 0 -3.18,0 4.42,4.42 0 0 0 -0.44,2.32 5,5 0 0 0 0.41,2.36 z m -3.56,-5.15 h -2.49 v 4 a 4.12,4.12 0 0 0 0.17,1.46 c 0.1,0.24 0.38,0.36 0.82,0.36 l 1.48,-0.06 0.09,1.57 a 11.12,11.12 0 0 1 -1.84,0.23 2.55,2.55 0 0 1 -2.09,-0.7 4.41,4.41 0 0 1 -0.57,-2.65 v -4.21 h -1.15 v -1.68 h 1.15 v -2.61 h 1.94 v 2.61 h 2.49 z m -9.17,-1.68 h 2 v 9 h -2 v -0.55 a 4.93,4.93 0 0 1 -2.43,0.75 2.71,2.71 0 0 1 -2.48,-1 7,7 0 0 1 -0.63,-3.5 v -4.7 h 2 v 4.72 a 5.78,5.78 0 0 0 0.22,2.18 c 0.18,0.37 0.6,0.56 1.26,0.56 a 4.32,4.32 0 0 0 1.78,-0.36 l 0.27,-0.11 z m -14.65,-1.54 v -1.79 h 9 v 1.79 h -3.47 v 10.54 h -2 V 31.2 Z m -12.05,2.52 a 4.65,4.65 0 0 1 6.17,0 5.57,5.57 0 0 1 0.93,3.51 5.76,5.76 0 0 1 -0.9,3.52 3.65,3.65 0 0 1 -3.11,1.19 3.66,3.66 0 0 1 -3.12,-1.19 5.76,5.76 0 0 1 -0.9,-3.52 5.57,5.57 0 0 1 0.93,-3.51 z m 1.47,5.85 a 1.69,1.69 0 0 0 1.62,0.72 1.71,1.71 0 0 0 1.62,-0.72 5.08,5.08 0 0 0 0.41,-2.36 4.42,4.42 0 0 0 -0.44,-2.32 2.18,2.18 0 0 0 -3.18,0 4.41,4.41 0 0 0 -0.45,2.32 4.93,4.93 0 0 0 0.42,2.36 z m -4.7,0.55 0.5,-0.05 v 1.46 a 19.1,19.1 0 0 1 -3.64,0.41 3.44,3.44 0 0 1 -2.87,-1.1 5.65,5.65 0 0 1 -0.87,-3.51 q 0,-4.78 3.91,-4.78 3.91,0 3.78,4.12 l -0.13,1.4 h -5.54 a 2.41,2.41 0 0 0 0.47,1.64 2.27,2.27 0 0 0 1.74,0.52 c 0.87,0 1.75,-0.03 2.65,-0.11 z m -1.08,-3.56 a 3.07,3.07 0 0 0 -0.42,-1.86 1.71,1.71 0 0 0 -1.43,-0.53 1.78,1.78 0 0 0 -1.47,0.55 3,3 0 0 0 -0.48,1.84 z M 78.045,29 v 12.74 h -2 v -0.46 a 5.42,5.42 0 0 1 -2.41,0.66 3,3 0 0 1 -2.58,-1.06 5.92,5.92 0 0 1 -0.82,-3.56 5.81,5.81 0 0 1 0.91,-3.64 3.39,3.39 0 0 1 2.83,-1.13 13.15,13.15 0 0 1 2,0.23 V 29 Z m -2.27,10.87 0.3,-0.12 v -5.33 a 12.14,12.14 0 0 0 -2,-0.18 c -1.22,0 -1.82,1 -1.82,3 a 4.48,4.48 0 0 0 0.42,2.3 1.5,1.5 0 0 0 1.34,0.64 4.66,4.66 0 0 0 1.76,-0.31 z m -9.42,-8.66 v -2.07 h 2 v 2.07 z m 0,10.53 v -9 h 2 v 9 z m -3.63,-12.33 h 2.09 l -3,12.33 h -3.95 l -3,-12.33 h 2.09 L 59.375,40 h 0.9 z"
|
||||
inkscape:connector-curvature="0" />
|
||||
style="fill:#ffffff;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 164.5,79.5 v 17 L 178,88 Z"
|
||||
id="path5039"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="src/plugins/qtsupport/images/icons/tutorialicon"
|
||||
@@ -718,36 +723,6 @@
|
||||
d="M 133.5,41.74 V 29 h 2 v 12.74 z m -2.57,-6.22 v 4.1 a 0.86,0.86 0 0 0 0.2,0.58 1,1 0 0 0 0.59,0.25 v 1.49 a 3.81,3.81 0 0 1 -2.4,-0.66 6.91,6.91 0 0 1 -2.9,0.66 c -1.79,0 -2.68,-1 -2.68,-2.86 a 2.44,2.44 0 0 1 0.73,-2 4,4 0 0 1 2.24,-0.74 l 2.32,-0.2 V 35.5 a 1.33,1.33 0 0 0 -0.31,-1 1.35,1.35 0 0 0 -0.93,-0.29 c -0.77,0 -1.73,0 -2.88,0.14 h -0.57 L 124.21,33 a 15.72,15.72 0 0 1 3.61,-0.46 3.31,3.31 0 0 1 2.38,0.71 3.05,3.05 0 0 1 0.73,2.27 z m -4,2.23 a 1.21,1.21 0 0 0 -1.25,1.35 c 0,0.83 0.37,1.24 1.1,1.24 a 7,7 0 0 0 1.91,-0.29 l 0.32,-0.11 v -2.39 z m -7,-6.54 v -2.07 h 2 v 2.07 z m 0,10.53 v -9 h 2 v 9 z m -6.5,0 v -9 h 1.95 v 1.08 a 8.42,8.42 0 0 1 3.06,-1.27 v 2 a 12.5,12.5 0 0 0 -2.65,0.79 l -0.4,0.16 v 6.28 z m -9.04,-8.02 a 4.65,4.65 0 0 1 6.17,0 5.57,5.57 0 0 1 0.94,3.51 5.76,5.76 0 0 1 -0.9,3.52 4.67,4.67 0 0 1 -6.23,0 5.76,5.76 0 0 1 -0.9,-3.52 5.57,5.57 0 0 1 0.92,-3.51 z m 1.46,5.85 a 1.71,1.71 0 0 0 1.62,0.72 1.69,1.69 0 0 0 1.62,-0.72 4.93,4.93 0 0 0 0.41,-2.36 4.53,4.53 0 0 0 -0.44,-2.32 1.76,1.76 0 0 0 -1.56,-0.69 1.74,1.74 0 0 0 -1.59,0.69 4.53,4.53 0 0 0 -0.44,2.32 5.08,5.08 0 0 0 0.38,2.36 z m -3.56,-5.15 h -2.48 v 4 a 4.19,4.19 0 0 0 0.16,1.46 c 0.11,0.24 0.38,0.36 0.83,0.36 l 1.47,-0.06 0.09,1.57 a 10.91,10.91 0 0 1 -1.83,0.23 2.59,2.59 0 0 1 -2.1,-0.7 4.41,4.41 0 0 1 -0.57,-2.65 v -4.21 h -1.15 v -1.68 h 1.15 v -2.61 h 2 v 2.61 h 2.48 z m -9.16,-1.68 h 1.94 v 9 h -1.94 v -0.55 a 5,5 0 0 1 -2.43,0.75 2.72,2.72 0 0 1 -2.49,-1 7,7 0 0 1 -0.63,-3.5 v -4.7 h 2 v 4.72 a 5.78,5.78 0 0 0 0.27,2.18 c 0.18,0.37 0.6,0.56 1.26,0.56 a 4.36,4.36 0 0 0 1.78,-0.36 l 0.27,-0.11 z M 78.5,31.2 v -1.79 h 9 V 31.2 H 84 V 41.74 H 82 V 31.2 Z"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
id="src/plugins/qtsupport/images/icons/qteventicon"
|
||||
transform="translate(428,-32)">
|
||||
<rect
|
||||
id="rect2709"
|
||||
height="160"
|
||||
width="214"
|
||||
class="cls-1"
|
||||
x="0"
|
||||
y="0"
|
||||
style="fill:#ffffff" />
|
||||
<path
|
||||
d="m 139,66.2 v 4.27 a 1.06,1.06 0 0 1 -1.07,1.06 h -1.06 v 24.54 a 1.07,1.07 0 0 1 -2.14,0 v -25.6 a 1.07,1.07 0 0 1 1.07,-1.07 h 1.07 V 67.27 H 77.13 v 2.13 h 54.4 a 1.07,1.07 0 1 1 0,2.13 H 76.07 A 1.06,1.06 0 0 1 75,70.47 V 66.2 a 1.07,1.07 0 0 1 1.07,-1.07 h 29.86 v -1.06 a 1.07,1.07 0 1 1 2.14,0 v 1.06 h 29.86 A 1.07,1.07 0 0 1 139,66.2 Z M 88.87,80.07 h 8.53 a 1.07,1.07 0 0 0 0,-2.14 h -8.53 a 1.07,1.07 0 0 0 0,2.14 z m 0,6.4 h 19.2 a 1.07,1.07 0 0 0 0,-2.14 h -19.2 a 1.07,1.07 0 0 0 0,2.14 z m 17.06,-6.4 a 1.07,1.07 0 0 0 0,-2.14 h -4.26 a 1.07,1.07 0 0 0 0,2.14 z m -17.06,12.8 h 3.2 a 1.07,1.07 0 0 0 0,-2.14 h -3.2 a 1.07,1.07 0 0 0 0,2.14 z m 19.2,-2.14 H 97.4 a 1.07,1.07 0 0 0 0,2.14 h 10.67 a 1.07,1.07 0 0 0 0,-2.14 z m 19.27,6.42 a 1.11,1.11 0 0 0 -1.13,0.92 L 123,121.52 a 1.06,1.06 0 0 0 0.91,1.2 h 0.15 a 1.06,1.06 0 0 0 1.05,-0.92 l 3.08,-22.52 c 3.68,0.09 6.2,0.79 7.49,2.08 a 4.34,4.34 0 0 1 1.18,3.23 v 17.08 a 1.07,1.07 0 0 0 2.13,0 V 104.6 a 6.46,6.46 0 0 0 -1.8,-4.74 c -1.83,-1.82 -5.06,-2.71 -9.86,-2.71 z m -9.68,0.91 3.2,23.46 a 1.07,1.07 0 0 1 -2.12,0.29 l -3.07,-22.54 h -17.2 v 4.26 h 11.73 a 1.06,1.06 0 0 1 1.06,1 l 2.13,21.34 a 1.05,1.05 0 0 1 -1,1.16 h -0.11 a 1.07,1.07 0 0 1 -1.06,-1 l -2,-20.37 h -14 c -5,0 -7.47,-4.79 -7.47,-7.47 a 1.07,1.07 0 0 1 1.07,-1.07 h 27.78 a 1.08,1.08 0 0 1 1.06,0.93 z m -21.33,1.21 h -6.21 c 0.52,1.74 2.16,4.26 5.15,4.26 h 1.06 z m 27.74,0 a 2.14,2.14 0 1 0 -4.27,0 2.11,2.11 0 0 0 1.07,1.83 v 7.77 a 1.07,1.07 0 0 0 2.13,0 v -7.77 a 2.14,2.14 0 0 0 1.07,-1.83 z m 6.4,-19.2 v 0.28 a 2.15,2.15 0 0 1 1.06,1.85 v 2.13 a 2.12,2.12 0 0 1 -1.1,1.87 12.85,12.85 0 0 1 -1.14,3.94 c -1,1.94 -2.43,4.86 -7.36,4.86 -4.93,0 -6.38,-2.92 -7.35,-4.86 a 12.55,12.55 0 0 1 -1.14,-3.94 2.13,2.13 0 0 1 -1.11,-1.87 V 82.2 a 2.13,2.13 0 0 1 1.07,-1.85 v -0.28 a 6.41,6.41 0 0 1 6.4,-6.4 h 4.27 a 6.41,6.41 0 0 1 6.4,6.4 z m -1.07,2.13 a 1.07,1.07 0 0 1 -1.07,-1.07 v -1.06 a 4.27,4.27 0 0 0 -4.26,-4.27 h -4.27 a 4.27,4.27 0 0 0 -4.27,4.27 v 1.06 a 1.06,1.06 0 0 1 -1.06,1.07 v 2.13 a 1.06,1.06 0 0 1 1.06,1.07 9.93,9.93 0 0 0 1,3.79 c 1.11,2.22 2.09,3.68 5.44,3.68 3.35,0 4.34,-1.46 5.45,-3.68 a 10,10 0 0 0 1,-3.79 1.07,1.07 0 0 1 1.07,-1.07 V 82.2 Z m -4.27,0 h -1.06 a 1.07,1.07 0 1 0 0,2.13 h 1.06 a 1.07,1.07 0 1 0 0,-2.13 z m -5.33,0 h -1.07 a 1.07,1.07 0 0 0 0,2.13 h 1.07 a 1.07,1.07 0 1 0 0,-2.13 z m 11.73,27.73 a 1.06,1.06 0 0 0 -1.06,1.07 v 14.93 a 1.07,1.07 0 1 0 2.13,0 V 111 a 1.07,1.07 0 0 0 -1.07,-1.07 z m -24.53,0 H 82.47 a 3.12,3.12 0 0 1 -3.2,-3.2 v -32 a 1.07,1.07 0 0 0 -2.14,0 v 32 a 5.29,5.29 0 0 0 5.34,5.34 H 107 a 1.07,1.07 0 0 0 0,-2.14 z"
|
||||
class="cls-2"
|
||||
id="presentation-man"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#222840" />
|
||||
<path
|
||||
id="path2724"
|
||||
style="fill:#17a81a"
|
||||
d="m 127.32716,41.74 h -2 V 29 h 2 v 7.36 l 1.11,-0.11 2.13,-3.51 h 2.19 l -2.59,4.26 2.74,4.78 h -2.21 l -2.2,-3.78 -1.17,0.12 z m -6.41,0 V 29 h 2 v 12.74 z m -2.57,-6.22 v 4.1 a 0.86,0.86 0 0 0 0.2,0.58 1,1 0 0 0 0.59,0.25 l -0.06,1.49 a 3.8,3.8 0 0 1 -2.38,-0.66 6.91,6.91 0 0 1 -2.9,0.66 c -1.79,0 -2.68,-1 -2.68,-2.86 a 2.44,2.44 0 0 1 0.73,-2 4,4 0 0 1 2.24,-0.74 l 2.32,-0.2 V 35.5 a 1.33,1.33 0 0 0 -0.31,-1 1.35,1.35 0 0 0 -0.93,-0.29 c -0.77,0 -1.73,0 -2.88,0.14 h -0.58 l -0.08,-1.35 a 15.72,15.72 0 0 1 3.61,-0.46 3.31,3.31 0 0 1 2.38,0.71 3.05,3.05 0 0 1 0.73,2.27 z m -4,2.23 a 1.21,1.21 0 0 0 -1.24,1.35 c 0,0.83 0.37,1.24 1.1,1.24 a 7,7 0 0 0 1.91,-0.29 l 0.32,-0.11 v -2.39 z m -11.65,-6.55 v -1.79 h 9 v 1.79 h -3.49 v 10.54 h -2 V 31.2 Z m -4.619996,3.22 h -2.49 v 4 a 4.12,4.12 0 0 0 0.17,1.46 c 0.1,0.24 0.38,0.36 0.82,0.36 l 1.48,-0.06 0.09,1.57 a 11,11 0 0 1 -1.84,0.23 2.55,2.55 0 0 1 -2.09,-0.7 4.41,4.41 0 0 1 -0.52,-2.69 v -4.17 h -1.2 v -1.68 h 1.2 v -2.61 h 1.94 v 2.61 h 2.49 z m -11.94,7.52 c -1.87,0 -3.17,-0.5 -3.91,-1.51 a 8.16,8.16 0 0 1 -1.11,-4.78 8.43,8.43 0 0 1 1.13,-4.85 c 0.75,-1.06 2,-1.58 3.89,-1.58 1.89,0 3.15,0.52 3.89,1.57 a 8.41,8.41 0 0 1 1.12,4.85 11.08,11.08 0 0 1 -0.45,3.49 4,4 0 0 1 -1.5,2 l 1.5,2.47 -1.86,0.86 -1.6,-2.63 a 3.68,3.68 0 0 1 -1.1,0.11 z m -2.34,-2.8 a 3.13,3.13 0 0 0 4.68,0 7.43,7.43 0 0 0 0.6,-3.5 7.78,7.78 0 0 0 -0.62,-3.58 3,3 0 0 0 -4.64,0 7.56,7.56 0 0 0 -0.63,3.56 7.47,7.47 0 0 0 0.61,3.52 z"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<rect
|
||||
style="fill:url(#radialGradient3972)"
|
||||
id="src/plugins/welcome/images/border"
|
||||
width="37"
|
||||
height="37"
|
||||
x="642"
|
||||
y="91" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
|
Before Width: | Height: | Size: 364 KiB After Width: | Height: | Size: 356 KiB |