forked from shw700/oztool
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgui_helper.go
More file actions
146 lines (103 loc) · 2.96 KB
/
gui_helper.go
File metadata and controls
146 lines (103 loc) · 2.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package main
import (
"strings"
"log"
"github.com/gotk3/gotk3/gtk"
)
func pickJSONFile(save bool) string {
title := "Save data to profile"
action := gtk.FILE_CHOOSER_ACTION_SAVE
btext := "Save"
retval := ""
if !save {
title = "Load data from profile"
action = gtk.FILE_CHOOSER_ACTION_OPEN
btext = "Open"
}
dialog, err := gtk.FileChooserDialogNewWith1Button(title, mainWin, action, btext, gtk.RESPONSE_OK)
if err != nil {
log.Fatal("Unable to create file choice dialog:", err)
}
ff, err := gtk.FileFilterNew()
if err != nil {
log.Fatal("Unable to create profile file filter:", err)
}
dialog.SetCurrentFolder("/var/lib/oz/cells.d")
ff.SetName("Oz profiles (*.json")
ff.AddPattern("*.json")
dialog.AddFilter(ff)
choice := dialog.Run()
if choice == int(gtk.RESPONSE_OK) {
retval = dialog.GetFilename()
}
dialog.Destroy()
return retval
}
func fillNotebookPages(notebook *gtk.Notebook) {
for n := 0; n < len(allTabsOrdered); n++ {
box := get_vbox()
notebook.AppendPage(box, get_label_tt(allTabInfo[allTabsOrdered[n]].TabName, allTabInfo[allTabsOrdered[n]].Tooltip))
notebookPages[allTabsOrdered[n]] = box
}
}
func createNotebook() *gtk.Notebook {
notebook, err := gtk.NotebookNew()
if err != nil {
log.Fatal("Unable to create new notebook:", err)
}
fillNotebookPages(notebook)
return notebook
}
func editStrArray(input []string, fvalidate int) []string {
dialog := gtk.MessageDialogNew(mainWin, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK_CANCEL, "Edit strings list:")
tv, err := gtk.TextViewNew()
if err != nil {
log.Fatal("Unable to create TextView:", err)
}
tvbuf, err := tv.GetBuffer()
if err != nil {
log.Fatal("Unable to get buffer:", err)
}
buftext := strings.Join(input, "\n")
tvbuf.SetText(buftext)
tv.SetEditable(true)
tv.SetWrapMode(gtk.WRAP_WORD)
scrollbox := get_scrollbox()
scrollbox.Add(tv)
scrollbox.SetSizeRequest(500, 200)
box, err := dialog.GetContentArea()
if err != nil {
log.Fatal("Unable to get content area of dialog:", err)
}
box.Add(scrollbox)
dialog.ShowAll()
choice := dialog.Run()
bstr, err := tvbuf.GetText(tvbuf.GetStartIter(), tvbuf.GetEndIter(), false)
if err != nil {
log.Fatal("Unable to get buffer from text editor:", err)
}
dialog.Destroy()
if choice != int(gtk.RESPONSE_OK) {
return input
}
stra := strings.Split(bstr, "\n")
if len(stra) == 1 && stra[0] == "" {
return []string{}
}
return stra
}
func addRow(listStore *gtk.ListStore, name, data, path string) {
iter := listStore.Append()
colVals := make([]interface{}, 3)
colVals[0] = path
colVals[1] = data
colVals[2] = name
colNums := make([]int, 3)
for n := 0; n < 3; n++ {
colNums[n] = n
}
err := listStore.Set(iter, colNums, colVals)
if err != nil {
log.Fatal("Unable to add row:", err)
}
}