ab7ce33c56
GNU compiler included with Mac OS X 10.2 (Jaguar) as well as August Developer Tools update contain a bug concerning #pragma interface handling that can only be worked around by not using them (and they are not necessary anyways) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@17039 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
114 lines
2.9 KiB
C++
114 lines
2.9 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Purpose: XML resources editor
|
|
// Author: Vaclav Slavik
|
|
// Created: 2000/05/05
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) 2000 Vaclav Slavik
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#if defined(__GNUG__) && !defined(__APPLE__)
|
|
#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 wxXmlRcEditDocument : public wxXmlDocument
|
|
{
|
|
// Helper functions for Upgrade()
|
|
void UpgradeNodeValue(wxXmlNode *node);
|
|
void UpgradeNode(wxXmlNode *node);
|
|
|
|
public:
|
|
// Upgrades older versions
|
|
void Upgrade();
|
|
|
|
};
|
|
|
|
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);
|
|
wxString GetFileName() { return m_FileName; }
|
|
|
|
void RefreshTree();
|
|
void RefreshTitle();
|
|
bool SelectNode(wxXmlNode *node, wxTreeItemId *root = NULL);
|
|
|
|
wxTreeItemId CreateTreeNode(wxTreeCtrl *treectrl, wxTreeItemId parent, wxXmlNode *node);
|
|
|
|
void NotifyChanged(int change_type);
|
|
|
|
static EditorFrame *Get() { return ms_Instance; }
|
|
|
|
private:
|
|
static EditorFrame *ms_Instance;
|
|
|
|
wxTreeCtrl *m_TreeCtrl;
|
|
|
|
wxXmlNode *m_SelectedNode;
|
|
|
|
wxXmlNode *m_Clipboard;
|
|
|
|
wxString m_FileName;
|
|
wxXmlRcEditDocument *m_Resource;
|
|
|
|
bool m_Modified;
|
|
|
|
bool AskToSave();
|
|
void DeleteSelectedNode();
|
|
|
|
DECLARE_EVENT_TABLE()
|
|
void OnTreeSel(wxTreeEvent& event);
|
|
void OnToolbar(wxCommandEvent& event);
|
|
void OnNew(wxCommandEvent& event);
|
|
void OnNewNode(wxCommandEvent& event);
|
|
void OnRightClickTree(wxPoint pos);
|
|
void OnClipboardAction(wxCommandEvent& event);
|
|
void OnCloseWindow(wxCloseEvent&);
|
|
};
|
|
|
|
|
|
#endif
|