Initial PyQt5 rewrite of mambabase

This commit is contained in:
Silvan Calarco 2019-10-19 16:32:47 +02:00
parent ab47acc57c
commit 8b9fd9e648
8 changed files with 1189 additions and 0 deletions

118
mambabase/FinishPage.ui Normal file
View File

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>552</width>
<height>392</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>551</width>
<height>391</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="frame_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(239, 240, 241);
background-color: rgb(255, 255, 255);</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>511</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:14pt; font-weight:600;&quot;&gt;Installation completed.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="progressLabel">
<property name="geometry">
<rect>
<x>26</x>
<y>130</y>
<width>501</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QFrame" name="installationDetails">
<property name="geometry">
<rect>
<x>20</x>
<y>100</y>
<width>511</width>
<height>271</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>40</y>
<width>511</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;If you ran into problems, please check the installation log below for warnings or errors and send the report to the openmamba community at &lt;a href=&quot;https://openmamba.org&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;openmamba.org&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>552</width>
<height>392</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>551</width>
<height>391</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="frame_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(239, 240, 241);
background-color: rgb(255, 255, 255);</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>531</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:14pt; font-weight:600;&quot;&gt;Installation in progress...&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
<widget class="QProgressBar" name="progressBar">
<property name="geometry">
<rect>
<x>20</x>
<y>70</y>
<width>511</width>
<height>41</height>
</rect>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
<widget class="QLabel" name="progressLabel">
<property name="geometry">
<rect>
<x>20</x>
<y>120</y>
<width>511</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QFrame" name="progressFrame">
<property name="geometry">
<rect>
<x>20</x>
<y>170</y>
<width>511</width>
<height>201</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QTextBrowser" name="progressDetails">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>491</width>
<height>181</height>
</rect>
</property>
</widget>
</widget>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,274 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>552</width>
<height>392</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>551</width>
<height>391</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="frame_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(239, 240, 241);
background-color: rgb(255, 255, 255);</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>511</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Please, select from the boxes below the components that you want to install or update from network.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>10</x>
<y>50</y>
<width>531</width>
<height>331</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(239, 240, 241);</string>
</property>
<property name="title">
<string>Proprietary software installatios/updates</string>
</property>
<widget class="QCheckBox" name="inst_nvidia">
<property name="geometry">
<rect>
<x>20</x>
<y>30</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>NVIDIA proprietary video driver /autodetected) from openmamba.org</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
<widget class="QCheckBox" name="inst_fglrx">
<property name="geometry">
<rect>
<x>20</x>
<y>50</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>AMD/ATI proprietary video driver from openmamba.org</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_fglrx_legacy">
<property name="geometry">
<rect>
<x>20</x>
<y>70</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>AMD/ATI proprietary video driver (legacy) from openmamba.org</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_broadcom_sta">
<property name="geometry">
<rect>
<x>20</x>
<y>90</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Broadcom-sta proprietary wireless driver from openmamba.org</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_b43">
<property name="geometry">
<rect>
<x>20</x>
<y>110</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Broadcom B43 proprietary firmarwe from openwrt.org</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_flash">
<property name="geometry">
<rect>
<x>20</x>
<y>130</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Flash plugin from adobe.com</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_msttcf">
<property name="geometry">
<rect>
<x>20</x>
<y>170</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>MS TrueType core fonts from sourceforge</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_codecs">
<property name="geometry">
<rect>
<x>20</x>
<y>190</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Win32 codecs from mplayerhq.hu</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_java">
<property name="geometry">
<rect>
<x>20</x>
<y>210</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Oracle Java from oracle.com</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_pepperflash">
<property name="geometry">
<rect>
<x>20</x>
<y>150</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Pepper-Flash plugin for chromium from google.com</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_skype">
<property name="geometry">
<rect>
<x>20</x>
<y>230</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Skype from skype.com</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_spotify">
<property name="geometry">
<rect>
<x>20</x>
<y>250</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Spotify from spotify.com</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_virtualbox">
<property name="geometry">
<rect>
<x>20</x>
<y>270</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>VirtualBox extension pack from virtualbox.org</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_widevine">
<property name="geometry">
<rect>
<x>20</x>
<y>290</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Widevine extension from google.com</string>
</property>
</widget>
</widget>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,222 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>552</width>
<height>392</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>551</width>
<height>391</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="frame_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(239, 240, 241);
background-color: rgb(255, 255, 255);</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>511</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Please, select from the boxes below the components that you want to install or update from network.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>10</x>
<y>50</y>
<width>531</width>
<height>331</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(239, 240, 241);</string>
</property>
<property name="title">
<string>openmamba installations/updates</string>
</property>
<widget class="QCheckBox" name="inst_base">
<property name="geometry">
<rect>
<x>20</x>
<y>30</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>System base packages (recommended)</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
<widget class="QCheckBox" name="inst_office">
<property name="geometry">
<rect>
<x>20</x>
<y>60</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Office packages (OpenOffice, ...)</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_players">
<property name="geometry">
<rect>
<x>20</x>
<y>90</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Audio and Video players (VLC, kaffeine, ...)</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_multimedia_editing">
<property name="geometry">
<rect>
<x>20</x>
<y>120</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Multimedia editing and production (kino, audacity, rosegarden, mixxx, ...)</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_internet">
<property name="geometry">
<rect>
<x>20</x>
<y>150</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Internet communication and p2p</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_graphics">
<property name="geometry">
<rect>
<x>20</x>
<y>180</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Graphics software (gimp, digikam, blender, krita)</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_virtualization">
<property name="geometry">
<rect>
<x>20</x>
<y>240</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Emulation and virtualization (VirtualBox, wine)</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_server">
<property name="geometry">
<rect>
<x>20</x>
<y>270</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Base server packages (Apache, PHP, MariaDB, ...)</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_devel">
<property name="geometry">
<rect>
<x>20</x>
<y>300</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Base development packages (gcc, glibc-devel, kernel headers, ...)</string>
</property>
</widget>
<widget class="QCheckBox" name="inst_games">
<property name="geometry">
<rect>
<x>20</x>
<y>210</y>
<width>491</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Games (tuxracer, pingus, ksudoku, ...)</string>
</property>
</widget>
</widget>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>

167
mambabase/WelcomePage.ui Normal file
View File

@ -0,0 +1,167 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>552</width>
<height>380</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>551</width>
<height>381</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="frame">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>160</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(255, 255, 255);</string>
</property>
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>10</y>
<width>491</width>
<height>61</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>openmamba.png</pixmap>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>80</y>
<width>511</width>
<height>72</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;Copyright (c) 2007-2019 by Silvan Calarco&lt;br/&gt;Released under the terms of the GNU GPL v3 license&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://openmamba.org&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;openmamba.org&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<widget class="QFrame" name="frame_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(239, 240, 241);</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>511</width>
<height>81</height>
</rect>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This program will complete the installation by adding the minimum recommended set of packages to the system. Additionally it will let you install, upon selection, macro-group of packages and proprietary software components.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;TIP&lt;/span&gt;: you may run this program later from the &lt;span style=&quot; font-style:italic;&quot;&gt;openmamba control center&lt;/span&gt; on the tray icon bar.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="label_5">
<property name="geometry">
<rect>
<x>10</x>
<y>180</y>
<width>321</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Please, press the Next button to continue.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,28 @@
#!/bin/bash
. /usr/share/openmamba/pkggroups.db
echo kernel_mamba=$KERNEL_MAMBA_PKGS
echo kernel_mamba_64gb=$KERNEL_MAMBA_64GB_PKGS
echo kernel_mamba_x86_64=$KERNEL_MAMBA_X86_64_PKGS
echo kernel_mamba_arm=$KERNEL_MAMBA_ARM_PKGS
echo base=$BASE_PKGS
echo base_extras=$BASE_PKGS_EXTRAS
echo office=$OFFICE_PKGS
echo office_extras=$OFFICE_EXTRA_PKGS
echo multimedia_players=$MULTIMEDIA_PLAYERS_PKGS
echo multimedia_players_extras=$MULTIMEDIA_PLAYERS_EXTRA_PKGS
echo multimedia_editing=$MULTIMEDIA_EDITING_PKGS
echo multimedia_editing_extras=$MULTIMEDIA_EDITING_EXTRA_PKGS
echo audio=$AUDIO_PKGS
echo audio_prof=$AUDIO_PROF_PKGS
echo video=$VIDEO_PKGS
echo internet=$INTERNET_PKGS
echo internet_extra=$INTERNET_EXTRA_PKGS
echo graphics=$GRAPHICS_PKGS
echo graphics_extras=$GRAPHICS_EXTRA_PKGS
echo scientific=$SCIENTIFIC_PKGS
echo games=$GAMES_PKGS
echo games_extra=$GAMES_EXTRA_PKGS
echo virtualization=$VIRTUALIZATION_PKGS
echo server=$SERVER_PKGS
echo devel=$DEVEL_PKGS

255
mambabase/mambabase.py Executable file
View File

@ -0,0 +1,255 @@
#!/usr/bin/env python3
# Copyright (c) 2019 by Silvan Calarco <silvan.calarco@mambasoft.it>
# Release under the terms of the GPL version 3 license
from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5.QtCore import pyqtProperty
from PyQt5 import QtCore, QtWidgets
from PyQt5 import QtWidgets, uic
from pathlib import Path
import gettext
import subprocess
import os
import gi
gi.require_version('PackageKitGlib', '1.0')
from gi.repository import PackageKitGlib as packagekit
class InstallThread(QtCore.QThread):
parent = None
doneSignal = QtCore.pyqtSignal()
updateProgressSignal = QtCore.pyqtSignal(dict)
pkggroups = {}
def __init__(self, parent=None):
super(InstallThread, self).__init__(parent)
self.parent = parent
self.doneSignal.connect(parent.installationPage.completeChanged)
self.updateProgressSignal.connect(
parent.installationPage.updateProgressSlot)
# Load packages group db into a dict
result = subprocess.run(['/usr/libexec/mambabase-pkggroups-parser.sh'],
stdout=subprocess.PIPE)
lines = result.stdout.decode('UTF-8').splitlines()
for line in lines:
if line:
(key, val) = line.split("=")
self.pkggroups[key] = val
def run(self):
install = {}
parent = self.parent
# Disable back and next buttons
parent.installationPage.done = False
self.doneSignal.emit()
self.updateProgressSignal.emit(
{ 'value': 1, 'label': _("Starting installation...")})
# Groups
install['base'] = \
parent.selectGroupsPage.inst_base.isChecked()
install['office'] = \
parent.selectGroupsPage.inst_office.isChecked()
install['players'] = \
parent.selectGroupsPage.inst_players.isChecked()
install['multimedia_editing'] = \
parent.selectGroupsPage.inst_multimedia_editing.isChecked()
install['internet'] = \
parent.selectGroupsPage.inst_internet.isChecked()
install['graphics'] = \
parent.selectGroupsPage.inst_graphics.isChecked()
install['games'] = \
parent.selectGroupsPage.inst_games.isChecked()
install['virtualization'] = \
parent.selectGroupsPage.inst_virtualization.isChecked()
install['server'] = \
parent.selectGroupsPage.inst_server.isChecked()
install['devel'] = \
parent.selectGroupsPage.inst_devel.isChecked()
# Extra proprietary
install['nvidia'] = \
parent.selectExtraPage.inst_nvidia.isChecked()
install['fglrx'] = \
parent.selectExtraPage.inst_fglrx.isChecked()
install['fglrx_legacy'] = \
parent.selectExtraPage.inst_fglrx_legacy.isChecked()
install['broadcom_sta'] = \
parent.selectExtraPage.inst_broadcom_sta.isChecked()
install['b43'] = \
parent.selectExtraPage.inst_b43.isChecked()
install['flash'] = \
parent.selectExtraPage.inst_flash.isChecked()
install['pepperflash'] = \
parent.selectExtraPage.inst_pepperflash.isChecked()
install['msttcf'] = \
parent.selectExtraPage.inst_msttcf.isChecked()
install['codecs'] = \
parent.selectExtraPage.inst_codecs.isChecked()
install['java'] = \
parent.selectExtraPage.inst_java.isChecked()
install['skype'] = \
parent.selectExtraPage.inst_skype.isChecked()
install['spotify'] = \
parent.selectExtraPage.inst_spotify.isChecked()
install['virtualbox'] = \
parent.selectExtraPage.inst_virtualbox.isChecked()
install['widevine'] = \
parent.selectExtraPage.inst_widevine.isChecked()
# Update packages list
self.updateProgressSignal.emit({ 'value': 5,
'label': _("Updating packages list...")})
result = subprocess.run(['pkcon', 'refresh', 'force'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if result.returncode == 0:
if result.stdout:
self.updateProgressSignal.emit({
'details': result.stdout.decode('UTF-8')})
else:
if result.stderr:
self.updateProgressSignal.emit({
'details': result.stderr.decode('UTF-8')})
# Perform system update
self.updateProgressSignal.emit({ 'value': 10,
'label': _("Updating installed packages...")})
result = subprocess.run(['pkcon', 'update'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if result.returncode == 0:
if result.stdout:
self.updateProgressSignal.emit({
'details': result.stdout.decode('UTF-8')})
else:
if result.stderr:
self.updateProgressSignal.emit({
'details': result.stderr.decode('UTF-8')})
self.updateProgressSignal.emit({ 'value': 20 })
# Install requested packages
arch = os.uname()[4]
if arch == 'i686':
arch = 'i586'
elif arch[:3] == 'arm':
arch = 'arm'
client = packagekit.Client()
for inst in install:
if install[inst]:
parent.installationPage.progressLabel.setText(
_("Installing %s packages..." % inst))
for p in self.pkggroups[inst].split():
result =client.resolve(0, (p,), None,
self.packagekit_progress_cb, None)
pkgs = result.get_package_array()
for p in pkgs:
if 'installed' in p.get_data().split(':'):
break
if p.get_arch() != arch:
continue
packageid = p.get_name() + ';' + p.get_version() + ';' \
+ p.get_arch() + ';' + p.get_data()
client.install_packages(False, (packageid, ), None,
self.packagekit_progress_cb, p.get_name())
self.updateProgressSignal.emit({ 'value': 100,
'label': _("Installation finished!")})
# Enable back and next buttons
parent.installationPage.done = True
self.doneSignal.emit()
def packagekit_progress_cb(self, status, typ, data=None):
if status.get_property('package'):
self.updateProgressSignal.emit({
'label': _("Installing %s package (%s)..." %
(status.get_property('package').get_name(),
str(status.get_percentage())))})
class MambabaseWizard(QtWidgets.QWizard):
def __init__(self, parent=None):
super(MambabaseWizard, self).__init__(parent)
self.addPage(WelcomePage(self))
self.selectGroupsPage = SelectGroupsPage(self)
self.addPage(self.selectGroupsPage)
self.selectExtraPage = SelectExtraPage(self)
self.addPage(self.selectExtraPage)
self.installationPage = InstallationPage(self)
self.addPage(self.installationPage)
self.finishPage = FinishPage(self)
self.addPage(self.finishPage)
self.setWindowTitle("openmamba base network installations - openmamba.org")
self.setFixedSize(571,465)
self.currentIdChanged.connect(self.currentIdChangedSlot)
self.installThread = InstallThread(self)
def currentIdChangedSlot(self, currentId):
if currentId == 3:
self.installThread.start()
class WelcomePage(QtWidgets.QWizardPage):
def __init__(self, parent=None):
super(WelcomePage, self).__init__(parent)
uic.loadUi('WelcomePage.ui', self)
self.show()
class SelectGroupsPage(QtWidgets.QWizardPage):
def __init__(self, parent=None):
super(SelectGroupsPage, self).__init__(parent)
uic.loadUi('SelectGroupsPage.ui', self)
self.show()
class SelectExtraPage(QtWidgets.QWizardPage):
def __init__(self, parent=None):
super(SelectExtraPage, self).__init__(parent)
uic.loadUi('SelectExtraPage.ui', self)
self.setCommitPage(True)
self.show()
class InstallationPage(QtWidgets.QWizardPage):
done = False
parent = None
def __init__(self, parent=None):
super(InstallationPage, self).__init__(parent)
uic.loadUi('InstallationPage.ui', self)
self.parent = parent
self.show()
def isComplete(self):
return self.done
@QtCore.pyqtSlot(dict)
def updateProgressSlot(self, dict):
if 'value' in dict:
self.progressBar.setValue(dict['value'])
if 'label' in dict:
self.progressLabel.setText(dict['label'])
if 'details' in dict:
self.progressDetails.setText(dict['details'])
class FinishPage(QtWidgets.QWizardPage):
def __init__(self, parent=None):
super(FinishPage, self).__init__(parent)
uic.loadUi('FinishPage.ui', self)
self.show()
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
app.setWindowIcon(QtGui.QIcon("mamba-128x128.png"))
wizard = MambabaseWizard()
gettext.install('mambabase', '/usr/share/locale')
wizard.show()
sys.exit(app.exec_())

BIN
mambabase/openmamba.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB