From 0a0352f2f83927fc4ece85e1c76666f7f14fde1c Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Mon, 20 Mar 2000 13:41:16 +0000 Subject: [PATCH] Docview mended (grrr) and OGL studio partially working under wxGTK git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6877 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- contrib/samples/ogl/studio/cspalette.cpp | 54 +++++++++++++++++++++++- contrib/samples/ogl/studio/studio.cpp | 4 +- contrib/samples/ogl/studio/symbols.cpp | 33 ++++++++++++--- contrib/samples/ogl/studio/symbols.h | 2 +- distrib/msw/makefile.rsp | 1 + distrib/msw/zipdist.bat | 8 +++- include/wx/docview.h | 5 ++- 7 files changed, 94 insertions(+), 13 deletions(-) diff --git a/contrib/samples/ogl/studio/cspalette.cpp b/contrib/samples/ogl/studio/cspalette.cpp index 50c5aee777..6d18c070ab 100644 --- a/contrib/samples/ogl/studio/cspalette.cpp +++ b/contrib/samples/ogl/studio/cspalette.cpp @@ -117,31 +117,81 @@ bool csApp::CreatePalette(wxFrame *parent) #ifdef __WXMSW__ wxBitmap PaletteArrow("arrowtool"); wxBitmap TextTool("texttool"); + wxSize toolBitmapSize(32, 32); #elif defined(__WXGTK__) || defined(__WXMOTIF__) wxBitmap PaletteArrow(arrow_xpm); wxBitmap TextTool(texttool_xpm); + wxSize toolBitmapSize(22, 22); #endif csEditorToolPalette *palette = new csEditorToolPalette(m_diagramPaletteSashWindow, ID_DIAGRAM_PALETTE, wxPoint(0, 0), wxSize(-1, -1), wxTB_HORIZONTAL|wxNO_BORDER); palette->SetMargins(2, 2); - palette->SetToolBitmapSize(wxSize(32, 32)); + palette->SetToolBitmapSize(toolBitmapSize); palette->AddTool(PALETTE_ARROW, PaletteArrow, wxNullBitmap, TRUE, 0, -1, NULL, "Pointer"); palette->AddTool(PALETTE_TEXT_TOOL, TextTool, wxNullBitmap, TRUE, 0, -1, NULL, "Text"); + char** symbols = new char*[20]; + int noSymbols = 0; + + symbols[noSymbols] = "Wide Rectangle"; + noSymbols ++; + + symbols[noSymbols] = "Thin Rectangle"; + noSymbols ++; + + symbols[noSymbols] = "Triangle"; + noSymbols ++; + + symbols[noSymbols] = "Octagon"; + noSymbols ++; + + // For some reason, we're getting Gdk errors with + // some shapes, such as ones that use DrawEllipse. +#ifndef __WXGTK__ + symbols[noSymbols] = "Group"; + noSymbols ++; + + symbols[noSymbols] = "Circle"; + noSymbols ++; + + symbols[noSymbols] = "Circle shadow"; + noSymbols ++; + + symbols[noSymbols] = "SemiCircle"; + noSymbols ++; +#endif + + int i; + for (i = 0; i < noSymbols; i++) + { + csSymbol* symbol = GetSymbolDatabase()->FindSymbol(symbols[i]); + if (symbol) + { + wxBitmap* bitmap = GetSymbolDatabase()->CreateToolBitmap(symbol, toolBitmapSize); + palette->AddTool(symbol->GetToolId(), *bitmap, wxNullBitmap, TRUE, 0, -1, NULL, symbol->GetName()); + + delete bitmap; + } + } + delete[] symbols; + +#if 0 wxNode* node = GetSymbolDatabase()->GetSymbols().First(); while (node) { csSymbol* symbol = (csSymbol*) node->Data(); - wxBitmap* bitmap = GetSymbolDatabase()->CreateToolBitmap(symbol); + + wxBitmap* bitmap = GetSymbolDatabase()->CreateToolBitmap(symbol, toolBitmapSize); palette->AddTool(symbol->GetToolId(), *bitmap, wxNullBitmap, TRUE, 0, -1, NULL, symbol->GetName()); delete bitmap; node = node->Next(); } +#endif palette->Realize(); diff --git a/contrib/samples/ogl/studio/studio.cpp b/contrib/samples/ogl/studio/studio.cpp index ef4ab490c3..61f0f6a820 100644 --- a/contrib/samples/ogl/studio/studio.cpp +++ b/contrib/samples/ogl/studio/studio.cpp @@ -168,9 +168,11 @@ bool csApp::OnInit(void) // The ordering of these is important for layout purposes CreateDiagramToolBar(frame); CreatePalette(frame); - CreateProjectWindow(frame); + /* + CreateProjectWindow(frame); FillProjectTreeCtrl(); + */ // Create the shape editing menu m_shapeEditMenu = new ShapeEditMenu; diff --git a/contrib/samples/ogl/studio/symbols.cpp b/contrib/samples/ogl/studio/symbols.cpp index 6a422c0702..9b0ab16f6b 100644 --- a/contrib/samples/ogl/studio/symbols.cpp +++ b/contrib/samples/ogl/studio/symbols.cpp @@ -166,16 +166,31 @@ void csApp::InitSymbols() m_symbolDatabase->AddSymbol(new csSymbol("Group", shape)); } -wxBitmap* csSymbolDatabase::CreateToolBitmap(csSymbol* symbol) +wxBitmap* csSymbolDatabase::CreateToolBitmap(csSymbol* symbol, const wxSize& toolSize) { - int objectBitmapSize = 32; - symbol->GetShape()->Recompute(); - wxBitmap *newBitmap = new wxBitmap(objectBitmapSize, objectBitmapSize); + wxBitmap *newBitmap = new wxBitmap(toolSize.x, toolSize.y); + // Test code +#if 0 wxMemoryDC memDC; - + memDC.SelectObject(*newBitmap); + memDC.SetPen(* wxBLACK_PEN); + memDC.SetBrush(* wxWHITE_BRUSH); + memDC.SetBackground(wxBrush(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE), wxSOLID)); + memDC.SetLogicalFunction(wxCOPY); + memDC.Clear(); + + memDC.DrawLine(0, 0, toolSize.x, toolSize.y); + memDC.DrawLine(0, toolSize.y, toolSize.x, 0); + + memDC.SelectObject(wxNullBitmap); +#endif + +#if 1 + wxMemoryDC memDC; + double height, width, maxSize; symbol->GetShape()->GetBoundingBoxMax(&width, &height); @@ -185,18 +200,22 @@ wxBitmap* csSymbolDatabase::CreateToolBitmap(csSymbol* symbol) maxSize = width; double borderMargin = 4.0; - double scaleFactor = (double)(objectBitmapSize / (maxSize + 2*borderMargin)); - double centreX = (double)((objectBitmapSize/scaleFactor)/2.0)-1; + double scaleFactor = (double)(toolSize.x / (maxSize + 2*borderMargin)); + double centreX = (double)((toolSize.x/scaleFactor)/2.0)-1; double centreY = centreX; memDC.SelectObject(*newBitmap); + memDC.SetUserScale(scaleFactor, scaleFactor); memDC.SetBackground(wxBrush(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE), wxSOLID)); memDC.Clear(); + symbol->GetShape()->Show(TRUE); symbol->GetShape()->Move(memDC, centreX, centreY); + memDC.SelectObject(wxNullBitmap); +#endif return newBitmap; } diff --git a/contrib/samples/ogl/studio/symbols.h b/contrib/samples/ogl/studio/symbols.h index 390fea9a96..86db1fe562 100644 --- a/contrib/samples/ogl/studio/symbols.h +++ b/contrib/samples/ogl/studio/symbols.h @@ -65,7 +65,7 @@ public: void ClearSymbols(); csSymbol* FindSymbol(const wxString& name) const; csSymbol* FindSymbol(int toolId) const; - wxBitmap* CreateToolBitmap(csSymbol* symbol); + wxBitmap* CreateToolBitmap(csSymbol* symbol, const wxSize& sz); protected: wxList m_symbols; diff --git a/distrib/msw/makefile.rsp b/distrib/msw/makefile.rsp index efb6f57ebe..a25712dcd6 100644 --- a/distrib/msw/makefile.rsp +++ b/distrib/msw/makefile.rsp @@ -26,6 +26,7 @@ samples/html/virtual/Makefile.in samples/html/widget/Makefile.in samples/html/zip/Makefile.in samples/image/Makefile.in +samples/joytest/Makefile.in samples/layout/Makefile.in samples/listctrl/Makefile.in samples/mdi/Makefile.in diff --git a/distrib/msw/zipdist.bat b/distrib/msw/zipdist.bat index a135c695bf..fd34565f4f 100755 --- a/distrib/msw/zipdist.bat +++ b/distrib/msw/zipdist.bat @@ -27,6 +27,7 @@ erase %dest\tex2rtf2.zip erase %dest\jpeg.zip erase %dest\tiff.zip erase %dest\dialoged.zip +erase %dest\utils.zip if direxist %dest\wx deltree /Y %dest\wx @@ -86,6 +87,10 @@ zip32 -@ %dest\dialoged_source.zip < %src\distrib\msw\dialoged.rsp zip32 -j %dest\dialoged.zip %dest\dialoged_source.zip %src\bin\dialoged.exe %src\bin\dialoged.hlp %src\bin\dialoged.cnt erase %dest\dialoged_source.zip +rem Misc. utils not in the main distribution +zip32 -@ %dest\utils.zip < %src\distrib\msw\utils.rsp +zip32 -@ -u %dest\utils.zip < %src\distrib\msw\utilmake.rsp + copy %src\docs\changes.txt %dest copy %src\docs\msw\install.txt %dest\install_msw.txt copy %src\docs\motif\install.txt %dest\install_motif.txt @@ -148,7 +153,8 @@ erase /Y %dest\setup.* rem Now invoke WISE install on the new wxwin2.wse set wisecmd="c:\Program Files\wise\wise32.exe" /C %WXWIN\distrib\msw\wxwin2.wse echo Invoking %wisecmd... -start /w %wisecmd +start %wisecmd +pause Press any key to continue with the wxWindows distribution... Rem ren %WXWIN\deliver\setup.EXE %WXWIN\deliver\setup_%version%.exe cd %dest diff --git a/include/wx/docview.h b/include/wx/docview.h index 1ae9b6ee9c..84bbc05b86 100644 --- a/include/wx/docview.h +++ b/include/wx/docview.h @@ -335,7 +335,10 @@ public: // called when file format detection didn't work, can be overridden to do // something in this case - virtual void OnOpenFileFailure() { wxFAIL_MSG(_T("file format mismatch")); } + // This is of course completely stupid, because if the file dialog is + // cancelled you get an assert. Brilliant. -- JACS +// virtual void OnOpenFileFailure() { wxFAIL_MSG(_T("file format mismatch")); } + virtual void OnOpenFileFailure() { } virtual wxDocument *CreateDocument(const wxString& path, long flags = 0); virtual wxView *CreateView(wxDocument *doc, long flags = 0); -- 2.47.2