mirror of
https://github.com/VladimirMarkelov/clui.git
synced 2025-04-26 13:49:01 +08:00
100 lines
2.3 KiB
Go
100 lines
2.3 KiB
Go
package main
|
|
|
|
import (
|
|
ui "github.com/VladimirMarkelov/clui"
|
|
)
|
|
|
|
func createView() {
|
|
view := ui.AddWindow(0, 0, 30, 7, "File select")
|
|
view.SetPack(ui.Vertical)
|
|
view.SetGaps(0, 1)
|
|
view.SetPaddings(2, 2)
|
|
|
|
frmPath := ui.CreateFrame(view, 1, 1, ui.BorderNone, ui.Fixed)
|
|
frmPath.SetPack(ui.Horizontal)
|
|
ui.CreateLabel(frmPath, ui.AutoSize, ui.AutoSize, "Initial path", ui.Fixed)
|
|
edPath := ui.CreateEditField(frmPath, 16, "", 1)
|
|
|
|
frmMask := ui.CreateFrame(view, 1, 1, ui.BorderNone, ui.Fixed)
|
|
frmMask.SetPack(ui.Horizontal)
|
|
ui.CreateLabel(frmMask, ui.AutoSize, ui.AutoSize, "File masks", ui.Fixed)
|
|
edMasks := ui.CreateEditField(frmMask, 16, "*", 1)
|
|
|
|
frmOpts := ui.CreateFrame(view, 1, 1, ui.BorderNone, ui.Fixed)
|
|
frmOpts.SetPack(ui.Horizontal)
|
|
cbDir := ui.CreateCheckBox(frmOpts, ui.AutoSize, "Select directory", ui.Fixed)
|
|
cbMust := ui.CreateCheckBox(frmOpts, ui.AutoSize, "Must exists", ui.Fixed)
|
|
ui.CreateFrame(frmOpts, 1, 1, ui.BorderNone, 1)
|
|
|
|
lblSelected := ui.CreateLabel(view, 30, 5, "Selected:", ui.Fixed)
|
|
lblSelected.SetMultiline(true)
|
|
|
|
frmBtns := ui.CreateFrame(view, 1, 1, ui.BorderNone, ui.Fixed)
|
|
frmBtns.SetPack(ui.Horizontal)
|
|
btnSet := ui.CreateButton(frmBtns, ui.AutoSize, 4, "Select", ui.Fixed)
|
|
btnQuit := ui.CreateButton(frmBtns, ui.AutoSize, 4, "Quit", ui.Fixed)
|
|
ui.CreateFrame(frmBtns, 1, 1, ui.BorderNone, 1)
|
|
|
|
ui.ActivateControl(view, edMasks)
|
|
|
|
btnSet.OnClick(func(ev ui.Event) {
|
|
s := "Select "
|
|
if cbDir.State() == 1 {
|
|
s += "directory"
|
|
} else {
|
|
s += "file"
|
|
}
|
|
if cbMust.State() == 1 {
|
|
s += "[X]"
|
|
}
|
|
dlg := ui.CreateFileSelectDialog(
|
|
s,
|
|
edMasks.Title(),
|
|
edPath.Title(),
|
|
cbDir.State() == 1,
|
|
cbMust.State() == 1)
|
|
dlg.OnClose(func() {
|
|
if !dlg.Selected {
|
|
lblSelected.SetTitle("Selected:\nNothing")
|
|
return
|
|
}
|
|
|
|
var lb string
|
|
if dlg.Exists {
|
|
lb = "Selected existing"
|
|
} else {
|
|
lb = "Create new"
|
|
}
|
|
|
|
if cbDir.State() == 0 {
|
|
lb += " file:\n"
|
|
} else {
|
|
lb += " directory:\n"
|
|
}
|
|
|
|
lb += dlg.FilePath
|
|
lblSelected.SetTitle(lb)
|
|
})
|
|
})
|
|
|
|
btnQuit.OnClick(func(ev ui.Event) {
|
|
go ui.Stop()
|
|
})
|
|
}
|
|
|
|
func mainLoop() {
|
|
// Every application must create a single Composer and
|
|
// call its intialize method
|
|
ui.InitLibrary()
|
|
defer ui.DeinitLibrary()
|
|
|
|
createView()
|
|
|
|
// start event processing loop - the main core of the library
|
|
ui.MainLoop()
|
|
}
|
|
|
|
func main() {
|
|
mainLoop()
|
|
}
|