1 /*  $Id: annotate_dialog.hpp 103491 2007-05-04 17:18:18Z kazimird $
2 * ===========================================================================
3 *
4 *                            PUBLIC DOMAIN NOTICE
5 *               National Center for Biotechnology Information
6 *
7 *  This software/database is a "United States Government Work" under the
8 *  terms of the United States Copyright Act.  It was written as part of
9 *  the author's official duties as a United States Government employee and
10 *  thus cannot be copyrighted.  This software/database is freely available
11 *  to the public for use. The National Library of Medicine and the U.S.
12 *  Government have not placed any restriction on its use or reproduction.
13 *
14 *  Although all reasonable efforts have been taken to ensure the accuracy
15 *  and reliability of the software and data, the NLM and the U.S.
16 *  Government do not and cannot warrant the performance or results that
17 *  may be obtained by using this software or data. The NLM and the U.S.
18 *  Government disclaim all warranties, express or implied, including
19 *  warranties of performance, merchantability or fitness for any particular
20 *  purpose.
21 *
22 *  Please cite the author in any work or product based on this material.
23 *
24 * ===========================================================================
25 *
26 * Authors:  Paul Thiessen
27 *
28 * File Description:
29 *      dialog for user annotations
30 *
31 * ===========================================================================
32 */
33 
34 #ifndef CN3D_ANNOTATE_DIALOG__HPP
35 #define CN3D_ANNOTATE_DIALOG__HPP
36 
37 #include <corelib/ncbistd.hpp>
38 #include <corelib/ncbistl.hpp>
39 
40 #ifdef __WXMSW__
41 #include <windows.h>
42 #include <wx/msw/winundef.h>
43 #endif
44 #include <wx/wx.h>
45 
46 #include <map>
47 #include <vector>
48 
49 #include "style_manager.hpp"
50 
51 
52 BEGIN_SCOPE(Cn3D)
53 
54 class StructureSet;
55 class MoleculeIdentifier;
56 
57 class AnnotateDialog : public wxDialog
58 {
59 public:
60     AnnotateDialog(wxWindow *parent, StyleManager *manager, const StructureSet *set);
61 
62 private:
63 
64     StyleManager *styleManager;
65     const StructureSet *structureSet;
66 
67     typedef std::map < const MoleculeIdentifier * , std::vector < bool > > ResidueMap;
68     ResidueMap highlightedResidues;
HighlightsPresent(void) const69     bool HighlightsPresent(void) const { return (highlightedResidues.size() > 0); }
70 
71     // event callbacks
72     void OnCloseWindow(wxCloseEvent& event);
73     void OnButton(wxCommandEvent& event);
74     void OnSelection(wxCommandEvent& event);
75 
76     // GUI functions
77     void ResetListBoxes(void);
78     void SetButtonStates(void);
79 
80     // action functions
81     void NewAnnotation(void);
82     void EditAnnotation(void);
83     void MoveAnnotation(void);
84     void DeleteAnnotation(void);
85 
86     DECLARE_EVENT_TABLE()
87 };
88 
89 class AnnotationEditorDialog : public wxDialog
90 {
91 public:
92     AnnotationEditorDialog(wxWindow *parent,
93         StyleSettings *settings, const StructureSet *set,
94         const StyleManager::UserAnnotation& initialText);
95 
96 private:
97 
98     StyleSettings *styleSettings;
99     const StructureSet *structureSet;
100 
101     // event callbacks
102     void OnCloseWindow(wxCloseEvent& event);
103     void OnButton(wxCommandEvent& event);
104 
105     DECLARE_EVENT_TABLE()
106 };
107 
108 END_SCOPE(Cn3D)
109 
110 #endif // CN3D_ANNOTATE_DIALOG__HPP
111