From 0b4528c05d49eda54e8d0b4b04057d199fd3112b Mon Sep 17 00:00:00 2001 From: = <=> Date: Mon, 14 Dec 2020 17:23:14 -0500 Subject: [PATCH] Add some more buttons --- .README.md.swp | Bin 12288 -> 0 bytes .gitignore | 13 +++++++++++ .update.py.swp | Bin 24576 -> 0 bytes .upnot.swp | Bin 12288 -> 0 bytes LICENSE | 21 ++++++++++++++++++ README.md | 24 +++++++++++++++----- assets/gui-screenshot.png | Bin 0 -> 8920 bytes cronInstall.sh | 45 ++++++++++++++++++++++++++++++++++++++ update.py | 23 ++++++++++++------- 9 files changed, 113 insertions(+), 13 deletions(-) delete mode 100644 .README.md.swp create mode 100644 .gitignore delete mode 100644 .update.py.swp delete mode 100644 .upnot.swp create mode 100644 LICENSE create mode 100644 assets/gui-screenshot.png create mode 100755 cronInstall.sh diff --git a/.README.md.swp b/.README.md.swp deleted file mode 100644 index 86d3767f19b8321f6e82b47dc6da24c1b72aaa4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2v2GMG5Qd%9gdlis+O;>Qg6Xa^hnNSS)^;QVcC`s=tk9*;wjOM5Zza{}-)ii^ z1en033DjZSU0)j9yW3lhF`bp$aO>va(&6mL1egF5U;<2l2`~XBzyz4U)h7__f_O{E zSezYYY4%(=_nf`*g9$JJCcp%k025#WOn?b60Vco%m;e*Ff&?V}Y5#Feh)40mpZ@=! ze*b@47UJu5AwH9RBKt`8f$TlmZ*uxY_LJ;8*<-R8|AmYP6JP>NfC(@GCcp%k025#W zOyEB!Fz^Vw#-awLeLy(^GX`I0)|ni=Ph72GY#c~G)p-IB3(Sw;M1=xuj7oA-Rkc<* zHA92c6zvmVB3hCI38gW%nI?%G0gq9KW-gC9K7k?x>o?N$L>;N*RY;Uc_X<^yqWKGAl*xT9M*#IiXa||9rfshx@=tGl1Fc9;Mb8TOCVyED9r)&TjTHo3^(xZ$h zRb_O{#Z95N1|vD8L`bx@fUj-r?xvI}|9}&8;Ltks6sq)OZii;w9m_HiVmO2(^-&=1 z+glqBMW+J;FDEEOn!?Mz_UHmwm5174B;59m&r%_hwcQtkrllO7%v#DpQ6At`Wy=;V zQVqJnbZaV^w6=`U<4Hn6XQWC07l?04<_YqsE@R$S=0}vxj1C>QPhgIX8hP-+xYot{ z6XR$mo08h;Y0s_#REE^BiEVa^xSMMMrOKQnn!zbU#h4&1xw%_1U!Xa`+~~Y5OF3=5 VqvWJkXBS0uU=uS%^*BdI`~hZsC~*J) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1fb093e --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ + +#Swap files +*.swp + +design +testfile +testbed.py +randoms + +*.lock +*.pyc +*.pyo +*.toml diff --git a/.update.py.swp b/.update.py.swp deleted file mode 100644 index 127d383cd245f9b7fb0b9a2dfd7dc2751f23d71c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24576 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 B*zN!T diff --git a/.upnot.swp b/.upnot.swp deleted file mode 100644 index 56240216086ba6e19a4e22512fe3d0a54e7d33d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 literal 0 HcmV?d00001 diff --git a/cronInstall.sh b/cronInstall.sh new file mode 100755 index 0000000..890d742 --- /dev/null +++ b/cronInstall.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +distResult=$(grep "PRETTY_NAME=" < /etc/*-release) +echo "$distResult" +updateInterval="$1" +updatePath="$(pwd)/update.py" + +if [ -z "$updateInterval" ]; then + updateInterval=30 + echo $updateInterval +fi +#Check that the running distro is debian and update.py exists +if [[ "$distResult" != *"Debian"* ]]; then + echo 'Identified distribution is not debian. Quiting...' + exit 1 +fi + +if [ ! -f "$updatePath" ]; then + echo 'update.py not found. Quitting...' + exit 1 +fi + +#Check if there is too many arguments +if [ "$#" -gt "1" ]; then + echo "Too many arguments. There are $#." + exit 1 +fi + +retes='^[0-9]+$' +if ! [[ $updateInterval =~ $retes ]]; then + echo 'interval has non int value. Quiting.' + exit 1 +fi + +echo 'Starting' + +#inTime = '17 * * * * root cd / && run-parts --report /etc/cron.hourly' +insert="$updateInterval 5 pkg.updates $updatePath" +currentLine=$(cat /etc/anacrontab | grep 'pkg.updates') + +if [ "$currentLine" = "" ]; then + echo "$insert" >> /etc/anacrontab +else + sed -i "/pkg.updates/ c\\$insert" /etc/anacrontab +fi diff --git a/update.py b/update.py index b645294..7dfe8df 100755 --- a/update.py +++ b/update.py @@ -23,9 +23,9 @@ class UpdatePrompt(QDialog): layout = QVBoxLayout() btnLayout = QHBoxLayout() self.centStack = QStackedWidget() - updateButton = QPushButton('Update') - cancelButton = QPushButton('Cancel') - notifyLabel = QLabel('There are updates scheduled') + self.updateButton = QPushButton('Update') + self.cancelButton = QPushButton('Cancel') + notifyLabel = QLabel('There are upgrades scheduled') self.inputBox = QLineEdit() self.outputBox = QTextBrowser() #refreshIcon = QIcon.fromTheme('process-working') @@ -36,8 +36,8 @@ class UpdatePrompt(QDialog): layout.addWidget(self.centStack) layout.addWidget(self.inputBox) layout.addLayout(btnLayout) - btnLayout.addWidget(cancelButton) - btnLayout.addWidget(updateButton) + btnLayout.addWidget(self.cancelButton) + btnLayout.addWidget(self.updateButton) self.centStack.addWidget(refreshAnimation) self.centStack.addWidget(self.outputBox) @@ -48,14 +48,15 @@ class UpdatePrompt(QDialog): self.inputBox.setEchoMode(QLineEdit.Password) self.inputBox.setFocus() self.inputBox.returnPressed.connect(self.pkgUpdates) - updateButton.clicked.connect(self.pkgUpdates) - cancelButton.clicked.connect(self.cancelUpdates) + self.updateButton.clicked.connect(self.pkgUpdates) + self.cancelButton.clicked.connect(self.cancelUpdates) + self.updateButton.setDefault(True) self.centStack.setCurrentIndex(1) notifyLabel.setAlignment(Qt.AlignTop) self.outputBox.setReadOnly(True) #self.outputBox.setAlignment(Qt.AlignTop) - self.setWindowTitle('Package Updates') + self.setWindowTitle('Package Upgrades') self.setLayout(layout) self.resize(450, 250) return @@ -123,9 +124,14 @@ class UpdatePrompt(QDialog): self.passError('The password field cannot be empty') return + self.inputBox.clear() + self.inputBox.setDisabled(True) + self.updateButton.setDisabled(True) trio.run(self.asetup, password) self.centStack.setCurrentIndex(1) self.refreshIcon.stop() + self.updateButton.setDisabled(False) + self.inputBox.setDisabled(False) return def passError(self, s): @@ -143,6 +149,7 @@ class UpdatePrompt(QDialog): return def cancelUpdates(self): + #Needs way of closing subprocess during async run self.reject() return