Index: Dummy.cpp
===================================================================
--- Dummy.cpp	(revision 3048)
+++ Dummy.cpp	(working copy)
@@ -11,25 +11,19 @@
 #undef assert
 #define assert(x)
 
-extern "C" {
+extern "C"
+{
 
 	HWND scenery_window = NULL;
 	HWND terrain_window = NULL;
 	HWND mouse_down_window = NULL;
-	HWND map_actions_window = NULL;
 
 	float MINIMUM_SOURCE_TO_DEST_RATIO = .5f;
 	float MAXIMUM_SOURCE_TO_DEST_RATIO = 1.f;
 
 
-	void initialize_map_actions_window_for_new_map(){
-		assert(FALSE); //don't use stub functions
-	}
+	
 
-	void dispose_map_actions_window(){
-		assert(FALSE); //don't use stub functions
-	}
-
 	short data_required_for_action_parameter(void){
 		assert(FALSE); //don't use stub functions
 		return NONE;
@@ -75,11 +69,6 @@
 		assert(FALSE); //don't use stub functions
 	}
 
-	boolean is_active_application(void){
-		assert(FALSE); //don't use stub functions
-		return TRUE;
-	}
-
 	int show_about_box(void){ 
 		assert(FALSE); //don't use stub functions
 		return 0;
@@ -167,11 +156,6 @@
 		return;
 	}
 
-	void show_window(void *window){
-		assert(FALSE); //don't use stub functions
-		return;
-	}
-
 	void get_current_mouse_coordinates(point2d *current_mouse){
 		assert(FALSE); //don't use stub functions
 		return;
@@ -235,10 +219,6 @@
 		return TRUE;
 	}
 
-	void hide_window(void *window){
-		assert(FALSE); //don't use stub functions
-	}
-
 }
 
 	
Index: LoathingApp.cpp
===================================================================
--- LoathingApp.cpp	(revision 3048)
+++ LoathingApp.cpp	(working copy)
@@ -18,6 +18,7 @@
 #include "LoathingFrame.h"
 #include "OverheadFrame.h"
 #include "ToolsFrame.h"
+#include "MapActionsFrame.h"
 
 
 // Create a new application object: this macro will allow wxWidgets to create
@@ -55,6 +56,7 @@
 	loathing_frame = new LoathingFrame(_T("Loathing"));
 	overhead_frame = new OverheadFrame(loathing_frame);
 	ToolsFrame *tools = new ToolsFrame(loathing_frame);
+	MapActionsFrame* mas = new MapActionsFrame(loathing_frame);
 
 	// initialize Loathing and Myth-specific things here
 #ifdef windows
@@ -94,6 +96,7 @@
 	loathing_frame->Show(true);
 	overhead_frame->Show(true);
 	tools->Show(true);
+	mas->Show(true);
 
 	// create the timer that will periodically call this update method
 	timer = new UpdateTimer(this);
Index: MapActionsFrame.cpp
===================================================================
--- MapActionsFrame.cpp	(revision 0)
+++ MapActionsFrame.cpp	(revision 0)
@@ -0,0 +1,157 @@
+#include "MapActionsFrame.h"
+
+#include "wx/splitter.h"
+#include "wx/stattext.h"
+#include "wx/statbox.h"
+#include "wx/listbox.h"
+#include "wx/button.h"
+
+#ifdef windows
+extern "C" HWND map_actions_window = NULL;
+#endif
+
+// the event tables connect the wxWidgets events with the functions (event
+// handlers) which process them. It can be also done at run-time, but for the
+// simple menu events like this the static method is much simpler.
+BEGIN_EVENT_TABLE(MapActionsFrame, wxFrame)
+	//link up event handlers to events here
+END_EVENT_TABLE()
+
+// frame constructor
+MapActionsFrame::MapActionsFrame(wxFrame* parent)
+	: wxFrame(parent, wxID_ANY, _T("Map Actions"), wxDefaultPosition, wxSize(640, 480),
+		wxCAPTION | wxFRAME_TOOL_WINDOW | wxRESIZE_BORDER | wxFRAME_FLOAT_ON_PARENT)
+{
+
+#ifdef windows
+	// store the frame's HWND value for windoze Myth
+	map_actions_window = (HWND)GetHWND();
+#endif
+
+	// create a vertical splitter to divide the window in half with a resizable divider
+	wxSplitterWindow* vspl = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 
+		wxSP_3DSASH);
+	
+	// build the map actions section
+	wxPanel* leftPanel = new wxPanel(vspl, wxID_ANY); //left side
+	wxStaticBox* masBox = new wxStaticBox(leftPanel, wxID_ANY, _T("Map Actions"));
+	wxStaticBoxSizer* masBoxSizer = new wxStaticBoxSizer(masBox, wxVERTICAL);
+	wxListBox* maList = new wxListBox(leftPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL,
+		wxLB_EXTENDED | wxLB_ALWAYS_SB);
+
+	wxButton* maAdd = new wxButton(leftPanel, wxID_ANY, _T("Add..."));
+	wxButton* maDelete = new wxButton(leftPanel, wxID_ANY, _T("Delete"));
+	wxButton* maEdit = new wxButton(leftPanel, wxID_ANY, _T("Edit..."));
+	wxBoxSizer* maButtonsTop = new wxBoxSizer(wxHORIZONTAL);
+	maButtonsTop->Add(maAdd, 1, wxEXPAND);
+	maButtonsTop->AddSpacer(4);
+	maButtonsTop->Add(maDelete, 1, wxEXPAND);
+	maButtonsTop->AddSpacer(4);
+	maButtonsTop->Add(maEdit, 1, wxEXPAND);
+
+	wxButton* maUp = new wxButton(leftPanel, wxID_ANY, _T("^"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT);
+	wxButton* maDown = new wxButton(leftPanel, wxID_ANY, _T("v"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT);
+	wxButton* maDuplicate = new wxButton(leftPanel, wxID_ANY, _T("Duplicate..."));
+	wxButton* maRight = new wxButton(leftPanel, wxID_ANY, _T(">"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT);
+	wxButton* maLeft = new wxButton(leftPanel, wxID_ANY, _T("<"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT);
+	wxBoxSizer* maButtonsBottom = new wxBoxSizer(wxHORIZONTAL);
+	maButtonsBottom->Add(maUp, 1, wxEXPAND);
+	maButtonsBottom->AddSpacer(2);
+	maButtonsBottom->Add(maDown, 1, wxEXPAND);
+	maButtonsBottom->AddSpacer(2);
+	maButtonsBottom->Add(maDuplicate, 2, wxEXPAND);
+	maButtonsBottom->AddSpacer(2);
+	maButtonsBottom->Add(maRight, 1, wxEXPAND);
+	maButtonsBottom->AddSpacer(2);
+	maButtonsBottom->Add(maLeft, 1, wxEXPAND);
+
+	masBoxSizer->Add(maList, 1, wxEXPAND);
+	masBoxSizer->AddSpacer(4);
+	masBoxSizer->Add(maButtonsTop, 0, wxEXPAND);
+	masBoxSizer->AddSpacer(4);
+	masBoxSizer->Add(maButtonsBottom, 0, wxEXPAND);
+	leftPanel->SetSizer(masBoxSizer);
+	masBoxSizer->SetSizeHints(leftPanel);
+
+	// create a horizontal splitter to divide the right side of the window in half
+	wxSplitterWindow* hspl = new wxSplitterWindow(vspl, wxID_ANY, wxDefaultPosition, wxDefaultSize,
+		wxSP_3DSASH);
+
+	// build the parameters section
+	wxPanel* paramsPanel = new wxPanel(hspl, wxID_ANY);
+	wxStaticBox* paramsBox = new wxStaticBox(paramsPanel, wxID_ANY, _T("Parameters"));
+	wxStaticBoxSizer* paramsBoxSizer = new wxStaticBoxSizer(paramsBox, wxVERTICAL);
+	wxListBox* paramsList = new wxListBox(paramsPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL,
+		wxLB_EXTENDED | wxLB_ALWAYS_SB);
+	wxStaticBox* descriptionBox = new wxStaticBox(paramsPanel, wxID_ANY, _T("Description"));
+	wxStaticBoxSizer* descriptionBoxSizer = new wxStaticBoxSizer(descriptionBox, wxVERTICAL);
+	wxStaticText* descriptionText = new wxStaticText(paramsPanel, wxID_ANY, _T("Text goes here"));
+	descriptionBoxSizer->Add(descriptionText, 1, wxEXPAND);
+
+	wxButton* paramAdd = new wxButton(paramsPanel, wxID_ANY, _T("Add..."));
+	wxButton* paramDelete = new wxButton(paramsPanel, wxID_ANY, _T("Delete"));
+	wxButton* paramEdit = new wxButton(paramsPanel, wxID_ANY, _T("Edit..."));
+	wxButton* paramCustom = new wxButton(paramsPanel, wxID_ANY, _T("Custom..."));
+	wxBoxSizer* paramButtons = new wxBoxSizer(wxHORIZONTAL);
+	paramButtons->Add(paramAdd, 1, wxEXPAND);
+	paramButtons->Add(paramDelete, 1, wxEXPAND);
+	paramButtons->Add(paramEdit, 1, wxEXPAND);
+	paramButtons->Add(paramCustom, 1, wxEXPAND);
+
+	paramsBoxSizer->Add(paramsList, 3, wxEXPAND);
+	paramsBoxSizer->AddSpacer(4);
+	paramsBoxSizer->Add(descriptionBoxSizer, 2, wxEXPAND);
+	paramsBoxSizer->AddSpacer(4);
+	paramsBoxSizer->Add(paramButtons, 0, wxEXPAND);
+	paramsPanel->SetSizer(paramsBoxSizer);
+	paramsBoxSizer->SetSizeHints(paramsPanel);
+
+
+	// build the elements section
+	wxPanel* eltsPanel = new wxPanel(hspl, wxID_ANY);
+	wxStaticBox* eltsBox = new wxStaticBox(eltsPanel, wxID_ANY, _T("Elements"));
+	wxStaticBoxSizer* eltsBoxSizer = new wxStaticBoxSizer(eltsBox, wxVERTICAL);
+	wxListBox* eltsList = new wxListBox(eltsPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL,
+		wxLB_EXTENDED | wxLB_ALWAYS_SB);
+
+	wxButton* eltAdd = new wxButton(eltsPanel, wxID_ANY, _T("Add..."));
+	wxButton* eltDelete = new wxButton(eltsPanel, wxID_ANY, _T("Delete"));
+	wxButton* eltEdit = new wxButton(eltsPanel, wxID_ANY, _T("Edit..."));
+	wxBoxSizer* eltButtons = new wxBoxSizer(wxHORIZONTAL);
+	eltButtons->Add(eltAdd, 1, wxEXPAND);
+	eltButtons->Add(eltDelete, 1, wxEXPAND);
+	eltButtons->Add(eltEdit, 1, wxEXPAND);
+
+	eltsBoxSizer->Add(eltsList, 1, wxEXPAND);
+	eltsBoxSizer->AddSpacer(4);
+	eltsBoxSizer->Add(eltButtons, 0, wxEXPAND);
+	eltsPanel->SetSizer(eltsBoxSizer);
+	eltsBoxSizer->SetSizeHints(eltsPanel);
+	
+	// split the right side horizontally
+	hspl->SplitHorizontally(paramsPanel, eltsPanel);
+	// split the left and right sides
+	vspl->SplitVertically(leftPanel, hspl);
+	
+}
+
+MapActionsFrame::~MapActionsFrame()
+{
+
+}
+
+
+extern "C"
+{
+
+	void initialize_map_actions_window_for_new_map()
+	{
+		// nop
+	}
+
+	void dispose_map_actions_window()
+	{
+		// nop
+	}
+
+}
\ No newline at end of file
Index: MapActionsFrame.h
===================================================================
--- MapActionsFrame.h	(revision 0)
+++ MapActionsFrame.h	(revision 0)
@@ -0,0 +1,22 @@
+#pragma once
+
+#include "wxLoathing.h"
+
+// Define a new frame type: this is going to be our main frame
+class MapActionsFrame : public wxFrame
+{
+public:
+	// ctor(s)
+	MapActionsFrame(wxFrame* parent);
+	~MapActionsFrame();
+
+	// functions
+
+private:
+	// event handlers (these functions should _not_ be virtual)
+
+	// member variables
+
+	// any class wishing to process wxWidgets events must use this macro
+    DECLARE_EVENT_TABLE()
+};
\ No newline at end of file
Index: OverheadFrame.cpp
===================================================================
--- OverheadFrame.cpp	(revision 3048)
+++ OverheadFrame.cpp	(working copy)
@@ -66,7 +66,9 @@
 {
 
 	// store the frame's HWND value for Myth
+#ifdef windows
 	overhead_window = (HWND)GetHWND();
+#endif
 
 	// create and set the status bar to allow resizing
 	wxStatusBar* stat_bar = new wxStatusBar(this, wxID_ANY, wxST_SIZEGRIP);
Index: wxLoathing_shell.cpp
===================================================================
--- wxLoathing_shell.cpp	(revision 3048)
+++ wxLoathing_shell.cpp	(working copy)
@@ -9,7 +9,8 @@
 #include <wx/msgdlg.h>
 #include <wx/mstream.h>
 
-wxImage loadPNGFromResource(int ID){
+wxImage loadPNGFromResource(int ID)
+{
 #ifdef windows
 	//Windows implementation
 	HRSRC hRes = FindResource(NULL, MAKEINTRESOURCE(ID), "PNG");
@@ -55,12 +56,14 @@
 
 	boolean wants_to_quit = FALSE;
 
-	void set_screen_name(char *name){
+	void set_screen_name(char *name)
+	{
 		loathing_frame->SetLabel(name);
 		overhead_frame->SetLabel(name);
 	}
 
-	boolean document_is_dirty(void){
+	boolean document_is_dirty(void)
+	{
 		return document_dirty;
 	}
 
@@ -89,6 +92,21 @@
 		return;
 	}
 
+	boolean is_active_application(void)
+	{
+		return loathing_app->IsActive();
+	}
+
+	void show_window(void *window)
+	{
+		//nop
+	}
+
+	void hide_window(void *window)
+	{
+		//nop
+	}
+
 	boolean save_before_quitting(void)
 	{
 		if (document_is_dirty())
Index: wxLoathing_vc10.vcxproj
===================================================================
--- wxLoathing_vc10.vcxproj	(revision 3048)
+++ wxLoathing_vc10.vcxproj	(working copy)
@@ -113,6 +113,7 @@
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
+    <ClCompile Include="MapActionsFrame.cpp" />
     <ClCompile Include="UpdateTimer.cpp" />
     <ClCompile Include="wxLoathing_shell.cpp" />
     <ClCompile Include="Dummy.cpp" />
@@ -332,6 +333,7 @@
   <ItemGroup>
     <ClInclude Include="LoathingApp.h" />
     <ClInclude Include="LoathingFrame.h" />
+    <ClInclude Include="MapActionsFrame.h" />
     <ClInclude Include="OverheadFrame.h" />
     <ClInclude Include="resource.h" />
     <ClInclude Include="UpdateTimer.h" />
Index: wxLoathing_vc10.vcxproj.filters
===================================================================
--- wxLoathing_vc10.vcxproj.filters	(revision 3048)
+++ wxLoathing_vc10.vcxproj.filters	(working copy)
@@ -701,6 +701,9 @@
     <ClCompile Include="UpdateTimer.cpp">
       <Filter>Source Files\wxWidgets</Filter>
     </ClCompile>
+    <ClCompile Include="MapActionsFrame.cpp">
+      <Filter>Source Files\wxWidgets</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="LoathingApp.h">
@@ -893,6 +896,9 @@
       <Filter>Source Files\wxWidgets</Filter>
     </ClInclude>
     <ClInclude Include="resource.h" />
+    <ClInclude Include="MapActionsFrame.h">
+      <Filter>Source Files\wxWidgets</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <None Include="res\activema.ico">
