рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЧреЛ рднрд╛рд╖рд╛ рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рдЗрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рдЪрд┐рддреНрд░рдордп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмреАрдЪ рдЕрднреА рднреА рдЬреАрдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ: рдРрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдЙрдирдХреА
рд╕реВрдЪреА рджреВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдХрдИ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬреЛ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ
рд╡реЙрдХ рд╣реИ , рдЬрд┐рд╕рдХрд╛ рдирд╛рдо "рд╡рд┐рдВрдбреЛрдЬ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд┐рдЯ" рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде, рдореИрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди
рдорд╛рди рд▓реАрдЬрд┐рдП рдореИрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдиреЛрдЯрдкреИрдб рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдкрд╛рда рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрд╕ рдкрд╛рда рдХреЛ рд╡рд╛рдкрд╕ рд▓реЛрдб рдХрд░реЗрдВ, рдкрд╛рда рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕реЗ рдирд┐рдХрд╛рд▓реЗрдВред
рд╡реЙрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рд╡реЙрдХ рдХреЗрд╡рд▓ рдЧреЛ рд╕рдВрд╕реНрдХрд░рдг
1.1.x рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдХрджрдо GitHub рд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реИред CMD рдЪрд▓рд╛рдПрдБ рдФрд░ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
go get github.com/lxn/walk
рдЕрдЧрд░ рдЧреЛ рдХрд╕рдо рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ:
go: missing Git command ...
рдЖрдкрдХреЛ
git-scm.com/downloads рдкрд░
рдЬрд╛рдХрд░ Git рдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж рдЗрд╕рдХреА рддреНрд░реБрдЯрд┐ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реБрдИ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ GAT рдХрд╛ рдкрде% PATH% рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред
рдПрдХ рдЦрд╛рд▓реА рдлреЙрд░реНрдо рдмрдирд╛рдПрдВ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде
gopad.go
рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
package main import ( . "github.com/lxn/walk/declarative" ) func main() { MainWindow{ Title: "GoPad",
рдЕрдм рд╣рдорд╛рд░реЗ рд╕реНрд░реЛрдд рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ
build.bat
рдмреИрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдБ:
go build -ldflags="-H windowsgui" pause
рд╣рдо
ldflags
рдХреБрдВрдЬреА рдХреЛ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдХрд░ рд╕рдХреЗ, рд▓реЗрдХрд┐рди рддрдм рдлреЙрд░реНрдо рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рдХрдВрд╕реЛрд▓ рдХреЗ рд╕рд╛рде рдЪрд▓реЗрдЧрд╛ред рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╣реИред рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдореА .exe рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реИред рд╣рдореЗрдВ рдПрдХ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдкреНрд░рдХрдЯред
gopad.exe.manifest
рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓
gopad.exe.manifest
(
gopad.exe.manifest
рдмрдЬрд╛рдп рдкрд░рд┐рдгрд╛рдореА рдмрд╛рдЗрдирд░реА рдХрд╛ рдирд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рдмрдирд╛рдПрдБ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="SomeName" type="win32"/> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/> </dependentAssembly> </dependency> </assembly>
рдкреНрд░рдХрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдмрд╛рдЗрдирд░реА рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧреА!рдЬрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЦрд╛рд▓реА рдлреЙрд░реНрдо рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдкрд░рд┐рдгрд╛рдореА рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЖрд╡рд╢реНрдпрдХ рдмрдЯрди рдФрд░ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝реЗрдВ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝реЗрдВред рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛрдбрд╝реЗрдВ:
import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative" )
рдлрд┐рд░ рдПрдХ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдмрдирд╛рдПрдВ, рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╡реИрд░рд┐рдПрдмрд▓ рдФрд░ рдЗрд╕реЗ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдмрд╛рдБрдзреЗрдВ:
func main() { var edit *walk.TextEdit MainWindow{ Title: "GoPad", MinSize: Size{600, 400}, Layout: VBox{}, Children: []Widget{ TextEdit{AssignTo: &edit}, }, }.Run() }
рдЪрд▓рд╛рдПрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдЬреЛ рдкреВрд░реЗ рдлреЙрд░реНрдо рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИред
рдЙрд╕реА рддрд░рд╣, рд╣рдо MainWindow рдореЗрдВ рдЪрд╛рд░ рдмрдЯрди рд▓рд┐рдЦреЗрдВрдЧреЗ: тАЬрдХреЙрдкреАтАЭ, тАЬрдкреЗрд╕реНрдЯтАЭ, тАЬрд▓реЛрдбтАЭ, тАЬрд╕реЗрд╡тАЭ:
MainWindow{ Title: "GoPad", MinSize: Size{600, 400}, Layout: VBox{}, Children: []Widget{ TextEdit{AssignTo: &edit}, HSplitter{ MinSize: Size{600, 30}, Children: []Widget{ PushButton{ Text: "Copy", }, PushButton{ Text: "Paste", }, PushButton{ Text: "Load", }, PushButton{ Text: "Save", }, }, }, }, }.Run()
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдпрд╣ рдлрд╝реЙрд░реНрдо рдорд┐рд▓рддрд╛ рд╣реИ:

рдЬрдм рд╕рднреА рддрддреНрд╡ рдЙрд╕ рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ, рддреЛ рдереЛрдбрд╝рд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рдмрдлрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдмрдЯрди рдХреНрд▓рд┐рдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд╡рд╢реНрдпрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдЬреЛ рдмрдЯрди рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдмрдЯрди рджрдмрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
PushButton{ Text: "Save", OnClicked: func() {
рд╣рдо рдпрд╛ рддреЛ рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╡реЙрдХ рд╣рдореЗрдВ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдзреЗ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
walk.Clipboard().SetText("text");
рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдкрд╛рдиреЗ рдпрд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
edit.Text();
рдЕрдм рд╣рдорд╛рд░реЗ рдмрдЯрди рдХреА рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рддрд░рд╣ рд╣реЛ рдЬрд╛рдПрдЧреА:
PushButton{ Text: "Copy", OnClicked: func() { walk.Clipboard().SetText(edit.Text()); }, }, PushButton{ Text: "Paste", OnClicked: func() { if text, err := walk.Clipboard().Text(); err == nil { edit.SetText(text) } }, },
рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рдФрд░ рдЙрд╕рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛
рдЖрдЗрдП рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рд╕реЗрд╡рд┐рдВрдЧ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрдВрдХреНрд╢рдиреНрд╕ рдореЗрдВ рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
edit
рдЪрд░ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдмрдирд╛рдПрдВред рдЪрд▓реЛ
readFromFile
рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдБ рдЬреЛ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрд╛рда рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд╝реАрд▓реНрдб рдореЗрдВ
readFromFile
(рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЖрдкрдХреЛ
import
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
"io/ioutil"
рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ):
var edit *walk.TextEdit func readFromFile() { contents,_ := ioutil.ReadFile("file.txt") edit.SetText(string(contents)) }
рдЗрд╕реА рддрд░рд╣, рд╣рдо рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реЗрд╡ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
func saveToFile() { ioutil.WriteFile("file.txt", []byte(edit.Text()), 0x777) }
рдЕрдм рд╣рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЯрди рд╕реЗ рдмрд╛рдВрдзрдирд╛ рд╣реЛрдЧрд╛:
PushButton{ Text: "Load", OnClicked: readFromFile, }, PushButton{ Text: "Save", OnClicked: saveToFile, },
рдкреБрдирд╢реНрдЪ рдХрд╛рд░реНрдпрдХреНрд░рдо рдпреВрдирд┐рдХреЛрдб рдореЗрдВ рдПрдХ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рд▓рд┐рдЦрддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо
рд╣рдордиреЗ рд╡реЙрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреЛ рдореЗрдВ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреА рдиреЛрдЯрдмреБрдХ рдмрдирд╛рдИред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдлрд╝рд╛рдЗрд▓ рдЪрдпрди, рд╕рдВрджрд░реНрдн рдореЗрдиреВ, рдЯреИрдм рдФрд░ рдлреЛрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ, рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдЬреЛрдбрд╝реЗрдВред рд╡реЙрдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ WinUI рдШрдЯрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб:
gopad.go package main import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative" "io/ioutil" ) var edit *walk.TextEdit func readFromFile() { contents,_ := ioutil.ReadFile("file.txt") edit.SetText(string(contents)) } func saveToFile() { ioutil.WriteFile("file.txt", []byte(edit.Text()), 0x777) } func main() { MainWindow{ Title: "GoPad", MinSize: Size{600, 400}, Layout: VBox{}, Children: []Widget{ TextEdit{AssignTo: &edit}, HSplitter{ MaxSize: Size{600, 30}, Children: []Widget{ PushButton{ Text: "Copy", OnClicked: func() { walk.Clipboard().SetText(edit.Text()); }, }, PushButton{ Text: "Paste", OnClicked: func() { if text, err := walk.Clipboard().Text(); err == nil { edit.SetText(text) } }, }, PushButton{ Text: "Load", OnClicked: readFromFile, }, PushButton{ Text: "Save", OnClicked: saveToFile, }, }, }, }, }.Run() }
gopad.exe.manifest <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="SomeFunkyNameHere" type="win32"/> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/> </dependentAssembly> </dependency> </assembly>
build.bat go build -ldflags="-H windowsgui" pause
рд╕рдВрджрд░реНрдн