~s-cecilio/lenmus/v5.3

« back to all changes in this revision

Viewing changes to src/mdi/DocViewMDI.h

  • Committer: cecilios
  • Date: 2011-06-12 17:25:18 UTC
  • Revision ID: svn-v4:2587a929-2f0e-0410-ae78-fe6f687d5efe:branches/TRY-5.0:687
Initial update for v5.0 first working core using lomse

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
//--------------------------------------------------------------------------------------
2
 
//    LenMus Phonascus: The teacher of music
3
 
//    Copyright (c) 2002-2010 LenMus project
4
 
//
5
 
//    This file is derived from file src/docmdi.cpp from wxWidgets 2.7.1 project.
6
 
//    Author:       Julian Smart
7
 
//    Copyright (c) Julian Smart
8
 
// 
9
 
//    Modified by:
10
 
//        Cecilio Salmeron
11
 
//
12
 
//    This program is free software; you can redistribute it and/or modify it under the 
13
 
//    terms of the GNU General Public License as published by the Free Software Foundation,
14
 
//    either version 3 of the License, or (at your option) any later version.
15
 
//
16
 
//    This program is distributed in the hope that it will be useful, but WITHOUT ANY 
17
 
//    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
18
 
//    PARTICULAR PURPOSE.  See the GNU General Public License for more details.
19
 
//
20
 
//    You should have received a copy of the GNU General Public License along with this 
21
 
//    program. If not, see <http://www.gnu.org/licenses/>. 
22
 
//
23
 
//    For any comment, suggestion or feature request, please contact the manager of 
24
 
//    the project at cecilios@users.sourceforge.net
25
 
//
26
 
//-------------------------------------------------------------------------------------
27
 
#ifndef __LM_DOCVIEWMDI_H__
28
 
#define __LM_DOCVIEWMDI_H__
29
 
 
30
 
#include <wx/defs.h>
31
 
#include <wx/docview.h>
32
 
 
33
 
#include "ChildFrame.h"
34
 
#include "ParentFrame.h"
35
 
#include "ClientWindow.h"
36
 
 
37
 
#include <list>
38
 
 
39
 
#include "../score/defs.h"     //access to lmUSE_LIBRARY_MVC
40
 
#if lmUSE_LIBRARY_MVC
41
 
    #include "lomse_mvc_builder.h"
42
 
    using namespace lomse;
43
 
#endif
44
 
 
45
 
 
46
 
//------------------------------------------------------------------------------------------------
47
 
// lmDocManager 
48
 
//------------------------------------------------------------------------------------------------
49
 
class lmEditorMode;
50
 
class lmScore;
51
 
class lmDocument;
52
 
 
53
 
class lmDocManager : public wxDocManager
54
 
{
55
 
public:
56
 
    lmDocManager(long flags = wxDEFAULT_DOCMAN_FLAGS, bool initialize = true);
57
 
    ~lmDocManager();
58
 
 
59
 
    //overrides
60
 
    wxDocument* CreateDocument(const wxString& path, long flags);
61
 
 
62
 
 
63
 
    //specific methods
64
 
 
65
 
    void ImportFile(wxString& sPath);
66
 
    void OpenFile(wxString& sPath, bool fAsNew);
67
 
    void OpenDocument(lmEditorMode* pMode, lmScore* pScore);
68
 
 
69
 
    //file history
70
 
    void LoadRecentFiles(wxConfigBase* pConfig, const wxString& sKeyRoot);
71
 
    void SaveRecentFiles();
72
 
    void FileHistoryUsesMenu(wxMenu* pMenu);
73
 
    void AddToHistory(const wxString& sFileWithPath);
74
 
    wxString GetFromHistory(int iEntry);
75
 
    inline wxFileHistory* GetFileHistory() { return &m_RecentFiles; }
76
 
    inline int NumFilesInHistory() { return m_RecentFiles.GetCount(); }
77
 
 
78
 
 
79
 
#if lmUSE_LIBRARY_MVC
80
 
 
81
 
    void close_document(Document* pDoc);
82
 
    inline MvcCollection* get_mvc_collection() { return &m_docviews; }
83
 
 
84
 
#endif
85
 
 
86
 
protected:
87
 
    lmDocument* DoOpenDocument(const wxString& path, long flags, lmScore* pScore=NULL);
88
 
 
89
 
    wxFileHistory       m_RecentFiles;     //list of rencently open files 
90
 
    wxString            m_sConfigKey;       //key to load/save history
91
 
    wxConfigBase*       m_pConfig;          //config object to load/save config
92
 
 
93
 
#if lmUSE_LIBRARY_MVC
94
 
    MvcCollection       m_docviews;
95
 
    MvcBuilder*         m_pBuilder;
96
 
#endif
97
 
};
98
 
 
99
 
 
100
 
 
101
 
//------------------------------------------------------------------------------------------------
102
 
// lmDocTDIParentFrame: top window for a Tabbed Document Interface
103
 
//------------------------------------------------------------------------------------------------
104
 
class lmDocTDIParentFrame: public lmTDIParentFrame
105
 
{
106
 
public:
107
 
    lmDocTDIParentFrame();
108
 
    lmDocTDIParentFrame(lmDocManager* pDocManager, wxFrame* pParent, wxWindowID id,
109
 
        const wxString& title, const wxPoint& pos = wxDefaultPosition,
110
 
        const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxT("frame"));
111
 
 
112
 
    bool Create(lmDocManager* pDocManager, wxFrame* pParent, wxWindowID id,
113
 
        const wxString& title, const wxPoint& pos = wxDefaultPosition,
114
 
        const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxT("frame"));
115
 
 
116
 
    // Extend event processing to search the document manager's event table
117
 
    virtual bool ProcessEvent(wxEvent& event);
118
 
 
119
 
    lmDocManager* GetDocumentManager(void) const { return m_pDocManager; }
120
 
 
121
 
    void OnExit(wxCommandEvent& event);
122
 
    void OnMRUFile(wxCommandEvent& event);
123
 
    void OnCloseWindow(wxCloseEvent& event);
124
 
 
125
 
 
126
 
 
127
 
protected:
128
 
    void Init();
129
 
 
130
 
    lmDocManager*   m_pDocManager;
131
 
 
132
 
private:
133
 
    DECLARE_CLASS(lmDocTDIParentFrame)
134
 
    DECLARE_EVENT_TABLE()
135
 
    DECLARE_NO_COPY_CLASS(lmDocTDIParentFrame)
136
 
};
137
 
 
138
 
 
139
 
 
140
 
//------------------------------------------------------------------------------------------------
141
 
// lmDocTDIChildFrame 
142
 
//------------------------------------------------------------------------------------------------
143
 
class lmDocTDIChildFrame: public lmTDIChildFrame
144
 
{
145
 
public:
146
 
    lmDocTDIChildFrame();
147
 
    lmDocTDIChildFrame(wxDocument *doc, wxView *view, lmTDIParentFrame *frame, wxWindowID id,
148
 
        const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
149
 
        long type = wxDEFAULT_FRAME_STYLE, const wxString& name = wxT("frame"));
150
 
    virtual ~lmDocTDIChildFrame();
151
 
 
152
 
    bool Create(wxDocument *doc,
153
 
                wxView *view,
154
 
                lmTDIParentFrame *frame,
155
 
                wxWindowID id,
156
 
                const wxString& title,
157
 
                const wxPoint& pos = wxDefaultPosition,
158
 
                const wxSize& size = wxDefaultSize,
159
 
                long type = wxDEFAULT_FRAME_STYLE,
160
 
                const wxString& name = wxFrameNameStr);
161
 
 
162
 
    // Extend event processing to search the view's event table
163
 
    virtual bool ProcessEvent(wxEvent& event);
164
 
 
165
 
    void OnActivate(wxActivateEvent& event);
166
 
    void OnCloseWindow(wxCloseEvent& event);
167
 
 
168
 
    inline wxDocument *GetDocument() const { return m_childDocument; }
169
 
    inline wxView *GetView(void) const { return m_childView; }
170
 
    inline void SetDocument(wxDocument *doc) { m_childDocument = doc; }
171
 
    inline void SetView(wxView *view) { m_childView = view; }
172
 
    bool Destroy() { m_childView = (wxView *)NULL; return lmTDIChildFrame::Destroy(); }
173
 
 
174
 
protected:
175
 
    void Init();
176
 
    wxDocument*       m_childDocument;
177
 
    wxView*           m_childView;
178
 
 
179
 
private:
180
 
    DECLARE_EVENT_TABLE()
181
 
    DECLARE_CLASS(lmDocTDIChildFrame)
182
 
    DECLARE_NO_COPY_CLASS(lmDocTDIChildFrame)
183
 
};
184
 
 
185
 
#endif      // __LM_DOCVIEWMDI_H__
186