この章では、各種ダイアログを説明します。
package main
import "github.com/dontpanic92/wxGo/wx"
func main() {
app := wx.NewApp()
frame := wx.NewFrame(wx.NullWindow, -1, "Message Box")
vBox := wx.NewBoxSizer(wx.VERTICAL)
button := wx.NewButton(frame, wx.ID_INFO, "Info")
vBox . Add(button, 1, wx.ALIGN_CENTER)
frame . SetSizer(vBox)
wx.Bind(frame, wx.EVT_BUTTON, func(e wx.Event) {
wx.MessageBox("This is a message box.", "Info")
//wx.MessageBox("This is a message box.", "Info", wx.OK|wx.ICON_INFORMATION)
}, wx.ID_INFO)
frame . Show()
app . MainLoop()
}
ターミナルで、messagebox.go を保存したディレクトリに移動して、次のコードを実行してください。
go run messagebox.go
実行結果が表示されるまで、少し時間がかかります。
package main
import "github.com/dontpanic92/wxGo/wx"
func main() {
app := wx.NewApp()
frame := wx.NewFrame(wx.NullWindow, -1, "Predefined Dialog")
grid := wx.NewGridSizer(2, 2, 0, 0)
vBox := wx.NewBoxSizer(wx.VERTICAL)
vBox . Add(grid, 1, wx.EXPAND)
frame . SetSizer(vBox)
button1 := wx.NewButton(frame, 101, "Info")
button2 := wx.NewButton(frame, 102, "Error")
button3 := wx.NewButton(frame, 103, "Question")
button4 := wx.NewButton(frame, 104, "Alert")
grid . Add(button1, 1, wx.ALIGN_CENTER)
grid . Add(button2, 1, wx.ALIGN_CENTER)
grid . Add(button3, 1, wx.ALIGN_CENTER)
grid . Add(button4, 1, wx.ALIGN_CENTER)
wx.Bind(frame, wx.EVT_BUTTON, func(e wx.Event) {
dial := wx.NewMessageDialog(wx.NullWindow, "Download completed", "Info", wx.OK)
dial.ShowModal()
}, 101)
wx.Bind(frame, wx.EVT_BUTTON, func(e wx.Event) {
dial := wx.NewMessageDialog(wx.NullWindow, "Error loading file", "Error", wx.OK|wx.ICON_ERROR)
dial.ShowModal()
}, 102)
wx.Bind(frame, wx.EVT_BUTTON, func(e wx.Event) {
dial := wx.NewMessageDialog(wx.NullWindow, "Are you sure to quit?", "Question", wx.YES_NO|wx.NO_DEFAULT|wx.ICON_QUESTION)
dial.ShowModal()
}, 103)
wx.Bind(frame, wx.EVT_BUTTON, func(e wx.Event) {
dial := wx.NewMessageDialog(wx.NullWindow, "Unallowed operation", "Exclamation", wx.OK|wx.ICON_EXCLAMATION)
dial.ShowModal()
}, 104)
frame . Show()
app . MainLoop()
}
ターミナルで、predefineddialog.go を保存したディレクトリに移動して、次のコードで実行してください。
go run predefineddialog.go
実行結果が表示されるまで、少し時間がかかります。
package main
import "github.com/dontpanic92/wxGo/wx"
func main() {
app := wx.NewApp()
frame := wx.NewFrame(wx.NullWindow, -1, "File Dialog")
hBox := wx.NewBoxSizer(wx.HORIZONTAL)
vBox := wx.NewBoxSizer(wx.VERTICAL)
label := wx.NewStaticText(frame, -1, "未選択")
hBox . Add(label, 1, wx.ALIGN_CENTER)
vBox . Add(hBox, 1, wx.LEFT, 20)
frame . SetSizer(vBox)
menuBar := wx.NewMenuBar()
fileMenu:= wx.NewMenu()
fileMenu. Append(wx.ID_OPEN)
fileMenu. AppendSeparator()
fileMenu. Append(wx.ID_EXIT)
menuBar . Append(fileMenu, "&File")
frame . SetMenuBar(menuBar)
wx.Bind(frame, wx.EVT_MENU, func(e wx.Event) {
fd := wx.NewFileDialog(wx.NullWindow, "Select file", "", "", "*", wx.FD_OPEN, wx.DefaultPosition, wx.DefaultSize)
if fd.ShowModal() != wx.ID_CANCEL {
label.SetLabel(fd.GetFilename())
} else {
label.SetLabel("未選択")
}
}, wx.ID_OPEN)
wx.Bind(frame, wx.EVT_MENU, func(e wx.Event) {
frame.Close()
}, wx.ID_EXIT)
frame . Show()
app . MainLoop()
}
wx.FD_OPEN を wx.FD_SAVE に変えると保存ダイアログに変わります。
ターミナルで、filedialog.go を保存したディレクトリに移動して、次のコードで実行してください。
go run filedialog.go
実行結果が表示されるまで、少し時間がかかります。
package main
import "github.com/dontpanic92/wxGo/wx"
func main() {
app := wx.NewApp()
frame := wx.NewFrame(wx.NullWindow, -1, "File Dialog")
hBox := wx.NewBoxSizer(wx.HORIZONTAL)
vBox := wx.NewBoxSizer(wx.VERTICAL)
label := wx.NewStaticText(frame, -1, "Hello wxGo!")
font := label.GetFont()
hBox . Add(label, 1, wx.ALIGN_CENTER)
vBox . Add(hBox, 1, wx.LEFT, 20)
frame . SetSizer(vBox)
menuBar := wx.NewMenuBar()
fileMenu:= wx.NewMenu()
fileMenu. Append(wx.ID_EXIT)
format := wx.NewMenu()
format . Append(101, "Font...")
menuBar . Append(fileMenu, "&File")
menuBar . Append(format, "&Format")
frame . SetMenuBar(menuBar)
wx.Bind(frame, wx.EVT_MENU, func(e wx.Event) {
fd := wx.NewFontDialog(wx.NullWindow)
if fd.ShowModal() != wx.ID_CANCEL {
label.SetFont(fd.GetFontData().GetChosenFont())
} else {
label.SetFont(font)
}
}, 101)
wx.Bind(frame, wx.EVT_MENU, func(e wx.Event) {
frame.Close()
}, wx.ID_EXIT)
frame . Show()
app . MainLoop()
}
ターミナルで、fontdialog.go を保存したディレクトリに移動して、次のコードで実行してください。
go run fontdialog.go
実行結果が表示されるまで、少し時間がかかります。
package main
import "github.com/dontpanic92/wxGo/wx"
func main() {
app := wx.NewApp()
frame := wx.NewFrame(wx.NullWindow, -1, "Color Dialog")
panel := wx.NewPanel(frame, -1)
panel . SetBackgroundColour(wx.NewColour("green"))
vBox := wx.NewBoxSizer(wx.VERTICAL)
vBox . Add(panel, 1, wx.ALL|wx.EXPAND, 10)
frame . SetSizer(vBox)
menuBar := wx.NewMenuBar()
fileMenu:= wx.NewMenu()
fileMenu. Append(wx.ID_EXIT)
format := wx.NewMenu()
format . Append(101, "Color...")
menuBar . Append(fileMenu, "&File")
menuBar . Append(format, "&Format")
frame . SetMenuBar(menuBar)
wx.Bind(frame, wx.EVT_MENU, func(e wx.Event) {
fd := wx.NewColourDialog(wx.NullWindow)
if fd.ShowModal() == wx.ID_OK {
panel.SetBackgroundColour(fd.GetColourData().GetColour())
panel.Refresh()
} else {
panel.SetBackgroundColour(wx.NewColour("green"))
panel.Refresh()
}
}, 101)
wx.Bind(frame, wx.EVT_MENU, func(e wx.Event) {
frame.Close()
}, wx.ID_EXIT)
frame . Show()
app . MainLoop()
}
ターミナルで、colordialog.go を保存したディレクトリに移動して、次のコードで実行してください。
go run colordialog.go