OSDN Git Service

The (experimental) command line version does not compile; empty MainView_resizeToFit...
[molby/Molby.git] / wxSources / MyDocument.h
1 /*
2  *  MyDocument.h
3  *  Molby
4  *
5  *  Created by Toshi Nagata on 08/10/24.
6  *  Copyright 2008 Toshi Nagata. All rights reserved.
7  *
8  This program is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation version 2 of the License.
11  
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  GNU General Public License for more details.
16  */
17
18 #ifndef __MyDocument_h__
19 #define __MyDocument_h__
20
21 #include "wx/docview.h"
22 #include "wx/cmdproc.h"
23
24 #include "../MolLib/MolLib.h"
25
26 /*  Custom Event for Document handling  */
27 extern const wxEventType MyDocumentEvent;
28 enum {
29         MyDocumentEvent_willNeedCleanUndoStack = 1,
30         MyDocumentEvent_documentModified,
31         MyDocumentEvent_scriptMenuModified,
32         MyDocumentEvent_updateDisplay,
33         MyDocumentEvent_insertFrameFromMD,
34         MyDocumentEvent_threadTerminated
35 };
36
37 class MyDocument: public wxDocument
38 {
39 public:
40         Molecule *mol;
41
42         MyDocument();
43         virtual ~MyDocument();
44
45         void SetMolecule(Molecule *mol);
46         Molecule *GetMolecule() { return mol; }
47
48         //  For "register-undo" based undo/redo mechanism
49         bool isUndoEnabled;
50         bool isUndoing;
51         bool isModifyNotificationSent;
52
53         wxCommand *currentCommand;
54         MolAction **undoStack;
55         int countUndoStack;
56
57         int undoGroupLevel;
58         bool isCleanUndoStackRequested;
59
60         bool hasFile;  /*  wxWidgets does not maintain this info for us  */
61
62         int subThreadKind;  /*  0: none, 1: MM/MD (mutex is in Molecule structure)  */
63         
64         MainView        *GetMainView() { return (mol != NULL ? mol->mview : NULL); }
65         void    SetIsUndoing(bool flag) { isUndoing = flag; }
66         void    SetCurrentCommand(wxCommand *command) { currentCommand = command; }
67         void    PushUndoAction(MolAction *action);
68         void    CleanUndoStack(bool shouldRegister = true);
69         bool    IsUndoEnabled() { return isUndoEnabled; }
70         void    SetUndoEnabled(bool flag);      
71         void    UpdateModifyFlag();
72         void    BeginUndoGrouping();
73         void    EndUndoGrouping();
74
75         virtual bool Close();
76         
77         void    OnNeedCleanUndoStack(wxCommandEvent& event);
78
79         void    OnDocumentModified(wxCommandEvent& event);
80         void    OnImport(wxCommandEvent& event);
81         void    OnExport(wxCommandEvent& event);
82
83         void    OnCopy(wxCommandEvent& event);
84         void    OnCut(wxCommandEvent& event);
85         void    OnPaste(wxCommandEvent& event);
86         void    OnDelete(wxCommandEvent& event);
87
88         void    OnCreateNewAtom(wxCommandEvent &event);
89         void    OnCreateNewParameter(wxCommandEvent &event);
90         
91         void    OnSelectAll(wxCommandEvent& event);
92         void    OnSelectFragment(wxCommandEvent& event);
93         void    OnSelectReverse(wxCommandEvent& event);
94
95         void    OnAddHydrogen(wxCommandEvent& event);
96
97         void    OnFitToScreen(wxCommandEvent& event);
98         void    OnCenterSelection(wxCommandEvent& event);
99         void    OnShowMenu(wxCommandEvent& event);
100         void    OnToggleLineMode(wxCommandEvent &event);
101         void    OnShowGraphite(wxCommandEvent &event);
102
103         void    OnShowAllAtoms(wxCommandEvent &event);
104         void    OnHideSelected(wxCommandEvent &event);
105         void    OnHideUnselected(wxCommandEvent &event);
106         void    OnHideReverse(wxCommandEvent &event);
107         
108         void    DoMDOrMinimize(int minimize);
109         void    OnMolecularDynamics(wxCommandEvent &event);
110         void    OnMinimize(wxCommandEvent &event);
111         void    OnStopMDRun(wxCommandEvent &event);
112         void    OnDefinePeriodicBox(wxCommandEvent &event);
113         void    OnShowPeriodicImage(wxCommandEvent &event);
114         void    OnPressureControl(wxCommandEvent &event);
115         void    OnDefineSymmetry(wxCommandEvent &event);
116         void    OnExpandBySymmetry(wxCommandEvent &event);
117
118         void    OnInvokeResp(wxCommandEvent &event);
119         void    OnInvokeAntechamber(wxCommandEvent &event);
120         void    OnCreateSanderInput(wxCommandEvent &event);
121         void    OnImportAmberFrcmod(wxCommandEvent &event);
122
123         void    OnCreateGamessInput(wxCommandEvent &event);
124         void    OnCreateMOCube(wxCommandEvent &event);
125         
126         void    OnInsertFrameFromMD(wxCommandEvent &event);
127         void    OnUpdateDisplay(wxCommandEvent &event);
128         void    OnSubThreadTerminated(wxCommandEvent &event);
129         
130         void    OnUpdateUI(wxUpdateUIEvent &event);
131
132  protected:
133         virtual bool DoSaveDocument(const wxString& file);
134         virtual bool DoOpenDocument(const wxString& file);
135
136  private:
137         DECLARE_DYNAMIC_CLASS(MyDocument)
138         DECLARE_EVENT_TABLE()
139 };
140
141 MyDocument *MyDocumentFromMolecule(Molecule *mp);
142
143 #endif