wxWidgets/contrib/utils/wxrcedit/editor.h

119 lines
3.3 KiB
C
Raw Normal View History

/////////////////////////////////////////////////////////////////////////////
// Purpose: XML resources editor
// Author: Vaclav Slavik
// Created: 2000/05/05
// RCS-ID: $Id$
// Copyright: (c) 2000 Vaclav Slavik
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma interface "editor.h"
#endif
#ifndef _EDITOR_H_
#define _EDITOR_H_
#include "wx/frame.h"
#include "wx/treectrl.h"
#include "wx/imaglist.h"
#include "wx/listctrl.h"
class WXDLLEXPORT wxXmlNode;
class WXDLLEXPORT wxTreeCtrl;
class WXDLLEXPORT wxScrolledWindow;
class WXDLLEXPORT wxSplitterWindow;
class NodeHandler;
class WXDLLEXPORT wxXmlNode;
class WXDLLEXPORT wxXmlDocument;
class EditorTreeCtrl;
class WXDLLEXPORT wxTreeCtrl;
class WXDLLEXPORT wxListCtrl;
class WXDLLEXPORT wxTreeItemId;
class WXDLLEXPORT wxImageList;
class WXDLLEXPORT wxTreeEvent;
class WXDLLEXPORT wxListEvent;
enum ChangeType
{
CHANGED_NOTHING = 0,
CHANGED_TREE = 1,
CHANGED_TREE_SELECTED = 2,
CHANGED_TREE_SELECTED_ICON = 4,
CHANGED_PROPS = 8,
CHANGED_PROPS_PANEL = 16,
CHANGED_EVERYTHING = CHANGED_TREE | CHANGED_PROPS | CHANGED_PROPS_PANEL,
};
class EditorFrame : public wxFrame
{
public:
friend class EditorTreeCtrl;
EditorFrame(wxFrame *parent, const wxString& filename);
~EditorFrame();
void LoadFile(const wxString& filename);
void NewFile();
void SaveFile(const wxString& filename);
void RefreshTree();
void RefreshPreview(wxXmlNode *node);
void RefreshProps(wxXmlNode *node);
void RefreshPropsEdit();
bool SelectNode(wxXmlNode *node, wxTreeItemId *root = NULL);
wxTreeItemId CreateTreeNode(wxTreeCtrl *treectrl, wxTreeItemId parent, wxXmlNode *node);
void CreatePropsList(wxListCtrl *listctrl, wxXmlNode *node);
void NotifyChanged(int change_type);
void RegisterHandlers(const wxString& dir);
NodeHandler *FindHandler(wxXmlNode *node);
static EditorFrame *Get() { return ms_Instance; }
private:
static EditorFrame *ms_Instance;
wxTreeCtrl *m_TreeCtrl;
wxTextCtrl *m_XMLIDCtrl;
wxImageList *m_ImgList, *m_ImgListProp;
wxPanel *m_PropsPanel;
wxScrolledWindow *m_PropsEditPanel;
wxSplitterWindow *m_Splitter, *m_Splitter2;
wxListCtrl *m_PropsList;
int m_SelectedProp;
wxList m_Handlers;
wxXmlNode *m_SelectedNode;
wxXmlNode *m_Clipboard;
wxString m_FileName;
wxXmlDocument *m_Resource;
wxWindow *m_Preview;
DECLARE_EVENT_TABLE()
void OnTreeSel(wxTreeEvent& event);
void OnToolbar(wxCommandEvent& event);
void OnNew(wxCommandEvent& event);
void OnXMLIDEdit(wxCommandEvent& event);
void OnXMLIDPick(wxCommandEvent& event);
void OnEditCode(wxCommandEvent& event);
void OnClearProp(wxCommandEvent& event);
void OnPropSel(wxListEvent& event);
void OnNewNode(wxCommandEvent& event);
void OnRightClickTree(wxPoint pos);
void OnClipboardAction(wxCommandEvent& event);
void DeleteSelectedNode();
};
#endif