Edit and some bugs
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -151,3 +153,129 @@ func (a *app) launchSub(sub int) {
|
|||||||
cmd.Start()
|
cmd.Start()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *app) edit(parent *gtk.Window, reload func()) {
|
||||||
|
tmp := *a
|
||||||
|
parent.SetSensitive(false)
|
||||||
|
win, _ := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
|
||||||
|
win.Connect("destroy", func() {
|
||||||
|
master = make(map[string][]app)
|
||||||
|
linmaster = make(map[string][]app)
|
||||||
|
cats = make([]string, 0)
|
||||||
|
lin = make([]string, 0)
|
||||||
|
setup()
|
||||||
|
reload()
|
||||||
|
parent.SetSensitive(true)
|
||||||
|
})
|
||||||
|
win.SetDefaultSize(400, 135)
|
||||||
|
topLvl, _ := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 5)
|
||||||
|
topLvl.SetMarginStart(10)
|
||||||
|
topLvl.SetMarginEnd(10)
|
||||||
|
topLvl.SetMarginTop(10)
|
||||||
|
topLvl.SetMarginBottom(10)
|
||||||
|
top, _ := gtk.BoxNew(gtk.ORIENTATION_HORIZONTAL, 5)
|
||||||
|
img, _ := gtk.ImageNewFromPixbuf(a.icon)
|
||||||
|
imgBut, _ := gtk.ButtonNew()
|
||||||
|
imgBut.SetImage(img)
|
||||||
|
imgBut.SetSizeRequest(100, 100)
|
||||||
|
imgBut.Connect("clicked", func() {
|
||||||
|
fil, _ := gtk.FileChooserDialogNewWith2Buttons("Select Icon", win, gtk.FILE_CHOOSER_ACTION_OPEN, "Cancel", gtk.RESPONSE_CANCEL, "Open", gtk.RESPONSE_ACCEPT)
|
||||||
|
filter, _ := gtk.FileFilterNew()
|
||||||
|
filter.AddPixbufFormats()
|
||||||
|
filter.SetName("Supported Pictures")
|
||||||
|
fil.AddFilter(filter)
|
||||||
|
resp := fil.Run()
|
||||||
|
if resp == int(gtk.RESPONSE_ACCEPT) {
|
||||||
|
filename := fil.GetFilename()
|
||||||
|
_, err := os.Open(filename)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
pix, _ := gdk.PixbufNewFromFileAtSize(filename, 32, 32)
|
||||||
|
tmp.icon = pix
|
||||||
|
img.SetFromPixbuf(pix)
|
||||||
|
fil.Close()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
topRt, _ := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 5)
|
||||||
|
nameLbl, _ := gtk.LabelNew("Name:")
|
||||||
|
nameLbl.SetHAlign(gtk.ALIGN_START)
|
||||||
|
txtgtbl, _ := gtk.TextTagTableNew()
|
||||||
|
txtBuf, _ := gtk.TextBufferNew(txtgtbl)
|
||||||
|
nameTxt, _ := gtk.TextViewNewWithBuffer(txtBuf)
|
||||||
|
nameTxt.SetAcceptsTab(false)
|
||||||
|
nameTxt.SetWrapMode(gtk.WRAP_CHAR)
|
||||||
|
nameTxt.SetPixelsBelowLines(5)
|
||||||
|
nameTxt.SetHExpand(true)
|
||||||
|
nameTxt.SetVExpand(false)
|
||||||
|
nameTxt.SetBorderWindowSize(gtk.TEXT_WINDOW_BOTTOM, 5)
|
||||||
|
txtBuf.SetText(tmp.name)
|
||||||
|
vScrollName, _ := gtk.AdjustmentNew(0, 0, 0, 0, 0, 0)
|
||||||
|
hScrollName, _ := gtk.AdjustmentNew(0, 0, 0, 0, 0, 0)
|
||||||
|
nameScr, _ := gtk.ScrolledWindowNew(hScrollName, vScrollName)
|
||||||
|
nameScr.SetPolicy(gtk.POLICY_AUTOMATIC, gtk.POLICY_NEVER)
|
||||||
|
nameScr.SetSizeRequest(300, 25)
|
||||||
|
nameScr.SetVExpand(false)
|
||||||
|
nameScr.Add(nameTxt)
|
||||||
|
catLbl, _ := gtk.LabelNew("Category:")
|
||||||
|
catLbl.SetHAlign(gtk.ALIGN_START)
|
||||||
|
catTbl, _ := gtk.TextTagTableNew()
|
||||||
|
catBuf, _ := gtk.TextBufferNew(catTbl)
|
||||||
|
catTxt, _ := gtk.TextViewNewWithBuffer(catBuf)
|
||||||
|
catBuf.SetText(tmp.cat)
|
||||||
|
catTxt.SetAcceptsTab(false)
|
||||||
|
catTxt.SetWrapMode(gtk.WRAP_CHAR)
|
||||||
|
catTxt.SetPixelsBelowLines(5)
|
||||||
|
catTxt.SetHExpand(true)
|
||||||
|
catTxt.SetVExpand(false)
|
||||||
|
catTxt.SetBorderWindowSize(gtk.TEXT_WINDOW_BOTTOM, 5)
|
||||||
|
vScrollCat, _ := gtk.AdjustmentNew(0, 0, 0, 0, 0, 0)
|
||||||
|
hScrollCat, _ := gtk.AdjustmentNew(0, 0, 0, 0, 0, 0)
|
||||||
|
catScr, _ := gtk.ScrolledWindowNew(hScrollCat, vScrollCat)
|
||||||
|
catScr.SetPolicy(gtk.POLICY_AUTOMATIC, gtk.POLICY_NEVER)
|
||||||
|
catScr.SetSizeRequest(300, 25)
|
||||||
|
catScr.SetVExpand(false)
|
||||||
|
catScr.Add(catTxt)
|
||||||
|
topRt.Add(nameLbl)
|
||||||
|
topRt.Add(nameScr)
|
||||||
|
topRt.Add(catLbl)
|
||||||
|
topRt.Add(catScr)
|
||||||
|
top.Add(imgBut)
|
||||||
|
top.Add(topRt)
|
||||||
|
bot, _ := gtk.BoxNew(gtk.ORIENTATION_HORIZONTAL, 5)
|
||||||
|
sv, _ := gtk.ButtonNewWithLabel("Save")
|
||||||
|
sv.Connect("clicked", func() {
|
||||||
|
tmp.name, _ = txtBuf.GetText(txtBuf.GetStartIter(), txtBuf.GetEndIter(), true)
|
||||||
|
tmp.cat, _ = catBuf.GetText(catBuf.GetStartIter(), catBuf.GetEndIter(), true)
|
||||||
|
tmp.makeIni()
|
||||||
|
os.Remove(a.dir + "/appicon.png")
|
||||||
|
tmp.icon.SavePNG(a.dir+"/appicon.png", 0)
|
||||||
|
win.Close()
|
||||||
|
})
|
||||||
|
cnl, _ := gtk.ButtonNewWithLabel("Cancel")
|
||||||
|
cnl.Connect("clicked", func() {
|
||||||
|
win.Close()
|
||||||
|
})
|
||||||
|
bot.PackEnd(sv, false, false, 0)
|
||||||
|
bot.PackEnd(cnl, false, false, 0)
|
||||||
|
topLvl.Add(top)
|
||||||
|
topLvl.Add(bot)
|
||||||
|
win.Add(topLvl)
|
||||||
|
win.ShowAll()
|
||||||
|
win.Show()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *app) makeIni() {
|
||||||
|
os.Remove(a.dir + "/appinfo.ini")
|
||||||
|
fil, err := os.Create(a.dir + "/appinfo.ini")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ini := "[General]\n"
|
||||||
|
ini += "Category=" + a.cat + "\n"
|
||||||
|
ini += "Name=" + a.name + "\n"
|
||||||
|
wrt := bufio.NewWriter(fil)
|
||||||
|
wrt.WriteString(ini)
|
||||||
|
wrt.Flush()
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,13 +4,12 @@ import (
|
|||||||
"encoding/gob"
|
"encoding/gob"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
|
||||||
|
|
||||||
"github.com/gotk3/gotk3/gtk"
|
"github.com/gotk3/gotk3/gtk"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
version = "2.0.1.0"
|
version = "2.1.0.0"
|
||||||
defIni = ""
|
defIni = ""
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -25,7 +24,6 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
runtime.GOMAXPROCS(4)
|
|
||||||
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)
|
||||||
|
|||||||
@@ -148,7 +148,9 @@ func getName(ini *os.File) string {
|
|||||||
|
|
||||||
func getIcon(fold string) *gdk.Pixbuf {
|
func getIcon(fold string) *gdk.Pixbuf {
|
||||||
var pic string
|
var pic string
|
||||||
if folder, err := os.Open(fold + "/App/AppInfo"); err == nil {
|
if _, err := os.Open(fold + "/appicon.png"); err == nil {
|
||||||
|
pic = fold + "/appicon.png"
|
||||||
|
} else if folder, err := os.Open(fold + "/App/AppInfo"); err == nil {
|
||||||
fis, _ := folder.Readdir(-1)
|
fis, _ := folder.Readdir(-1)
|
||||||
var pics []string
|
var pics []string
|
||||||
for _, v := range fis {
|
for _, v := range fis {
|
||||||
@@ -166,8 +168,6 @@ func getIcon(fold string) *gdk.Pixbuf {
|
|||||||
}
|
}
|
||||||
pic = fold + "/App/AppInfo/" + pics[ind]
|
pic = fold + "/App/AppInfo/" + pics[ind]
|
||||||
}
|
}
|
||||||
} else if _, err := os.Open(fold + "/appicon.png"); err == nil {
|
|
||||||
pic = fold + "/appicon.png"
|
|
||||||
} else {
|
} else {
|
||||||
img, _ := gtk.ImageNewFromIconName("application-x-executable", gtk.ICON_SIZE_BUTTON)
|
img, _ := gtk.ImageNewFromIconName("application-x-executable", gtk.ICON_SIZE_BUTTON)
|
||||||
buf := img.GetPixbuf()
|
buf := img.GetPixbuf()
|
||||||
@@ -179,6 +179,9 @@ func getIcon(fold string) *gdk.Pixbuf {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func findInfo(fold string) *os.File {
|
func findInfo(fold string) *os.File {
|
||||||
|
if fi, err := os.Open(fold + "/appinfo.ini"); err == nil {
|
||||||
|
return fi
|
||||||
|
}
|
||||||
tmp, err := os.Open(fold + "/App/AppInfo")
|
tmp, err := os.Open(fold + "/App/AppInfo")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
fis, _ := tmp.Readdirnames(-1)
|
fis, _ := tmp.Readdirnames(-1)
|
||||||
@@ -189,8 +192,5 @@ func findInfo(fold string) *os.File {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if fi, err := os.Open(fold + "/appinfo.ini"); err == nil {
|
|
||||||
return fi
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/CalebQ42/LinuxPA/appimg"
|
"github.com/CalebQ42/LinuxPA/appimg"
|
||||||
"github.com/gotk3/gotk3/glib"
|
"github.com/gotk3/gotk3/glib"
|
||||||
"github.com/gotk3/gotk3/gtk"
|
"github.com/gotk3/gotk3/gtk"
|
||||||
@@ -55,6 +53,10 @@ func ui(win *gtk.Window) {
|
|||||||
lrBox.Add(catScrl)
|
lrBox.Add(catScrl)
|
||||||
lrBox.Add(appScrl)
|
lrBox.Add(appScrl)
|
||||||
botBox, _ := gtk.BoxNew(gtk.ORIENTATION_HORIZONTAL, 2)
|
botBox, _ := gtk.BoxNew(gtk.ORIENTATION_HORIZONTAL, 2)
|
||||||
|
botBox.SetMarginStart(10)
|
||||||
|
botBox.SetMarginEnd(10)
|
||||||
|
botBox.SetMarginTop(10)
|
||||||
|
botBox.SetMarginBottom(10)
|
||||||
wineCheck, _ := gtk.CheckButtonNewWithLabel("Show Windows apps (Wine)")
|
wineCheck, _ := gtk.CheckButtonNewWithLabel("Show Windows apps (Wine)")
|
||||||
if !wineAvail {
|
if !wineAvail {
|
||||||
wineCheck.SetSensitive(false)
|
wineCheck.SetSensitive(false)
|
||||||
@@ -63,8 +65,8 @@ func ui(win *gtk.Window) {
|
|||||||
wineCheck.SetActive(wine)
|
wineCheck.SetActive(wine)
|
||||||
wineCheck.Connect("toggled", func() {
|
wineCheck.Connect("toggled", func() {
|
||||||
wine = wineCheck.GetActive()
|
wine = wineCheck.GetActive()
|
||||||
|
store.Clear()
|
||||||
for i := range ls {
|
for i := range ls {
|
||||||
fmt.Println(len(ls) - i)
|
|
||||||
catList.Remove(catList.GetRowAtIndex(len(ls) - i - 1))
|
catList.Remove(catList.GetRowAtIndex(len(ls) - i - 1))
|
||||||
}
|
}
|
||||||
ls = getCatRows()
|
ls = getCatRows()
|
||||||
@@ -73,7 +75,44 @@ func ui(win *gtk.Window) {
|
|||||||
}
|
}
|
||||||
catList.ShowAll()
|
catList.ShowAll()
|
||||||
})
|
})
|
||||||
|
edit, _ := gtk.ButtonNewWithLabel("Edit App..")
|
||||||
|
edit.Connect("clicked", func() {
|
||||||
|
selec, _ := appsList.GetSelection()
|
||||||
|
_, it, ok := selec.GetSelected()
|
||||||
|
if ok {
|
||||||
|
pth, _ := store.GetPath(it)
|
||||||
|
ind := pth.GetIndices()
|
||||||
|
if wine {
|
||||||
|
appLnch := master[cats[catList.GetSelectedRow().GetIndex()]][ind[0]]
|
||||||
|
appLnch.edit(win, func() {
|
||||||
|
store.Clear()
|
||||||
|
for i := range ls {
|
||||||
|
catList.Remove(catList.GetRowAtIndex(len(ls) - i - 1))
|
||||||
|
}
|
||||||
|
ls = getCatRows()
|
||||||
|
for i, v := range ls {
|
||||||
|
catList.Insert(v, i)
|
||||||
|
}
|
||||||
|
catList.ShowAll()
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
appLnch := linmaster[lin[catList.GetSelectedRow().GetIndex()]][ind[0]]
|
||||||
|
appLnch.edit(win, func() {
|
||||||
|
store.Clear()
|
||||||
|
for i := range ls {
|
||||||
|
catList.Remove(catList.GetRowAtIndex(len(ls) - i - 1))
|
||||||
|
}
|
||||||
|
ls = getCatRows()
|
||||||
|
for i, v := range ls {
|
||||||
|
catList.Insert(v, i)
|
||||||
|
}
|
||||||
|
catList.ShowAll()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
botBox.Add(wineCheck)
|
botBox.Add(wineCheck)
|
||||||
|
botBox.PackEnd(edit, false, false, 0)
|
||||||
topLvl.Add(lrBox)
|
topLvl.Add(lrBox)
|
||||||
topLvl.PackEnd(botBox, false, true, 0)
|
topLvl.PackEnd(botBox, false, true, 0)
|
||||||
win.Add(topLvl)
|
win.Add(topLvl)
|
||||||
@@ -105,30 +144,39 @@ func ui(win *gtk.Window) {
|
|||||||
ind := pth.GetIndices()
|
ind := pth.GetIndices()
|
||||||
if len(ind) == 1 {
|
if len(ind) == 1 {
|
||||||
if wine {
|
if wine {
|
||||||
app := master[cats[catList.GetSelectedRow().GetIndex()]][ind[0]]
|
appLnch := master[cats[catList.GetSelectedRow().GetIndex()]][ind[0]]
|
||||||
app.launch()
|
appLnch.launch()
|
||||||
} else {
|
} else {
|
||||||
app := linmaster[lin[catList.GetSelectedRow().GetIndex()]][ind[0]]
|
appLnch := linmaster[lin[catList.GetSelectedRow().GetIndex()]][ind[0]]
|
||||||
app.launch()
|
appLnch.launch()
|
||||||
}
|
}
|
||||||
} else if len(ind) == 2 {
|
} else if len(ind) == 2 {
|
||||||
if wine {
|
if wine {
|
||||||
app := master[cats[catList.GetSelectedRow().GetIndex()]][ind[0]]
|
appLnch := master[cats[catList.GetSelectedRow().GetIndex()]][ind[0]]
|
||||||
app.launchSub(ind[1])
|
appLnch.launchSub(ind[1])
|
||||||
} else {
|
} else {
|
||||||
app := linmaster[lin[catList.GetSelectedRow().GetIndex()]][ind[0]]
|
appLnch := linmaster[lin[catList.GetSelectedRow().GetIndex()]][ind[0]]
|
||||||
app.launchSub(ind[1])
|
appLnch.launchSub(ind[1])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
dnl.Connect("clicked", func() {
|
dnl.Connect("clicked", func() {
|
||||||
appimg.ShowUI(func() {
|
appimg.ShowUI(func() {
|
||||||
|
master = make(map[string][]app)
|
||||||
|
linmaster = make(map[string][]app)
|
||||||
|
cats = make([]string, 0)
|
||||||
|
lin = make([]string, 0)
|
||||||
|
setup()
|
||||||
store.Clear()
|
store.Clear()
|
||||||
ls = getCatRows()
|
for i := range ls {
|
||||||
for _, v := range ls {
|
catList.Remove(catList.GetRowAtIndex(len(ls) - i - 1))
|
||||||
catList.Add(v)
|
|
||||||
}
|
}
|
||||||
|
ls = getCatRows()
|
||||||
|
for i, v := range ls {
|
||||||
|
catList.Insert(v, i)
|
||||||
|
}
|
||||||
|
catList.ShowAll()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user