Files
wxWidgets/utils/configtool/src/configtoolview.h
2004-06-04 17:58:56 +00:00

275 lines
7.3 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: configtoolview.h
// Purpose: View class
// Author: Julian Smart
// Modified by:
// Created: 2003-06-04
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence:
/////////////////////////////////////////////////////////////////////////////
#ifndef _CT_CONFIGTOOLVIEW_H_
#define _CT_CONFIGTOOLVIEW_H_
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma interface "configtoolview.cpp"
#endif
#include "wx/docview.h"
#include "wx/treectrl.h"
#include "wx/fdrepdlg.h"
#include "configitem.h"
class ctConfigTreeCtrl;
class WXDLLEXPORT wxNotebookEvent;
/*
* ctConfigToolView
*/
class ctConfigItem;
class ctConfigToolView: public wxView
{
DECLARE_DYNAMIC_CLASS(ctConfigToolView)
public:
ctConfigToolView();
~ctConfigToolView() {};
//// Overrides
bool OnCreate(wxDocument *doc, long flags);
void OnDraw(wxDC *dc);
void OnUpdate(wxView *sender, wxObject *hint = (wxObject *) NULL);
bool OnClose(bool deleteWindow = true);
void OnChangeFilename();
//// Operations
/// Gets the tree item in sync with the item.
void SyncItem(ctConfigTreeCtrl* treeControl, ctConfigItem* item);
/// Add item and its children to the tree
void AddItems(ctConfigTreeCtrl* treeControl, ctConfigItem* item);
/// Clicked an icon
void OnIconLeftDown(ctConfigTreeCtrl* treeControl, ctConfigItem* item);
/// Add an item
void AddItem(ctConfigType type, const wxString& msg);
/// Regenerate setup.h and configure command
void RegenerateSetup();
//// Accessors
/// Returns the selected config item, if any.
ctConfigItem* GetSelection();
//// Event handlers
/// General disabler
void OnUpdateDisable(wxUpdateUIEvent& event);
/// Enable add item menu items
void OnUpdateAddItem(wxUpdateUIEvent& event);
/// Add a checkbox item
void OnAddCheckBoxItem(wxCommandEvent& event);
/// Add a radiobutton item
void OnAddRadioButtonItem(wxCommandEvent& event);
/// Add a group item
void OnAddGroupItem(wxCommandEvent& event);
/// Add a check group item
void OnAddCheckGroupItem(wxCommandEvent& event);
/// Add a radio group item
void OnAddRadioGroupItem(wxCommandEvent& event);
/// Add a string item
void OnAddStringItem(wxCommandEvent& event);
/// Delete an item
void OnDeleteItem(wxCommandEvent& event);
/// Rename an item
void OnRenameItem(wxCommandEvent& event);
/// Copy an item to the clipboard
void OnCopy(wxCommandEvent& event);
/// Copy an item to the clipboard and cut the item
void OnCut(wxCommandEvent& event);
/// Paste an item from the clipboard to the tree
void OnPaste(wxCommandEvent& event);
/// Item help
void OnItemHelp(wxCommandEvent& event);
/// Update for copy command
void OnUpdateCopy(wxUpdateUIEvent& event);
/// Update for cut
void OnUpdateCut(wxUpdateUIEvent& event);
/// Update for paste
void OnUpdatePaste(wxUpdateUIEvent& event);
/// Update for item help
void OnUpdateItemHelp(wxUpdateUIEvent& event);
// Context menu events
/// Copy an item to the clipboard
void OnContextCopy(wxCommandEvent& event);
/// Copy an item to the clipboard and cut the item
void OnContextCut(wxCommandEvent& event);
/// Paste an item from the clipboard to the tree
void OnContextPasteBefore(wxCommandEvent& event);
/// Paste an item from the clipboard to the tree
void OnContextPasteAfter(wxCommandEvent& event);
/// Paste an item from the clipboard to the tree
void OnContextPasteAsChild(wxCommandEvent& event);
/// Copy an item to the clipboard
void OnUpdateContextCopy(wxUpdateUIEvent& event);
/// Copy an item to the clipboard and cut the item
void OnUpdateContextCut(wxUpdateUIEvent& event);
/// Paste an item from the clipboard to the tree
void OnUpdateContextPasteBefore(wxUpdateUIEvent& event);
/// Paste an item from the clipboard to the tree
void OnUpdateContextPasteAfter(wxUpdateUIEvent& event);
/// Paste an item from the clipboard to the tree
void OnUpdateContextPasteAsChild(wxUpdateUIEvent& event);
// Custom property events
/// Add a custom property
void OnAddCustomProperty(wxCommandEvent& event);
/// Edit a custom property
void OnEditCustomProperty(wxCommandEvent& event);
/// Delete a custom property
void OnDeleteCustomProperty(wxCommandEvent& event);
/// Add a custom property: update event
void OnUpdateAddCustomProperty(wxUpdateUIEvent& event);
/// Edit a custom property: update event
void OnUpdateEditCustomProperty(wxUpdateUIEvent& event);
/// Delete a custom property: update event
void OnUpdateDeleteCustomProperty(wxUpdateUIEvent& event);
// Notebook events
/// Regenerate if selected a tab
void OnTabSelect(wxNotebookEvent& event);
/// Saving setup file
void OnSaveSetupFile(wxCommandEvent& event);
/// Save configure command file
void OnSaveConfigureCommand(wxCommandEvent& event);
/// Saving setup file update handler
void OnUpdateSaveSetupFile(wxUpdateUIEvent& event);
/// Save configure command file update handler
void OnUpdateSaveConfigureCommand(wxUpdateUIEvent& event);
// Find
/// Find text
void OnFind(wxCommandEvent& event);
/// Update find text
void OnUpdateFind(wxUpdateUIEvent& event);
// Go (now: save setup.h or configurewx.sh. later: invoke configure/make)
/// Save default file type
void OnGo(wxCommandEvent& event);
/// Update
void OnUpdateGo(wxUpdateUIEvent& event);
DECLARE_EVENT_TABLE()
protected:
};
/*
* ctConfigToolHint
*
* Hint to pass to UpdateAllViews
*
*/
// Update hint symbols
#define ctNoHint 0
#define ctAllSaved 1
#define ctClear 2
#define ctValueChanged 3
#define ctSelChanged 4
#define ctFilenameChanged 5
#define ctInitialUpdate 6
class ctConfigItem;
class ctConfigToolHint: public wxObject
{
public:
ctConfigToolHint(ctConfigItem* item, int op) { m_item = item; m_op = op; }
ctConfigItem* m_item;
int m_op;
};
/*
* ctFindReplaceDialog
*/
class ctFindReplaceDialog: public wxFindReplaceDialog
{
public:
// constructors and destructors
ctFindReplaceDialog( wxWindow* parent, const wxString& title,
long style = 0 );
void OnFind(wxFindDialogEvent& event);
void OnClose(wxFindDialogEvent& event);
// If wrap is true, go back to the beginning if at the end of the
// document.
bool DoFind(const wxString& textToFind, bool matchCase, bool wholeWord, bool wrap = true);
ctConfigItem* FindNextItem(ctConfigToolDoc* doc,
ctConfigItem* item,
const wxString& text,
bool matchCase,
bool matchWordOnly,
bool wrap,
bool skipFirst);
static wxFindReplaceData sm_findData;
static wxString sm_currentItem; // card name
private:
DECLARE_EVENT_TABLE()
};
#endif
// _CT_CONFIGTOOLVIEW_H_