3 Commits

Author SHA1 Message Date
Caleb Gardner 226e9d6210 Changed $PANAME to $FILENAME
Added $APPNAME
Fixed a couple bugs
2017-08-10 19:05:54 -05:00
Belac Darkstorm 56748f043e Added stuff for appimages.
Shows changelog before updating.
2017-08-09 03:36:35 -05:00
Belac Darkstorm 3d3239fe0a Updated README 2017-08-08 12:39:41 -05:00
6 changed files with 202 additions and 25 deletions
+3 -2
View File
@@ -30,6 +30,7 @@ Photos are found [Here](https://goo.gl/photos/VtBUL6DyZTMidj5n6). The screenshot
# TODO (Might be in order) # TODO (Might be in order)
1. MAKE IT BETTER   1. MAKE IT BETTER  
1. Ask if you want to update   1. Ask if you want to update / manual update check
1. Show change log on update  
1. Better appimage support in general 1. Better appimage support in general
1. Check if all apps are closed when it closes and ask if you want to force stop the apps. . 1. Check if all apps are closed when it closes and ask if you want to force stop the apps
+42 -10
View File
@@ -25,7 +25,11 @@ type app struct {
func (a *app) getTreeIter(store *gtk.TreeStore) *gtk.TreeIter { func (a *app) getTreeIter(store *gtk.TreeStore) *gtk.TreeIter {
it := store.Append(nil) it := store.Append(nil)
store.SetValue(it, 0, a.icon) store.SetValue(it, 0, a.icon)
if portableHide {
store.SetValue(it, 1, strings.TrimSuffix(a.name, "Portable"))
} else {
store.SetValue(it, 1, a.name) store.SetValue(it, 1, a.name)
}
if len(a.ex) > 1 { if len(a.ex) > 1 {
if wine { if wine {
for _, v := range a.ex { for _, v := range a.ex {
@@ -48,13 +52,17 @@ func (a *app) launch() {
var cmd *exec.Cmd var cmd *exec.Cmd
if !contains(a.lin, a.ex[0]) { if !contains(a.lin, a.ex[0]) {
if comEnbld { if comEnbld {
cmd = exec.Command("/bin/sh", "-c", ". PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; wine \""+a.ex[0]+"\"") cmd = exec.Command("/bin/sh", "-c", "export APPNAME="+a.name+";export FILENAME="+a.ex[0]+";. PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; wine \""+a.ex[0]+"\"")
} else { } else {
cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; wine \""+a.ex[0]+"\"") cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; wine \""+a.ex[0]+"\"")
} }
} else { } else {
if paDirs && strings.HasSuffix(strings.ToLower(a.ex[0]), ".appimage") {
os.Mkdir(a.dir+"/"+a.ex[0]+".home", 0777)
os.Mkdir(a.dir+"/"+a.ex[0]+".config", 0777)
}
if comEnbld { if comEnbld {
cmd = exec.Command("/bin/sh", "-c", ". PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; \"./"+a.ex[0]+"\"") cmd = exec.Command("/bin/sh", "-c", "export APPNAME="+a.name+";export FILENAME="+a.ex[0]+";. PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; \"./"+a.ex[0]+"\"")
} else { } else {
cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; \"./"+a.ex[0]+"\"") cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; \"./"+a.ex[0]+"\"")
} }
@@ -64,8 +72,12 @@ func (a *app) launch() {
cmd.Start() cmd.Start()
} else { } else {
var cmd *exec.Cmd var cmd *exec.Cmd
if paDirs && strings.HasSuffix(strings.ToLower(a.ex[0]), ".appimage") {
os.Mkdir(a.dir+"/"+a.ex[0]+".home", 0777)
os.Mkdir(a.dir+"/"+a.ex[0]+".config", 0777)
}
if comEnbld { if comEnbld {
cmd = exec.Command("/bin/sh", "-c", ". PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; \"./"+a.ex[0]+"\"") cmd = exec.Command("/bin/sh", "-c", "export APPNAME="+a.name+";export FILENAME="+a.ex[0]+";. PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; \"./"+a.ex[0]+"\"")
} else { } else {
cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; \"./"+a.ex[0]+"\"") cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; \"./"+a.ex[0]+"\"")
} }
@@ -78,7 +90,7 @@ func (a *app) launch() {
var cmd *exec.Cmd var cmd *exec.Cmd
if len(a.lin) == 0 { if len(a.lin) == 0 {
if comEnbld { if comEnbld {
cmd = exec.Command("/bin/sh", "-c", ". PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; wine \""+a.ex[0]+"\"") cmd = exec.Command("/bin/sh", "-c", "export APPNAME="+a.name+";export FILENAME="+a.ex[0]+";. PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; wine \""+a.ex[0]+"\"")
} else { } else {
cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; wine \""+a.ex[0]+"\"") cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; wine \""+a.ex[0]+"\"")
} }
@@ -90,8 +102,12 @@ func (a *app) launch() {
break break
} }
} }
if paDirs && strings.HasSuffix(strings.ToLower(a.ex[ind]), ".appimage") {
os.Mkdir(a.dir+"/"+a.ex[ind]+".home", 0777)
os.Mkdir(a.dir+"/"+a.ex[ind]+".config", 0777)
}
if comEnbld { if comEnbld {
cmd = exec.Command("/bin/sh", "-c", ". PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; \"./"+a.lin[ind]+"\"") cmd = exec.Command("/bin/sh", "-c", "export APPNAME="+a.name+";export FILENAME="+a.ex[ind]+";. PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; \"./"+a.lin[ind]+"\"")
} else { } else {
cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; \"./"+a.lin[ind]+"\"") cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; \"./"+a.lin[ind]+"\"")
} }
@@ -109,8 +125,12 @@ func (a *app) launch() {
} }
} }
var cmd *exec.Cmd var cmd *exec.Cmd
if paDirs && strings.HasSuffix(strings.ToLower(a.ex[ind]), ".appimage") {
os.Mkdir(a.dir+"/"+a.ex[ind]+".home", 0777)
os.Mkdir(a.dir+"/"+a.ex[ind]+".config", 0777)
}
if comEnbld { if comEnbld {
cmd = exec.Command("/bin/sh", "-c", ". PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; \"./"+a.lin[ind]+"\"") cmd = exec.Command("/bin/sh", "-c", "export APPNAME="+a.name+";export FILENAME="+a.ex[ind]+";. PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; \"./"+a.lin[ind]+"\"")
} else { } else {
cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; \"./"+a.lin[ind]+"\"") cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; \"./"+a.lin[ind]+"\"")
} }
@@ -127,13 +147,17 @@ func (a *app) launchSub(sub int) {
var cmd *exec.Cmd var cmd *exec.Cmd
if !contains(a.lin, a.ex[sub]) { if !contains(a.lin, a.ex[sub]) {
if comEnbld { if comEnbld {
cmd = exec.Command("/bin/sh", "-c", ". PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; wine \""+a.ex[sub]+"\"") cmd = exec.Command("/bin/sh", "-c", "export APPNAME="+a.name+";export FILENAME="+a.ex[0]+";. PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; wine \""+a.ex[sub]+"\"")
} else { } else {
cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; wine \""+a.ex[sub]+"\"") cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; wine \""+a.ex[sub]+"\"")
} }
} else { } else {
if paDirs && strings.HasSuffix(strings.ToLower(a.ex[sub]), ".appimage") {
os.Mkdir(a.dir+"/"+a.ex[sub]+".home", 0777)
os.Mkdir(a.dir+"/"+a.ex[sub]+".config", 0777)
}
if comEnbld { if comEnbld {
cmd = exec.Command("/bin/sh", "-c", ". PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; \"./"+a.ex[sub]+"\"") cmd = exec.Command("/bin/sh", "-c", "export APPNAME="+a.name+";export FILENAME="+a.ex[sub]+";. PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; \"./"+a.ex[sub]+"\"")
} else { } else {
cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; \"./"+a.ex[sub]+"\"") cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; \"./"+a.ex[sub]+"\"")
} }
@@ -143,8 +167,12 @@ func (a *app) launchSub(sub int) {
cmd.Start() cmd.Start()
} else { } else {
var cmd *exec.Cmd var cmd *exec.Cmd
if paDirs && strings.HasSuffix(strings.ToLower(a.ex[sub]), ".appimage") {
os.Mkdir(a.dir+"/"+a.ex[sub]+".home", 0777)
os.Mkdir(a.dir+"/"+a.ex[sub]+".config", 0777)
}
if comEnbld { if comEnbld {
cmd = exec.Command("/bin/sh", "-c", ". PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; \"./"+a.ex[sub]+"\"") cmd = exec.Command("/bin/sh", "-c", "export APPNAME="+a.name+";export FILENAME="+a.ex[sub]+";. PortableApps/LinuxPACom/common.sh || exit 1;cd \""+a.dir+"\"; \"./"+a.ex[sub]+"\"")
} else { } else {
cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; \"./"+a.ex[sub]+"\"") cmd = exec.Command("/bin/sh", "-c", "cd \""+a.dir+"\"; \"./"+a.ex[sub]+"\"")
} }
@@ -179,11 +207,15 @@ func (a *app) edit(parent *gtk.Window, reload func()) {
imgBut.SetImage(img) imgBut.SetImage(img)
imgBut.SetSizeRequest(100, 100) imgBut.SetSizeRequest(100, 100)
imgBut.Connect("clicked", func() { imgBut.Connect("clicked", func() {
fil, _ := gtk.FileChooserDialogNewWith2Buttons("Select Icon", win, gtk.FILE_CHOOSER_ACTION_OPEN, "Cancel", gtk.RESPONSE_CANCEL, "Open", gtk.RESPONSE_ACCEPT) fil, _ := gtk.FileChooserDialogNewWith1Button("Select Icon", win, gtk.FILE_CHOOSER_ACTION_OPEN, "Open", gtk.RESPONSE_ACCEPT)
filter, _ := gtk.FileFilterNew() filter, _ := gtk.FileFilterNew()
filter.AddPixbufFormats() filter.AddPixbufFormats()
filter.SetName("Supported Pictures") filter.SetName("Supported Pictures")
fil.AddFilter(filter) fil.AddFilter(filter)
but, _ := fil.AddButton("Cancel", gtk.RESPONSE_CANCEL)
but.Connect("clicked", func() {
fil.Close()
})
resp := fil.Run() resp := fil.Run()
if resp == int(gtk.RESPONSE_ACCEPT) { if resp == int(gtk.RESPONSE_ACCEPT) {
filename := fil.GetFilename() filename := fil.GetFilename()
+1 -1
View File
@@ -53,7 +53,7 @@ func downloadApp(parent *gtk.Window, ap appimg) {
foldName = "PortableApps/" + name foldName = "PortableApps/" + name
} else { } else {
os.Mkdir("PortableApps/"+name+"Portable", 0777) os.Mkdir("PortableApps/"+name+"Portable", 0777)
foldName = "PortableApps/" + name foldName = "PortableApps/" + name + "Portable"
} }
os.Remove(foldName + "/" + ap.full) os.Remove(foldName + "/" + ap.full)
fil, err := os.Create(foldName + "/" + ap.full) fil, err := os.Create(foldName + "/" + ap.full)
+16 -5
View File
@@ -2,6 +2,7 @@ package main
import ( import (
"encoding/gob" "encoding/gob"
"flag"
"fmt" "fmt"
"os" "os"
@@ -9,8 +10,7 @@ import (
) )
const ( const (
version = "2.1.1.0" version = "2.1.2.1"
defIni = ""
) )
var ( var (
@@ -23,16 +23,19 @@ var (
wineAvail bool wineAvail bool
portableHide bool portableHide bool
versionNewest = true versionNewest = true
paDirs = true
) )
func main() { func main() {
forced := flag.Bool("force-update", false, "Force the update dialog to be shown")
flag.Parse()
os.MkdirAll("PortableApps/LinuxPACom", 0777) os.MkdirAll("PortableApps/LinuxPACom", 0777)
master = make(map[string][]app) master = make(map[string][]app)
linmaster = make(map[string][]app) linmaster = make(map[string][]app)
uiStart() uiStart(*forced)
} }
func uiStart() { func uiStart(forced bool) {
gtk.Init(nil) gtk.Init(nil)
setup() setup()
win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL) win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
@@ -49,7 +52,7 @@ func uiStart() {
ui(win) ui(win)
win.ShowAll() win.ShowAll()
win.Show() win.Show()
update(win) update(win, forced)
gtk.Main() gtk.Main()
} }
@@ -72,6 +75,10 @@ func savePrefs() {
if err != nil { if err != nil {
return return
} }
err = enc.Encode(paDirs)
if err != nil {
return
}
} }
func loadPrefs() { func loadPrefs() {
@@ -92,6 +99,10 @@ func loadPrefs() {
if err != nil { if err != nil {
return return
} }
err = dec.Decode(&paDirs)
if err != nil {
return
}
} }
func contains(arr []string, str string) bool { func contains(arr []string, str string) bool {
+44
View File
@@ -9,6 +9,10 @@ import (
"github.com/gotk3/gotk3/gtk" "github.com/gotk3/gotk3/gtk"
) )
const (
commonHelp = "The common.sh is run before every app is launched and allows you to set variables such as $HOME. For directories, ALWAYS start the directory with $PWD which points to the directory where LinuxPA is. To allow for greater customization and isolation, you can use the $FILENAME variable which is the filename of the executable you're using and the $APPNAME variable which is the name of the app being lanched."
)
func settingsUI(parent *gtk.Window, onExit func()) { func settingsUI(parent *gtk.Window, onExit func()) {
win, _ := gtk.WindowNew(gtk.WINDOW_TOPLEVEL) win, _ := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
win.SetTransientFor(parent) win.SetTransientFor(parent)
@@ -84,11 +88,17 @@ func settingsUI(parent *gtk.Window, onExit func()) {
versCheck.Connect("toggled", func() { versCheck.Connect("toggled", func() {
versionNewest = versCheck.GetActive() versionNewest = versCheck.GetActive()
}) })
paDirsCheck, _ := gtk.CheckButtonNewWithLabel("Create .home and .config directories for AppImages")
paDirsCheck.SetActive(paDirs)
paDirsCheck.Connect("toggled", func() {
paDirs = paDirsCheck.GetActive()
})
gnrl.Add(wineLbl) gnrl.Add(wineLbl)
gnrl.Add(dlWine) gnrl.Add(dlWine)
gnrl.Add(pthdCheck) gnrl.Add(pthdCheck)
gnrl.Add(wineCheck) gnrl.Add(wineCheck)
gnrl.Add(versCheck) gnrl.Add(versCheck)
gnrl.Add(paDirsCheck)
ntbk.AppendPage(gnrl, getLabel("General")) ntbk.AppendPage(gnrl, getLabel("General"))
com, _ := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 5) com, _ := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 5)
com.SetMarginStart(10) com.SetMarginStart(10)
@@ -113,8 +123,25 @@ func settingsUI(parent *gtk.Window, onExit func()) {
cnl.Connect("clicked", func() { cnl.Connect("clicked", func() {
setupTxt(comBuf) setupTxt(comBuf)
}) })
info, _ := gtk.ButtonNewWithLabel("Info")
info.Connect("clicked", func() {
infoBox, _ := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
infoBox.SetTransientFor(parent)
infoBox.SetDefaultSize(300, 80)
infoBox.SetName("common.sh info")
infoBox.SetPosition(gtk.WIN_POS_CENTER_ON_PARENT)
box, _ := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 5)
infolbl, _ := gtk.LabelNew(commonHelp)
infolbl.SetLineWrap(true)
infolbl.SetSizeRequest(200, 50)
box.Add(infolbl)
infoBox.Add(box)
infoBox.ShowAll()
infoBox.Show()
})
svBox.Add(sv) svBox.Add(sv)
svBox.Add(cnl) svBox.Add(cnl)
svBox.Add(info)
com.Add(comScrl) com.Add(comScrl)
com.Add(svBox) com.Add(svBox)
ntbk.AppendPage(com, getLabel("common.sh")) ntbk.AppendPage(com, getLabel("common.sh"))
@@ -136,8 +163,25 @@ func settingsUI(parent *gtk.Window, onExit func()) {
dlWine.SetTooltipText("") dlWine.SetTooltipText("")
} }
}) })
in, _ := gtk.ButtonNewWithLabel("Info")
in.Connect("clicked", func() {
infoBox, _ := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
infoBox.SetTransientFor(parent)
infoBox.SetDefaultSize(300, 80)
infoBox.SetName("common.sh info")
infoBox.SetPosition(gtk.WIN_POS_CENTER_ON_PARENT)
box, _ := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 5)
infolbl, _ := gtk.LabelNew(commonHelp)
infolbl.SetLineWrap(true)
infolbl.SetSizeRequest(200, 50)
box.Add(infolbl)
infoBox.Add(box)
infoBox.ShowAll()
infoBox.Show()
})
mkCom.Show() mkCom.Show()
com.Add(mkCom) com.Add(mkCom)
com.Add(in)
} else { } else {
setupTxt(comBuf) setupTxt(comBuf)
} }
+93 -4
View File
@@ -4,6 +4,7 @@ import (
"bufio" "bufio"
"fmt" "fmt"
"io" "io"
"io/ioutil"
"net/http" "net/http"
"os" "os"
"os/exec" "os/exec"
@@ -16,6 +17,7 @@ import (
const ( const (
versionURL = "https://www.dropbox.com/s/a0xizzo0a4vsfqt/Version?dl=1" versionURL = "https://www.dropbox.com/s/a0xizzo0a4vsfqt/Version?dl=1"
downloadURL = "https://github.com/CalebQ42/LinuxPA/releases/download/vXXX/LinuxPA" downloadURL = "https://github.com/CalebQ42/LinuxPA/releases/download/vXXX/LinuxPA"
changelogURL = "https://www.dropbox.com/s/nmbk318er5kej5h/Changelog?dl=1"
) )
//Thanks to https://www.socketloop.com/tutorials/golang-download-file-example //Thanks to https://www.socketloop.com/tutorials/golang-download-file-example
@@ -55,6 +57,38 @@ func getVersionFileInfo() string {
return string(out) return string(out)
} }
func changelogDL() (bool, error) {
changelogFile, err := os.Create("PortableApps/LinuxPACom/Changelog")
if err != nil {
return false, err
}
changelogFile.Chmod(0777)
check := http.Client{
CheckRedirect: func(r *http.Request, via []*http.Request) error {
r.URL.Opaque = r.URL.Path
return nil
},
}
response, err := check.Get(changelogURL)
if err != nil {
return false, err
}
_, err = io.Copy(changelogFile, response.Body)
if err != nil {
return false, err
}
return true, nil
}
func getChangelog() string {
fil, err := os.Open("PortableApps/LinuxPACom/Changelog")
if err != nil {
return "Error!"
}
out, _ := ioutil.ReadAll(fil)
return string(out)
}
func checkForUpdate(new string) (bool, error) { func checkForUpdate(new string) (bool, error) {
curSlice := strings.Split(version, ".") curSlice := strings.Split(version, ".")
newSlice := strings.Split(new, ".") newSlice := strings.Split(new, ".")
@@ -111,13 +145,69 @@ func downloadUpdate(newVersion string) (bool, error) {
return true, nil return true, nil
} }
func update(win *gtk.Window) { func update(win *gtk.Window, forced bool) {
stat, err := versionDL()
if stat {
res := getVersionFileInfo()
if res != "Error!" {
stat, err = checkForUpdate(res)
if stat || forced {
stat, err = changelogDL()
if stat {
updateWin, _ := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
updateWin.SetTransientFor(win)
updateWin.SetPosition(gtk.WIN_POS_CENTER)
topLvl, _ := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 5)
lbl, _ := gtk.LabelNew("There's a new update! Here's the changelog:")
tagTbl, _ := gtk.TextTagTableNew()
buf, _ := gtk.TextBufferNew(tagTbl)
tv, _ := gtk.TextViewNewWithBuffer(buf)
tv.SetEditable(false)
buf.SetText(getChangelog())
butBox, _ := gtk.BoxNew(gtk.ORIENTATION_HORIZONTAL, 5)
upBut, _ := gtk.ButtonNewWithLabel("Update")
upBut.Connect("clicked", func() {
updateWin.Close()
actuallyUpdate(win, forced)
})
cnlBut, _ := gtk.ButtonNewWithLabel("Cancel")
cnlBut.Connect("clicked", func() {
updateWin.Close()
})
butBox.Add(upBut)
butBox.Add(cnlBut)
topLvl.Add(lbl)
topLvl.Add(tv)
topLvl.Add(butBox)
topLvl.SetMarginBottom(10)
topLvl.SetMarginEnd(10)
topLvl.SetMarginStart(10)
topLvl.SetMarginTop(10)
updateWin.Add(topLvl)
updateWin.ShowAll()
updateWin.Show()
} else {
fmt.Println(err)
}
} else {
fmt.Println(err)
}
} else {
fmt.Println("Failed Version File Info")
}
} else {
fmt.Println(err)
}
}
func actuallyUpdate(win *gtk.Window, forced bool) {
updateWin, _ := gtk.WindowNew(gtk.WINDOW_POPUP) updateWin, _ := gtk.WindowNew(gtk.WINDOW_POPUP)
updateWin.SetTransientFor(win) updateWin.SetTransientFor(win)
updateWin.SetSizeRequest(150, 50)
topLvl, _ := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 5) topLvl, _ := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 5)
spin, _ := gtk.SpinnerNew() spin, _ := gtk.SpinnerNew()
spin.Start() spin.Start()
lbl, _ := gtk.LabelNew("Checking for updates") lbl, _ := gtk.LabelNew("Updating")
topLvl.Add(spin) topLvl.Add(spin)
topLvl.Add(lbl) topLvl.Add(lbl)
topLvl.SetMarginBottom(10) topLvl.SetMarginBottom(10)
@@ -135,8 +225,7 @@ func update(win *gtk.Window) {
res := getVersionFileInfo() res := getVersionFileInfo()
if res != "Error!" { if res != "Error!" {
stat, err = checkForUpdate(res) stat, err = checkForUpdate(res)
if stat { if stat || forced {
lbl.SetText("Updating!")
downloadUpdate(res) downloadUpdate(res)
win.Close() win.Close()
cmd := exec.Command("./LinuxPA") cmd := exec.Command("./LinuxPA")