]> Shamusworld >> Repos - ttedit/blobdiff - src/ttedit.cpp
Fix cursors so that the use proper masks, added char window toggle,
[ttedit] / src / ttedit.cpp
index 116bd4abfcea9b1daa9dd7dfb0446e3ad3546bdc..17617f167e9c2a225070a9f517cdcfbefc4eb52a 100755 (executable)
@@ -73,6 +73,8 @@ bool TTEditApp::OnInit()
        mainFrame = NULL;
        charWin = NULL;
        toolPalette = NULL;
+       for(int i=0; i<8; i++)
+               cur[i] = NULL;
 
 //Shouldn't we check to see if it was successful? This just assumes
        CreateResources();
@@ -83,7 +85,7 @@ bool TTEditApp::OnInit()
 
 //     charWin = new CharWindow(NULL);//, _T("Own3d W1nd0w"), wxDefaultPosition, wxDefaultSize);
        charWin = new CharWindow(mainFrame, _("Own3d W1nd0w"), wxDefaultPosition, wxDefaultSize,
-               wxCAPTION | wxRESIZE_BORDER);
+               wxCAPTION | wxRESIZE_BORDER | wxFRAME_NO_TASKBAR | wxFRAME_FLOAT_ON_PARENT);
 
        toolPalette = new ToolWindow(mainFrame, _(""), wxDefaultPosition, wxDefaultSize,
                wxBORDER_NONE | wxFRAME_NO_TASKBAR | wxFRAME_FLOAT_ON_PARENT);
@@ -96,54 +98,36 @@ int TTEditApp::OnExit()
 #ifdef DEBUG
        CloseDebugLog();
 #endif
+       for(int i=0; i<8; i++)
+               if (cur[i])
+                       delete cur[i];
 
        return 0;
 }
 
+//
+// OS dependent method of creating cursor (works for Win32 and GTK+)
+//
+#define CREATE_CURSOR(storage, name, hsx, hsy) \
+       wxBitmap name##_bitmap(name##_xpm); \
+       wxImage name##_image = name##_bitmap.ConvertToImage(); \
+       name##_image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, hsx); \
+       name##_image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_Y, hsy); \
+       storage = new wxCursor(name##_image);
+
 void TTEditApp::CreateResources(void)
 {
        // This is a sucky way to create cursors, but at least it's cross-platform...
-       // NOTE: Need to fix hotspots on a few... !!! FIX !!!
-
-       wxBitmap cursorBM1(cur1_xpm);
-       wxImage cursorImage1 = cursorBM1.ConvertToImage();
-       cursorImage1.SetMaskFromImage(cursorImage1, 0xFF, 0xFF, 0xFF);
-       cur[0] = new wxCursor(cursorImage1);
-
-       wxBitmap cursorBM2(cur2_xpm);
-       wxImage cursorImage2 = cursorBM2.ConvertToImage();
-       cursorImage2.SetMaskFromImage(cursorImage2, 0xFF, 0xFF, 0xFF);
-       cur[1] = new wxCursor(cursorImage2);
-
-       wxBitmap cursorBM3(cur3_xpm);
-       wxImage cursorImage3 = cursorBM3.ConvertToImage();
-       cursorImage3.SetMaskFromImage(cursorImage3, 0xFF, 0xFF, 0xFF);
-       cur[2] = new wxCursor(cursorImage3);
-
-       wxBitmap cursorBM4(cur4_xpm);
-       wxImage cursorImage4 = cursorBM4.ConvertToImage();
-       cursorImage4.SetMaskFromImage(cursorImage4, 0xFF, 0xFF, 0xFF);
-       cur[3] = new wxCursor(cursorImage4);
-
-       wxBitmap cursorBM5(cur5_xpm);
-       wxImage cursorImage5 = cursorBM5.ConvertToImage();
-       cursorImage5.SetMaskFromImage(cursorImage5, 0xFF, 0xFF, 0xFF);
-       cur[4] = new wxCursor(cursorImage5);
-
-       wxBitmap cursorBM6(cur6_xpm);
-       wxImage cursorImage6 = cursorBM6.ConvertToImage();
-       cursorImage6.SetMaskFromImage(cursorImage6, 0xFF, 0xFF, 0xFF);
-       cur[5] = new wxCursor(cursorImage6);
-
-       wxBitmap cursorBM7(cur7_xpm);
-       wxImage cursorImage7 = cursorBM7.ConvertToImage();
-       cursorImage7.SetMaskFromImage(cursorImage7, 0xFF, 0xFF, 0xFF);
-       cur[6] = new wxCursor(cursorImage7);
-
-       wxBitmap cursorBM8(cur8_xpm);
-       wxImage cursorImage8 = cursorBM8.ConvertToImage();
-       cursorImage8.SetMaskFromImage(cursorImage8, 0xFF, 0xFF, 0xFF);
-       cur[7] = new wxCursor(cursorImage8);
+       // NOTE: Need to fix hotspots on a few... !!! FIX !!! [DONE]
+
+       CREATE_CURSOR(cur[0], cur1, 1, 1);
+       CREATE_CURSOR(cur[1], cur2, 1, 1);
+       CREATE_CURSOR(cur[2], cur3, 11, 11);    // Prolly won't need this soon (scroll)...
+       CREATE_CURSOR(cur[3], cur4, 15, 13);    // Prolly won't need this soon (zoom)...
+       CREATE_CURSOR(cur[4], cur5, 1, 1);
+       CREATE_CURSOR(cur[5], cur6, 1, 1);
+       CREATE_CURSOR(cur[6], cur7, 1, 1);
+       CREATE_CURSOR(cur[7], cur8, 1, 1);
 }
 
 
@@ -151,6 +135,7 @@ BEGIN_EVENT_TABLE(TTEditFrame, wxFrame)
        EVT_MENU(IDM_OPEN, TTEditFrame::OnOpen)
        EVT_MENU(IDM_EXIT, TTEditFrame::OnExit)
        EVT_MENU(IDM_ABOUT, TTEditFrame::OnAbout)
+       EVT_MENU(ID_TBCHARWIN, TTEditFrame::OnCharWindow)
        EVT_CLOSE(TTEditFrame::OnCloseWindow)
 END_EVENT_TABLE()
 
@@ -177,7 +162,7 @@ TTEditFrame::TTEditFrame(wxFrame * parent, const wxString &title, const wxPoint
 
                tb->AddTool(ID_TBLEFT, _("Prev char"), tool1, _("Go to prev char"), wxITEM_NORMAL);
                tb->AddTool(ID_TBRIGHT, _("Next char"), tool2, _("Go to next char"), wxITEM_NORMAL);
-               tb->AddTool(ID_TBCHARWIN, _("Char Wnd"), tool3, _("Toggle char window"), wxITEM_NORMAL);
+               tb->AddTool(ID_TBCHARWIN, _("Char Wnd"), tool3, _("Toggle char window"), wxITEM_CHECK);
                tb->Realize();
        }
 
@@ -239,6 +224,14 @@ void TTEditFrame::OnExit(wxCommandEvent &e)
        this->Destroy();
 }
 
+void TTEditFrame::OnCharWindow(wxCommandEvent &e)
+{
+       app.charWin->Show(e.IsChecked() ? true : false);
+
+       if (e.IsChecked())
+               Raise();
+}
+
 void TTEditFrame::OnCloseWindow(wxCloseEvent &e)
 {
        app.toolPalette->Destroy();