summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qml/InstallSoftware.qml2
-rw-r--r--qml/Sources.qml8
-rw-r--r--qml/mageiawelcome.py33
3 files changed, 41 insertions, 2 deletions
diff --git a/qml/InstallSoftware.qml b/qml/InstallSoftware.qml
index af90294..f7d964b 100644
--- a/qml/InstallSoftware.qml
+++ b/qml/InstallSoftware.qml
@@ -37,7 +37,7 @@ Rectangle {
anchors.left: parent.left; anchors.leftMargin: 20;
width: slideshow.width * .35
objectName: "launch"
- onMbuttonClicked: { launch.command(["/usr/bin/dnfdragora",])}
+ onMbuttonClicked: { launch.install_and_launch(["dnfdragora","/usr/bin/dnfdragora"])}
buttonText: qsTr("Dnfdragora")
}
Label {
diff --git a/qml/Sources.qml b/qml/Sources.qml
index fa54e1d..a43b6a4 100644
--- a/qml/Sources.qml
+++ b/qml/Sources.qml
@@ -191,6 +191,14 @@ If this computer will have access to the Internet, you can delete the <i>Local</
Layout.margins: 10
}
MButton {
+ visible: networkstate.isOffLine()
+ Layout.columnSpan: 2
+ Layout.alignment: Qt.AlignHCenter
+ objectName: "launch"
+ onMbuttonClicked: { launch.command(["/usr/bin/draknetcenter",])}
+ buttonText: qsTr("Configure network")
+ }
+ MButton {
Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter
objectName: "launch"
diff --git a/qml/mageiawelcome.py b/qml/mageiawelcome.py
index fa1ed46..da3fec6 100644
--- a/qml/mageiawelcome.py
+++ b/qml/mageiawelcome.py
@@ -28,6 +28,16 @@ from OpenGL import GL
translate = QCoreApplication.translate
+class Networkstate(QObject):
+ def __init__(self):
+ QObject.__init__(self)
+
+ @pyqtSlot(result=bool)
+ def isOffLine(self):
+ # Search active network connections
+ net = QNetworkConfigurationManager()
+ return not net.isOnline()
+
class ConfList(QAbstractListModel):
NameRole = Qt.UserRole + 1
@@ -166,10 +176,13 @@ class Launcher(QObject):
cmd = []
for i in range(0, app.property("length").toInt()):
cmd.append(app.property(i).toString())
+ self._command(cmd[0])
+
+ def _command(self, cmd):
try:
subprocess.Popen(cmd)
except:
- print(f"Exception running {cmd[0]}")
+ print(f"Exception running {cmd}")
self.noprogram.emit()
return
@@ -239,6 +252,22 @@ class Launcher(QObject):
self.installed.emit()
return
+ @pyqtSlot(QVariant)
+ def install_and_launch(self, app):
+ """
+ app should be an array with the package name to install and then the command to launch
+ """
+ if app.isArray():
+ cmd = []
+ # app should contain package, repository
+ for i in range(0, app.property("length").toInt()):
+ cmd.append(app.property(i).toString())
+ print(cmd)
+ is_app_installed, inst_repo = is_installed(cmd[0])
+ if not is_app_installed:
+ proc = subprocess.Popen(["/usr/bin/gurpmi", cmd[0]])
+ proc.wait()
+ self._command(cmd[1])
class Norun(QObject):
def __init__(self):
@@ -310,6 +339,7 @@ if __name__ == "__main__":
ins = Installable()
cl = ConfList()
nr = Norun()
+ ns = Networkstate()
sc = nr.startupcheck()
factor = cl.factor(app)
screen = app.primaryScreen()
@@ -332,6 +362,7 @@ if __name__ == "__main__":
view.rootContext().setContextProperty("pyinstallable", ins)
view.rootContext().setContextProperty("startupcheck", sc)
view.rootContext().setContextProperty("norun", nr)
+ view.rootContext().setContextProperty("networkstate", ns)
current_path = os.path.abspath(os.path.dirname(__file__))
qml_file = os.path.join(current_path, "mw-ui.qml")
view.setSource(QUrl.fromLocalFile(qml_file))