git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6407 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			142 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        view.h
 | |
| // Purpose:     View-related classes
 | |
| // Author:      Julian Smart
 | |
| // Modified by:
 | |
| // Created:     12/07/98
 | |
| // RCS-ID:      $Id$
 | |
| // Copyright:   (c) Julian Smart
 | |
| // Licence:   	wxWindows licence
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _STUDIO_VIEW_H_
 | |
| #define _STUDIO_VIEW_H_
 | |
| 
 | |
| #ifdef __GNUG__
 | |
| // #pragma interface "view.h"
 | |
| #endif
 | |
| 
 | |
| #include "doc.h"
 | |
| #include <wx/ogl/ogl.h>
 | |
| 
 | |
| class csDiagramView;
 | |
| class csCanvas: public wxShapeCanvas
 | |
| {
 | |
| DECLARE_CLASS(csCanvas)
 | |
|  public:
 | |
| 
 | |
|   csCanvas(csDiagramView *view, wxWindow *parent = NULL, wxWindowID id = -1,
 | |
|             const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
 | |
|             long style = wxRETAINED);
 | |
|   ~csCanvas(void);
 | |
| 
 | |
|   void DrawOutline(wxDC& dc, double x1, double y1, double x2, double y2);
 | |
| 
 | |
|   void OnMouseEvent(wxMouseEvent& event);
 | |
|   void OnPaint(wxPaintEvent& event);
 | |
| 
 | |
|   virtual void OnLeftClick(double x, double y, int keys = 0);
 | |
|   virtual void OnRightClick(double x, double y, int keys = 0);
 | |
| 
 | |
|   virtual void OnDragLeft(bool draw, double x, double y, int keys=0); // Erase if draw false
 | |
|   virtual void OnBeginDragLeft(double x, double y, int keys=0);
 | |
|   virtual void OnEndDragLeft(double x, double y, int keys=0);
 | |
| 
 | |
|   virtual void OnDragRight(bool draw, double x, double y, int keys=0); // Erase if draw false
 | |
|   virtual void OnBeginDragRight(double x, double y, int keys=0);
 | |
|   virtual void OnEndDragRight(double x, double y, int keys=0);
 | |
| 
 | |
|   inline csDiagramView*  GetView() const { return m_view; }
 | |
|   inline void SetView(csDiagramView* view) { m_view = view; }
 | |
| 
 | |
|  protected:
 | |
|   csDiagramView*    m_view;
 | |
| 
 | |
| DECLARE_EVENT_TABLE()
 | |
| };
 | |
| 
 | |
| class csDiagramView: public wxView
 | |
| {
 | |
|   DECLARE_DYNAMIC_CLASS(csDiagramView)
 | |
|  public:
 | |
|   csDiagramView(void) { canvas = NULL; frame = NULL; };
 | |
|   ~csDiagramView(void);
 | |
| 
 | |
|   bool OnCreate(wxDocument *doc, long flags);
 | |
|   void OnDraw(wxDC *dc);
 | |
|   void OnUpdate(wxView *sender, wxObject *hint = NULL);
 | |
|   bool OnClose(bool deleteWindow = TRUE);
 | |
|   void OnSelectAll(wxCommandEvent& event);
 | |
| 
 | |
|   wxShape *FindFirstSelectedShape(void);
 | |
| 
 | |
|   // Scans the canvas for selections (doesn't use m_selections)
 | |
|   void FindSelectedShapes(wxList& selections, wxClassInfo* toFind = NULL);
 | |
| 
 | |
|   // The selections in the order in which they were selected
 | |
|   inline wxList& GetSelectionList() const { return (wxList&) m_selections; }
 | |
| 
 | |
|   // Adds or removes shape from m_selections
 | |
|   void SelectShape(wxShape* shape, bool select);
 | |
| 
 | |
|   // Apply point size to current shapes
 | |
|   void ApplyPointSize(int pointSize);
 | |
| 
 | |
|   // Make the point size combobox reflect this
 | |
|   void ReflectPointSize(int pointSize);
 | |
| 
 | |
|   // Make the arrow toggle button reflect the state of the line
 | |
|   void ReflectArrowState(wxLineShape* lineShape);
 | |
| 
 | |
|   // Do a cut operation for the given list of shapes
 | |
|   void DoCut(wxList& shapes);
 | |
| 
 | |
|   // Do a general command
 | |
|   void DoCmd(wxList& shapes, wxList& oldShapes, int cmd, const wxString& op);
 | |
| 
 | |
|   // Select or deselect all
 | |
|   void SelectAll(bool select = TRUE);
 | |
| 
 | |
| // Event handlers
 | |
|   void OnCut(wxCommandEvent& event);
 | |
|   void OnCopy(wxCommandEvent& event);
 | |
|   void OnPaste(wxCommandEvent& event);
 | |
|   void OnDuplicate(wxCommandEvent& event);
 | |
|   void OnClear(wxCommandEvent& event);
 | |
|   void OnChangeBackgroundColour(wxCommandEvent& event);
 | |
|   void OnEditProperties(wxCommandEvent& event);
 | |
|   void OnPointSizeComboSel(wxCommandEvent& event);
 | |
|   void OnPointSizeComboText(wxCommandEvent& event);
 | |
|   void OnToggleArrowTool(wxCommandEvent& event);
 | |
|   void OnZoomSel(wxCommandEvent& event);
 | |
|   void OnAlign(wxCommandEvent& event);
 | |
|   void OnNewLinePoint(wxCommandEvent& event);
 | |
|   void OnCutLinePoint(wxCommandEvent& event);
 | |
|   void OnStraightenLines(wxCommandEvent& event);
 | |
| 
 | |
| // UI update handles
 | |
|   void OnToggleArrowToolUpdate(wxUpdateUIEvent& event);
 | |
|   void OnEditPropertiesUpdate(wxUpdateUIEvent& event);
 | |
|   void OnCutUpdate(wxUpdateUIEvent& event);
 | |
|   void OnClearUpdate(wxUpdateUIEvent& event);
 | |
|   void OnCopyUpdate(wxUpdateUIEvent& event);
 | |
|   void OnPasteUpdate(wxUpdateUIEvent& event);
 | |
|   void OnDuplicateUpdate(wxUpdateUIEvent& event);
 | |
|   void OnAlignUpdate(wxUpdateUIEvent& event);
 | |
|   void OnNewLinePointUpdate(wxUpdateUIEvent& event);
 | |
|   void OnCutLinePointUpdate(wxUpdateUIEvent& event);
 | |
|   void OnStraightenLinesUpdate(wxUpdateUIEvent& event);
 | |
|   void OnUndoUpdate(wxUpdateUIEvent& event);
 | |
|   void OnRedoUpdate(wxUpdateUIEvent& event);
 | |
| 
 | |
| DECLARE_EVENT_TABLE()
 | |
| 
 | |
| public:
 | |
|   wxFrame*      frame;
 | |
|   csCanvas*     canvas;
 | |
|   wxList        m_selections;
 | |
| };
 | |
| 
 | |
| #endif
 | |
|     // _STUDIO_VIEW_H_
 |