2000-07-25 14:47:21 -04:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// 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"
|
2000-07-26 08:40:49 -04:00
|
|
|
#include "wx/treectrl.h"
|
|
|
|
#include "wx/imaglist.h"
|
|
|
|
#include "wx/listctrl.h"
|
2000-07-25 14:47:21 -04:00
|
|
|
|
2000-07-27 05:35:16 -04:00
|
|
|
class WXDLLEXPORT wxXmlNode;
|
|
|
|
class WXDLLEXPORT wxTreeCtrl;
|
|
|
|
class WXDLLEXPORT wxScrolledWindow;
|
|
|
|
class WXDLLEXPORT wxSplitterWindow;
|
2000-07-25 14:47:21 -04:00
|
|
|
class NodeHandler;
|
2000-07-27 05:35:16 -04:00
|
|
|
class WXDLLEXPORT wxXmlNode;
|
|
|
|
class WXDLLEXPORT wxXmlDocument;
|
2000-07-25 14:47:21 -04:00
|
|
|
class EditorTreeCtrl;
|
2000-07-27 05:35:16 -04:00
|
|
|
class WXDLLEXPORT wxTreeCtrl;
|
|
|
|
class WXDLLEXPORT wxListCtrl;
|
|
|
|
class WXDLLEXPORT wxTreeItemId;
|
|
|
|
class WXDLLEXPORT wxImageList;
|
|
|
|
class WXDLLEXPORT wxTreeEvent;
|
|
|
|
class WXDLLEXPORT wxListEvent;
|
2000-07-25 14:47:21 -04:00
|
|
|
|
|
|
|
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;
|
2000-08-06 12:51:32 -04:00
|
|
|
|
|
|
|
wxXmlNode *m_Clipboard;
|
2000-07-25 14:47:21 -04:00
|
|
|
|
|
|
|
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);
|
2000-08-06 12:51:32 -04:00
|
|
|
void OnClipboardAction(wxCommandEvent& event);
|
|
|
|
|
|
|
|
void DeleteSelectedNode();
|
2000-07-25 14:47:21 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|