diff orpg/mapper/map_prop_dialog.py @ 0:4385a7d0efd1 grumpy-goblin

Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
author sirebral
date Tue, 14 Jul 2009 16:41:58 -0500
parents
children 211ac836b6a0
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/orpg/mapper/map_prop_dialog.py	Tue Jul 14 16:41:58 2009 -0500
@@ -0,0 +1,240 @@
+# Copyright (C) 2000-2001 The OpenRPG Project
+#
+#    openrpg-dev@lists.sourceforge.net
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# --
+#
+# File: mapper/map_prop_dialog.py
+# Author: OpenRPG
+# Maintainer:
+# Version:
+#   $Id: map_prop_dialog.py,v 1.16 2006/11/04 21:24:21 digitalxero Exp $
+#
+# Description:
+#
+__version__ = "$Id: map_prop_dialog.py,v 1.16 2006/11/04 21:24:21 digitalxero Exp $"
+
+from orpg.orpg_windows import *
+from background import *
+from grid import *
+from miniatures import *
+from whiteboard import *
+
+##-----------------------------
+## map prop dialog
+##-----------------------------
+
+CTRL_WIDTH = wx.NewId()
+CTRL_HEIGHT = wx.NewId()
+CTRL_BG_COLOR = wx.NewId()
+CTRL_BG_COLOR_VALUE = wx.NewId()
+CTRL_TEXTURE = wx.NewId()
+CTRL_TEXTURE_PATH = wx.NewId()
+CTRL_IMAGE = wx.NewId()
+CTRL_IMAGE_PATH  = wx.NewId()
+CTRL_GRID = wx.NewId()
+CTRL_GRID_SNAP = wx.NewId()
+CTRL_GRID_COLOR = wx.NewId()
+CTRL_GRID_MODE_RECT = wx.NewId()
+CTRL_GRID_MODE_HEX = wx.NewId()
+CTRL_GRID_LINE_NONE = wx.NewId()
+CTRL_GRID_LINE_DOTTED = wx.NewId()
+CTRL_GRID_LINE_SOLID = wx.NewId()
+
+class general_map_prop_dialog(wx.Dialog):
+    def __init__(self,parent,size,bg_layer,grid_layer):
+        wx.Dialog.__init__(self,parent,-1,"General Map Properties",wx.DefaultPosition,wx.Size(425,405))
+        self.size = size
+        self.bg_layer = bg_layer
+        self.grid_layer = grid_layer
+        #build controls
+        self.ctrls = {  CTRL_WIDTH : wx.TextCtrl(self, CTRL_WIDTH, str(size[0])),
+                        CTRL_HEIGHT : wx.TextCtrl(self, CTRL_HEIGHT, str(size[1])),
+                        CTRL_BG_COLOR : wx.RadioButton(self, CTRL_BG_COLOR, "Color", style=wx.RB_GROUP),
+                        CTRL_BG_COLOR_VALUE : wx.Button(self, CTRL_BG_COLOR_VALUE, "Color"),
+                        CTRL_TEXTURE : wx.RadioButton(self, CTRL_TEXTURE, "Texture"),
+                        CTRL_TEXTURE_PATH: wx.TextCtrl(self, CTRL_TEXTURE_PATH,"http://"),
+                        CTRL_IMAGE : wx.RadioButton(self, CTRL_IMAGE, "Image"),
+                        CTRL_IMAGE_PATH :wx.TextCtrl(self, CTRL_IMAGE_PATH,"http://"),
+                        CTRL_GRID : wx.TextCtrl(self, CTRL_GRID),
+                        CTRL_GRID_SNAP : wx.CheckBox(self, CTRL_GRID_SNAP, " Snap to grid"),
+                        CTRL_GRID_COLOR : wx.Button(self, CTRL_GRID_COLOR, "Grid Color"),
+                        CTRL_GRID_MODE_RECT : wx.RadioButton(self, CTRL_GRID_MODE_RECT, "Rectangular", style=wx.RB_GROUP),
+                        CTRL_GRID_MODE_HEX : wx.RadioButton(self, CTRL_GRID_MODE_HEX, "Hexagonal"),
+                        CTRL_GRID_LINE_NONE : wx.RadioButton(self, CTRL_GRID_LINE_NONE, "No Lines", style=wx.RB_GROUP),
+                        CTRL_GRID_LINE_DOTTED : wx.RadioButton(self, CTRL_GRID_LINE_DOTTED, "Dotted Lines"),
+                        CTRL_GRID_LINE_SOLID : wx.RadioButton(self, CTRL_GRID_LINE_SOLID, "Solid Lines")
+                     }
+        # set values of bg controls
+        self.ctrls[CTRL_BG_COLOR].SetValue(False)
+        self.ctrls[CTRL_TEXTURE].SetValue(False)
+        self.ctrls[CTRL_IMAGE].SetValue(False)
+
+        # Begin ted's changes for map bg persistency.
+        if bg_layer.bg_color != None:
+            self.ctrls[CTRL_BG_COLOR_VALUE].SetBackgroundColour(bg_layer.bg_color)
+        if bg_layer.img_path != None:
+            self.ctrls[CTRL_TEXTURE_PATH].SetValue(bg_layer.img_path)
+            self.ctrls[CTRL_IMAGE_PATH].SetValue(bg_layer.img_path)
+        # End ted's changes
+
+        if bg_layer.type == BG_COLOR:
+            self.ctrls[CTRL_BG_COLOR].SetValue(True)
+            # self.ctrls[CTRL_BG_COLOR_VALUE].SetBackgroundColour(bg_layer.bg_color)
+        elif bg_layer.type == BG_TEXTURE:
+            self.ctrls[CTRL_TEXTURE].SetValue(True)
+            # self.ctrls[CTRL_TEXTURE_PATH].SetValue(bg_layer.img_path)
+        elif bg_layer.type == BG_IMAGE:
+            self.ctrls[CTRL_WIDTH].Enable(False)
+            self.ctrls[CTRL_HEIGHT].Enable(False)
+            self.ctrls[CTRL_IMAGE].SetValue(True)
+            # self.ctrls[CTRL_IMAGE_PATH].SetValue(bg_layer.img_path)
+
+        # set grid layer control values
+        self.ctrls[CTRL_GRID].SetValue(str(grid_layer.unit_size))
+        self.ctrls[CTRL_GRID_SNAP].SetValue(grid_layer.snap)
+        self.ctrls[CTRL_GRID_COLOR].SetBackgroundColour(grid_layer.color)
+        self.ctrls[CTRL_GRID_MODE_RECT].SetValue(grid_layer.mode == GRID_RECTANGLE)
+        self.ctrls[CTRL_GRID_MODE_HEX].SetValue(grid_layer.mode == GRID_HEXAGON)
+        self.ctrls[CTRL_GRID_LINE_NONE].SetValue(grid_layer.line == LINE_NONE)
+        self.ctrls[CTRL_GRID_LINE_DOTTED].SetValue(grid_layer.line == LINE_DOTTED)
+        self.ctrls[CTRL_GRID_LINE_SOLID].SetValue(grid_layer.line == LINE_SOLID)
+
+        #create sizers
+        sizers = {}
+        sizers['main'] = wx.BoxSizer(wx.VERTICAL)
+
+        #size
+        sizers['size'] = wx.StaticBoxSizer(wx.StaticBox(self,-1,"Size"), wx.HORIZONTAL)
+        sizers['size'].Add(wx.StaticText(self, -1, "Width: "), 0, wx.ALIGN_CENTER)
+        sizers['size'].Add(self.ctrls[CTRL_WIDTH], 0, wx.ALIGN_CENTER)
+        sizers['size'].Add(wx.Size(20,25))
+        sizers['size'].Add(wx.StaticText(self, -1, "Height: "), 0, wx.ALIGN_CENTER)
+        sizers['size'].Add(self.ctrls[CTRL_HEIGHT], 0, wx.ALIGN_CENTER)
+
+        #bg
+        sizers['bg'] = wx.StaticBoxSizer(wx.StaticBox(self,-1,"Background"), wx.HORIZONTAL)
+        sizers['bg_layout'] = wx.FlexGridSizer(3, 2,10,10)
+        sizers['bg_layout'].AddMany([(self.ctrls[CTRL_BG_COLOR],0,wx.EXPAND),
+                              (self.ctrls[CTRL_BG_COLOR_VALUE],1,wx.EXPAND),
+                              (self.ctrls[CTRL_TEXTURE],0,wx.EXPAND),
+                              (self.ctrls[CTRL_TEXTURE_PATH],1,wx.EXPAND),
+                              (self.ctrls[CTRL_IMAGE],0,wx.EXPAND),
+                              (self.ctrls[CTRL_IMAGE_PATH],1,wx.EXPAND)
+                            ])
+        sizers['bg_layout'].AddGrowableCol(1)
+        sizers['bg'].Add(sizers['bg_layout'], 0, wx.EXPAND)
+
+        #grid
+        sizers['grid'] = wx.StaticBoxSizer(wx.StaticBox(self,-1,"Grid"), wx.HORIZONTAL)
+        sizers['grid_layout'] = wx.FlexGridSizer(2, 3,10,10)
+        sizers['grid_layout'].AddMany([(wx.StaticText(self, -1, "Pixels per Square: "),2,wx.ALIGN_CENTER),
+                              (self.ctrls[CTRL_GRID],1,wx.EXPAND),
+                              (self.ctrls[CTRL_GRID_COLOR],1,wx.EXPAND),
+                              (self.ctrls[CTRL_GRID_SNAP],2,wx.EXPAND),
+                              (self.ctrls[CTRL_GRID_MODE_RECT],1,wx.EXPAND),
+                              (self.ctrls[CTRL_GRID_MODE_HEX],1,wx.EXPAND),
+                              (self.ctrls[CTRL_GRID_LINE_NONE],1,wx.EXPAND),
+                              (self.ctrls[CTRL_GRID_LINE_DOTTED],1,wx.EXPAND),
+                              (self.ctrls[CTRL_GRID_LINE_SOLID],1,wx.EXPAND)
+                            ])
+        sizers['grid'].Add(sizers['grid_layout'], 0, wx.EXPAND)
+
+        # buttons
+        sizers['but'] = wx.BoxSizer(wx.HORIZONTAL)
+        sizers['but'].Add(wx.Button(self, wx.ID_OK, "Apply"), 1, wx.EXPAND)
+        sizers['but'].Add(wx.Size(10,10))
+        sizers['but'].Add(wx.Button(self, wx.ID_CANCEL, "Cancel"), 1, wx.EXPAND)
+        self.sizers = sizers
+
+        #main sizer
+        self.sizers['main'].Add(sizers['size'],1, wx.EXPAND)
+        self.sizers['main'].Add(sizers['bg'], 1, wx.EXPAND)
+        self.sizers['main'].Add(sizers['grid'], 1, wx.EXPAND)
+        self.sizers['main'].Add(sizers['but'], 0, wx.EXPAND)
+        self.SetSizer(self.sizers['main'])
+        self.SetAutoLayout(True)
+        self.Fit()
+
+        #event handlers
+        self.Bind(wx.EVT_BUTTON, self.on_ok, id=wx.ID_OK)
+        self.Bind(wx.EVT_RADIOBUTTON, self.on_click, id=CTRL_BG_COLOR)
+        self.Bind(wx.EVT_RADIOBUTTON, self.on_click, id=CTRL_TEXTURE)
+        self.Bind(wx.EVT_RADIOBUTTON, self.on_click, id=CTRL_IMAGE)
+        self.Bind(wx.EVT_BUTTON, self.on_click, id=CTRL_BG_COLOR_VALUE)
+        self.Bind(wx.EVT_BUTTON, self.on_click, id=CTRL_GRID_COLOR)
+        self.Bind(wx.EVT_RADIOBUTTON, self.on_click, id=CTRL_GRID_MODE_RECT)
+        self.Bind(wx.EVT_RADIOBUTTON, self.on_click, id=CTRL_GRID_MODE_HEX)
+        self.Bind(wx.EVT_RADIOBUTTON, self.on_click, id=CTRL_GRID_LINE_NONE)
+        self.Bind(wx.EVT_RADIOBUTTON, self.on_click, id=CTRL_GRID_LINE_DOTTED)
+        self.Bind(wx.EVT_RADIOBUTTON, self.on_click, id=CTRL_GRID_LINE_SOLID)
+
+    def on_click(self,evt):
+        id = evt.GetId()
+        if id == CTRL_BG_COLOR or id == CTRL_TEXTURE:
+            self.ctrls[CTRL_WIDTH].Enable(True)
+            self.ctrls[CTRL_HEIGHT].Enable(True)
+        elif id == CTRL_IMAGE:
+            self.ctrls[CTRL_WIDTH].Enable(False)
+            self.ctrls[CTRL_HEIGHT].Enable(False)
+        elif id == CTRL_BG_COLOR_VALUE:
+            data = wx.ColourData()
+            data.SetChooseFull(True)
+            dlg = wx.ColourDialog(self, data)
+            if dlg.ShowModal() == wx.ID_OK:
+                data = dlg.GetColourData()
+                self.ctrls[CTRL_BG_COLOR_VALUE].SetBackgroundColour(data.GetColour())
+            dlg.Destroy()
+        elif id == CTRL_GRID_COLOR:
+            data = wx.ColourData()
+            data.SetChooseFull(True)
+            dlg = wx.ColourDialog(self, data)
+            if dlg.ShowModal() == wx.ID_OK:
+                data = dlg.GetColourData()
+                self.ctrls[CTRL_GRID_COLOR].SetBackgroundColour(data.GetColour())
+            dlg.Destroy()
+    def on_ok(self,evt):
+        try:
+            self.size = (int(self.ctrls[CTRL_WIDTH].GetValue()),int(self.ctrls[CTRL_HEIGHT].GetValue()))
+        except:
+            pass
+#            dlg = wx.MessageDialog(frame, 'Invalid Size',"Error")
+#            dlg.ShowModal()
+#            dlg.Destroy()
+        if self.ctrls[CTRL_BG_COLOR].GetValue() == True:
+            self.bg_layer.set_color(self.ctrls[CTRL_BG_COLOR_VALUE].GetBackgroundColour())
+        elif self.ctrls[CTRL_TEXTURE].GetValue() == True:
+            self.bg_layer.set_texture(self.ctrls[CTRL_TEXTURE_PATH].GetValue())
+        elif self.ctrls[CTRL_IMAGE].GetValue() == True:
+            self.size = self.bg_layer.set_image(self.ctrls[CTRL_IMAGE_PATH].GetValue(),self.grid_layer.mapscale)
+        else:
+            self.bg_layer.clear()
+        if self.ctrls[CTRL_GRID_MODE_RECT].GetValue() == True:
+            grid_mode = GRID_RECTANGLE
+        else:
+            grid_mode = GRID_HEXAGON
+        if self.ctrls[CTRL_GRID_LINE_NONE].GetValue() == True:
+            grid_line = LINE_NONE
+        elif self.ctrls[CTRL_GRID_LINE_DOTTED].GetValue() == True:
+            grid_line = LINE_DOTTED
+        else:
+            grid_line = LINE_SOLID
+        self.grid_layer.set_grid(int(self.ctrls[CTRL_GRID].GetValue()),
+                                 self.ctrls[CTRL_GRID_SNAP].GetValue(),
+                                 self.ctrls[CTRL_GRID_COLOR].GetBackgroundColour(),
+                                 grid_mode,
+                                 grid_line)
+        self.EndModal(wx.ID_OK)