From d7410bb88f0d40ef334eed7b8a4e6ed05ff497c5 Mon Sep 17 00:00:00 2001 From: Belac Darkstorm Date: Thu, 6 Apr 2017 09:26:21 -0500 Subject: [PATCH] Got things back to normal with a couple bug fixes --- app.go | 4 +- ui.go | 132 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 ui.go diff --git a/app.go b/app.go index 0d130a4..18d6759 100644 --- a/app.go +++ b/app.go @@ -20,8 +20,8 @@ type app struct { ini *os.File } -func (a *app) getTreeIter(store *gtk.TreeStore, parent *gtk.TreeIter) *gtk.TreeIter { - it := store.Append(parent) +func (a *app) getTreeIter(store *gtk.TreeStore) *gtk.TreeIter { + it := store.Append(nil) store.SetValue(it, 0, a.icon) store.SetValue(it, 1, a.name) if len(a.ex) > 1 { diff --git a/ui.go b/ui.go new file mode 100644 index 0000000..276af52 --- /dev/null +++ b/ui.go @@ -0,0 +1,132 @@ +package main + +import ( + "github.com/gotk3/gotk3/glib" + "github.com/gotk3/gotk3/gtk" +) + +func ui(win *gtk.Window) { + ls := getCatRows() + var treeApps []*gtk.TreeIter + header, _ := gtk.HeaderBarNew() + header.SetShowCloseButton(true) + header.SetTitle("LinuxPA") + header.SetSubtitle("PortableApps.com type launcher") + settings, _ := gtk.ButtonNewFromIconName("applications-system", gtk.ICON_SIZE_SMALL_TOOLBAR) + settings.Connect("clicked", func() { + settingsUI() + }) + settings.SetTooltipText("Settings (Coming Soon!)") + header.PackStart(settings) + win.SetTitlebar(header) + topLvl, _ := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 0) + lrBox, _ := gtk.BoxNew(gtk.ORIENTATION_HORIZONTAL, 5) + catList, _ := gtk.ListBoxNew() + catList.SetActivateOnSingleClick(true) + store, _ := gtk.TreeStoreNew(glib.TYPE_OBJECT, glib.TYPE_STRING) + appsList, _ := gtk.TreeViewNewWithModel(store) + render, _ := gtk.CellRendererPixbufNew() + pixColumn, _ := gtk.TreeViewColumnNewWithAttribute("", render, "pixbuf", 0) + txtRender, _ := gtk.CellRendererTextNew() + txtColumn, _ := gtk.TreeViewColumnNewWithAttribute("", txtRender, "text", 1) + appsList.AppendColumn(pixColumn) + appsList.AppendColumn(txtColumn) + appsList.SetHeadersVisible(false) + catList.SetHExpand(true) + catList.SetVExpand(true) + appsList.SetHExpand(true) + appsList.SetVExpand(true) + vScrollCat, _ := gtk.AdjustmentNew(0, 0, 0, 0, 0, 0) + hScrollCat, _ := gtk.AdjustmentNew(0, 0, 0, 0, 0, 0) + vScrollApp, _ := gtk.AdjustmentNew(0, 0, 0, 0, 0, 0) + hScrollApp, _ := gtk.AdjustmentNew(0, 0, 0, 0, 0, 0) + catScrl, _ := gtk.ScrolledWindowNew(hScrollCat, vScrollCat) + catScrl.Add(catList) + catScrl.SetSizeRequest(170, 500) + appScrl, _ := gtk.ScrolledWindowNew(hScrollApp, vScrollApp) + appScrl.Add(appsList) + appScrl.SetSizeRequest(300, 500) + lrBox.Add(catScrl) + lrBox.Add(appScrl) + botBox, _ := gtk.BoxNew(gtk.ORIENTATION_HORIZONTAL, 2) + wineCheck, _ := gtk.CheckButtonNewWithLabel("Show Windows apps (Wine)") + if !wineAvail { + wineCheck.SetSensitive(false) + wineCheck.SetTooltipText("Download wine to run windows apps") + } + wineCheck.Connect("toggled", func() { + wine = wineCheck.GetActive() + for i := range ls { + catList.Remove(catList.GetRowAtIndex(i)) + } + ls = getCatRows() + for i, v := range ls { + catList.Insert(v, i) + } + catList.ShowAll() + }) + botBox.Add(wineCheck) + topLvl.Add(lrBox) + topLvl.PackEnd(botBox, false, true, 0) + win.Add(topLvl) + for i, v := range ls { + catList.Insert(v, i) + } + catList.Connect("row-selected", func() { + store.Clear() + if catList.GetSelectedRow().GetIndex() >= 0 { + treeApps = make([]*gtk.TreeIter, 0) + if wine { + apps := master[cats[catList.GetSelectedRow().GetIndex()]] + for _, v := range apps { + treeApps = append(treeApps, v.getTreeIter(store)) + } + } else { + apps := linmaster[lin[catList.GetSelectedRow().GetIndex()]] + for _, v := range apps { + treeApps = append(treeApps, v.getTreeIter(store)) + } + } + } + }) + appsList.Connect("row-activated", func() { + selec, _ := appsList.GetSelection() + _, it, ok := selec.GetSelected() + if ok { + pth, _ := store.GetPath(it) + ind := pth.GetIndices() + if len(ind) == 1 { + if wine { + app := master[cats[catList.GetSelectedRow().GetIndex()]][ind[0]] + app.launch() + } else { + app := linmaster[lin[catList.GetSelectedRow().GetIndex()]][ind[0]] + app.launch() + } + } else if len(ind) == 2 { + if wine { + app := master[cats[catList.GetSelectedRow().GetIndex()]][ind[0]] + app.launchSub(ind[1]) + } else { + app := linmaster[lin[catList.GetSelectedRow().GetIndex()]][ind[0]] + app.launchSub(ind[1]) + } + } + } + }) +} + +func getCatRows() (out []*gtk.Label) { + if wine { + for _, v := range cats { + txt, _ := gtk.LabelNew(v) + out = append(out, txt) + } + } else { + for _, v := range lin { + txt, _ := gtk.LabelNew(v) + out = append(out, txt) + } + } + return +}