diff orpg/mapper/base_handler.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 0b8b7e3ed78d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/orpg/mapper/base_handler.py	Tue Jul 14 16:41:58 2009 -0500
@@ -0,0 +1,142 @@
+# 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/whiteboard_hander.py
+# Author: OpenRPG Team
+# Maintainer:
+# Version:
+#   $Id: base_handler.py,v 1.20 2007/11/04 17:32:25 digitalxero Exp $
+#
+# Description: base layer handler.
+#   layer handlers are responsible for the GUI elements of the layer
+#
+__version__ = "$Id: base_handler.py,v 1.20 2007/11/04 17:32:25 digitalxero Exp $"
+
+
+from orpg.orpg_windows import *
+from orpg.orpgCore import open_rpg
+
+class base_layer_handler(wx.Panel):
+
+    def __init__(self, parent, id, canvas):
+        wx.Panel.__init__(self, parent, id)
+        self.canvas = canvas
+        self.map_frame = self.canvas.frame
+        self.top_frame = self.canvas.frame.top_frame
+        self.chat = open_rpg.get_component("chat")
+        self.build_ctrls()
+        self.build_menu()
+        self.Bind(wx.EVT_SIZE, self.on_size)
+        self.Bind(wx.EVT_LEFT_DCLICK, self.on_left_dclick)
+
+    def on_size(self,evt):
+        s = self.GetClientSizeTuple()
+        self.basesizer.SetDimension(0,0,s[0],s[1])
+
+    def build_ctrls(self):
+        self.basesizer = wx.BoxSizer(wx.HORIZONTAL)
+        self.sizer = wx.BoxSizer(wx.HORIZONTAL)
+        self.buttonsizer = wx.BoxSizer(wx.HORIZONTAL)
+
+        self.zoom_in_button = createMaskedButton( self, orpg.dirpath.dir_struct["icon"]+'zoom_in.gif', "Zoom in from x1.0", wx.ID_ANY )
+        self.zoom_out_button = createMaskedButton( self, orpg.dirpath.dir_struct["icon"]+'zoom_out.gif', "Zoom out from x1.0", wx.ID_ANY )
+        props = createMaskedButton( self, orpg.dirpath.dir_struct["icon"]+'compass.gif', 'Edit map properties', wx.ID_ANY )
+        mapopen = createMaskedButton( self, orpg.dirpath.dir_struct["icon"]+'open.bmp', 'Load a map', wx.ID_ANY, '#c0c0c0', wx.BITMAP_TYPE_BMP )
+        mapsave = createMaskedButton( self, orpg.dirpath.dir_struct["icon"]+'save.bmp', 'Save the map', wx.ID_ANY, '#c0c0c0', wx.BITMAP_TYPE_BMP )
+        self.buttonsizer.Add(self.zoom_in_button, 0, wx.EXPAND )
+        self.buttonsizer.Add(self.zoom_out_button, 0, wx.EXPAND )
+        self.buttonsizer.Add(props, 0, wx.EXPAND )
+        self.buttonsizer.Add(mapopen, 0, wx.EXPAND )
+        self.buttonsizer.Add(mapsave, 0, wx.EXPAND )
+        self.SetSizer(self.basesizer)
+        self.SetAutoLayout(True)
+        self.Fit()
+        self.basesizer.Add( self.sizer, 1, wx.EXPAND)
+        self.basesizer.Add( self.buttonsizer, 0, wx.ALIGN_RIGHT)
+        self.Bind(wx.EVT_BUTTON, self.canvas.on_zoom_in, self.zoom_in_button)
+        self.Bind(wx.EVT_BUTTON, self.canvas.on_zoom_out, self.zoom_out_button)
+        self.Bind(wx.EVT_BUTTON, self.map_frame.on_open, mapopen)
+        self.Bind(wx.EVT_BUTTON, self.map_frame.on_save, mapsave)
+        self.Bind(wx.EVT_BUTTON, self.canvas.on_prop, props)
+
+    def build_menu(self,label = "Map"):
+        "Menu is built based on the type of grid (rectangle or hex) we have in use."
+        # do main menu
+        main_menu = wx.Menu(label)                                                       #  create a menu resource
+        main_menu.SetTitle(label)
+        item = wx.MenuItem(main_menu, wx.ID_ANY, "&Load Map", "Load Map")
+        self.canvas.Bind(wx.EVT_MENU, self.map_frame.on_open, item)
+        main_menu.AppendItem(item)
+        item = wx.MenuItem(main_menu, wx.ID_ANY, "&Save Map", "Save Map")
+        self.canvas.Bind(wx.EVT_MENU, self.map_frame.on_save, item)
+        main_menu.AppendItem(item)
+        item = wx.MenuItem(main_menu, wx.ID_ANY, "Save as JPG", "Save as JPG")
+        self.canvas.Bind(wx.EVT_MENU, self.on_save_map_jpg, item)
+        main_menu.AppendItem(item)
+        main_menu.AppendSeparator()
+        item = wx.MenuItem(main_menu, wx.ID_ANY, "&Properties", "Properties")
+        self.canvas.Bind(wx.EVT_MENU, self.canvas.on_prop, item)
+        main_menu.AppendItem(item)
+        self.main_menu = main_menu
+
+    def on_save_map_jpg(self, evt):
+        directory = orpg.dirpath.dir_struct["user"]
+        if directory == None:
+            directory = ""
+        d = wx.FileDialog(self.GetParent(), "Save map as a jpg", directory, "", "*.jpg", wx.SAVE)
+        if d.ShowModal() != wx.ID_OK:
+            return
+        filename = d.GetPath()
+        width = self.canvas.size[0]
+        height = self.canvas.size[1]
+        dc = wx.MemoryDC()
+        bitmap = wx.EmptyBitmap(width+1, height+1)
+        dc.SelectObject(bitmap)
+        dc.SetPen(wx.TRANSPARENT_PEN)
+        dc.SetBrush(wx.Brush(self.canvas.GetBackgroundColour(), wx.SOLID))
+        dc.DrawRectangle(0,0,width+1, height+1)
+        self.canvas.layers['bg'].layerDraw(dc, 1, [0,0], self.canvas.size)
+        self.canvas.layers['grid'].layerDraw(dc, [0,0], self.canvas.size)
+        self.canvas.layers['miniatures'].layerDraw(dc, [0,0], self.canvas.size)
+        self.canvas.layers['whiteboard'].layerDraw(dc)
+        self.canvas.layers['fog'].layerDraw(dc, [0,0], self.canvas.size)
+        image = bitmap.ConvertToImage()
+        image.SaveFile(filename, wx.BITMAP_TYPE_JPEG)
+
+    def do_map_board_menu(self,pos):
+        self.canvas.PopupMenu(self.main_menu,pos)
+
+    def on_right_down(self,evt):
+        self.do_map_board_menu(evt.GetPosition())
+
+    def on_left_down(self,evt):
+        pass
+
+    def on_left_up(self,evt):
+        pass
+
+    #added to base layer by Snowdog 5/03
+    def on_left_dclick(self,evt):
+        pass
+
+    def on_motion(self,evt):
+        pass
+
+    def update_info(self):
+        pass