diff options
author | Kevin Chabowski <kevin@kch42.de> | 2013-11-04 20:59:28 +0100 |
---|---|---|
committer | Kevin Chabowski <kevin@kch42.de> | 2013-11-04 20:59:28 +0100 |
commit | 3acbc6d81592560dc95b1ce9ee548627042acfc5 (patch) | |
tree | 1fc9801fd8850e5fef6c2c395b685fe7aa218bf4 /main.go | |
parent | e2730e8e796bf05cfb0681068e40d0c8fb6228b2 (diff) | |
parent | 9b006397c30d49e4843b4e5479670a645f435dd9 (diff) | |
download | biomed-3acbc6d81592560dc95b1ce9ee548627042acfc5.tar.gz biomed-3acbc6d81592560dc95b1ce9ee548627042acfc5.tar.bz2 biomed-3acbc6d81592560dc95b1ce9ee548627042acfc5.zip |
Merge branch 'editable-biomes'
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 92 |
1 files changed, 59 insertions, 33 deletions
@@ -21,6 +21,10 @@ type GUI struct { statusContext uint lastStatus string + biomes []BiomeInfo + bioVBox *gtk.VBox + bioVBoxWrap *gtk.VBox + mapw *MapWidget } @@ -75,6 +79,16 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. dlg.Destroy() } +func (g *GUI) biomeEditor() { + ed := NewBiomeInfoEditor(g.biomes) + rv := ed.Run() + ed.Destroy() + if rv == gtk.RESPONSE_OK { + g.biomes = ed.Biomes() + g.updateBiomeInfo() + } +} + func (g *GUI) mkMenuBar() *gtk.MenuBar { menubar := gtk.NewMenuBar() @@ -103,16 +117,6 @@ func (g *GUI) mkMenuBar() *gtk.MenuBar { fileMenuItem.SetSubmenu(fileMenu) menubar.Append(fileMenuItem) - /*editMenu := gtk.NewMenu() - - undo := gtk.NewMenuItemWithLabel("Undo") - undo.Connect("activate", g.undo) - editMenu.Append(undo) - - editMenuItem := gtk.NewMenuItemWithLabel("Edit") - editMenuItem.SetSubmenu(editMenu) - menubar.Append(editMenuItem)*/ - helpMenu := gtk.NewMenu() controls := gtk.NewMenuItemWithLabel("Controls") @@ -174,19 +178,19 @@ func labelCustomFont(text, font string) *gtk.Label { } func (g *GUI) mkSidebar() *gtk.ScrolledWindow { - vbox := gtk.NewVBox(false, 0) + sbVBox := gtk.NewVBox(false, 0) - vbox.PackStart(labelCustomFont("Tools", "Sans Bold 14"), false, false, 3) + sbVBox.PackStart(labelCustomFont("Tools", "Sans Bold 14"), false, false, 3) g.showbiomes = gtk.NewCheckButtonWithLabel("Show Biomes") g.showbiomes.SetActive(true) g.showbiomes.Connect("toggled", g.showbiomesToggled) - vbox.PackStart(g.showbiomes, false, false, 3) + sbVBox.PackStart(g.showbiomes, false, false, 3) g.fixSnowIce = gtk.NewCheckButtonWithLabel("Fix Snow/Ice") g.fixSnowIce.SetTooltipText("Add Snow/Ice for Taiga/Ice Plains. Remove Snow/Ice for other biomes.") g.fixSnowIce.Connect("toggled", g.fixSnowIceToggled) - vbox.PackStart(g.fixSnowIce, false, false, 3) + sbVBox.PackStart(g.fixSnowIce, false, false, 3) fill := gtk.NewRadioButtonWithLabel(nil, "Fill") fill.SetActive(true) @@ -200,32 +204,58 @@ func (g *GUI) mkSidebar() *gtk.ScrolledWindow { drawHBox.PackEnd(drawRadius, false, false, 3) draw.Connect("toggled", g.mkUpdateToolFx(draw, NewDrawTool(func() int { return drawRadius.GetValueAsInt() }))) - vbox.PackStart(fill, false, false, 3) - vbox.PackStart(drawHBox, false, false, 3) + sbVBox.PackStart(fill, false, false, 3) + sbVBox.PackStart(drawHBox, false, false, 3) + + sbVBox.PackStart(gtk.NewHSeparator(), false, false, 3) + bioHeaderHBox := gtk.NewHBox(false, 0) + bioHeaderHBox.PackStart(labelCustomFont("Biomes", "Sans Bold 14"), true, false, 0) + editBiomesBtn := gtk.NewButton() + editBiomesBtn.Add(gtk.NewImageFromStock(gtk.STOCK_EDIT, gtk.ICON_SIZE_SMALL_TOOLBAR)) + editBiomesBtn.Connect("clicked", g.biomeEditor) + editBiomesBtn.SetTooltipText("Configure Biomes") + bioHeaderHBox.PackStart(editBiomesBtn, false, false, 0) + sbVBox.PackStart(bioHeaderHBox, false, false, 3) + + g.bioVBoxWrap = gtk.NewVBox(false, 0) + g.bioVBox = gtk.NewVBox(false, 0) + g.bioVBoxWrap.PackStart(g.bioVBox, false, false, 0) + sbVBox.PackStart(g.bioVBoxWrap, false, false, 3) + g.updateBiomeInfo() - vbox.PackStart(gtk.NewHSeparator(), false, false, 3) - vbox.PackStart(labelCustomFont("Biomes", "Sans Bold 14"), false, false, 3) + scrolled := gtk.NewScrolledWindow(nil, nil) + scrolled.SetPolicy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) + scrolled.AddWithViewPort(sbVBox) + return scrolled +} +func (g *GUI) updateBiomeInfo() { + vbox := gtk.NewVBox(false, 0) var grp *glib.SList - for _, bio := range bioList { + + for _, biome := range g.biomes { biohbox := gtk.NewHBox(false, 0) - cbox := colorBox(bioColors[bio]) + cbox := colorBox(gdk.NewColor(biome.Color)) cbox.SetSizeRequest(20, 20) biohbox.PackStart(cbox, false, false, 3) - rbutton := gtk.NewRadioButtonWithLabel(grp, bio.String()) + rbutton := gtk.NewRadioButtonWithLabel(grp, biome.Name) grp = rbutton.GetGroup() - rbutton.Connect("toggled", g.mkUpdateBiomeFx(rbutton, bio)) + rbutton.Connect("toggled", g.mkUpdateBiomeFx(rbutton, biome.ID)) biohbox.PackEnd(rbutton, true, true, 3) vbox.PackStart(biohbox, false, false, 3) } - scrolled := gtk.NewScrolledWindow(nil, nil) - scrolled.SetPolicy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) - scrolled.AddWithViewPort(vbox) - return scrolled + g.bioVBoxWrap.Remove(g.bioVBox) + g.bioVBoxWrap.PackStart(vbox, false, false, 3) + vbox.ShowAll() + g.bioVBox = vbox + + g.mapw.updateBioLookup(MkBiomeLookup(g.biomes)) } func (g *GUI) Init() { + g.biomes = ReadDefaultBiomes() + g.window = gtk.NewWindow(gtk.WINDOW_TOPLEVEL) g.window.SetTitle("biomed") @@ -235,7 +265,7 @@ func (g *GUI) Init() { hbox := gtk.NewHBox(false, 0) - g.mapw = NewMapWidget(GUICallbacks{g.reportError, g.updateInfo, g.setBusy}) + g.mapw = NewMapWidget(GUICallbacks{g.reportError, g.updateInfo, g.setBusy}, MkBiomeLookup(g.biomes)) hbox.PackStart(g.mapw.DArea(), true, true, 3) sidebar := g.mkSidebar() @@ -273,8 +303,8 @@ func (g *GUI) reportError(msg string) { os.Exit(1) } -func (g *GUI) updateInfo(x, z int, bio mcmap.Biome) { - g.lastStatus = fmt.Sprintf("X:%d, Z:%d, Biome:%s", x, z, bio) +func (g *GUI) updateInfo(x, z int, bio mcmap.Biome, name string) { + g.lastStatus = fmt.Sprintf("X:%d, Z:%d, Biome: %s(%d)", x, z, name, bio) g.statusbar.Pop(g.statusContext) g.statusbar.Push(g.statusContext, g.lastStatus) } @@ -311,10 +341,6 @@ func (g *GUI) fixSnowIceToggled() { g.mapw.SetFixSnowIce(g.fixSnowIce.GetActive()) } -/*func (g *GUI) undo() { - fmt.Println("Undo") -}*/ - func (g *GUI) Show() { g.window.ShowAll() g.betaWarning() |