Dialog Editor edits

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@366 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
1998-07-24 20:44:36 +00:00
parent 63cafd2799
commit 03f68f123b
14 changed files with 686 additions and 383 deletions

View File

@@ -34,6 +34,8 @@ MyApp::MyApp(void)
wxResourceManager *theResourceManager = NULL;
#include "symbtabl.h"
bool MyApp::OnInit(void)
{
theResourceManager = new wxResourceManager;

View File

@@ -37,7 +37,6 @@
#include "reseditr.h"
#include "winprop.h"
#include "editrpal.h"
#include "dlghndlr.h"
#include "edlist.h"
@@ -176,6 +175,9 @@ void wxResourceEditorDialogHandler::OnLeftClick(int x, int y, int keys)
case RESED_RADIOBOX:
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxRadioBox", x, y);
break;
case RESED_RADIOBUTTON:
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxRadioButton", x, y);
break;
case RESED_LISTBOX:
resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxListBox", x, y);
break;
@@ -321,7 +323,8 @@ void wxResourceEditorDialogHandler::OnItemLeftClick(wxControl *item, int x, int
wxResourceManager::GetCurrentResourceManager()->EditWindow(item);
return;
}
/*
// If this is a wxStaticBox and the pointer isn't an arrow, chances
// are that we really meant to place an item on the panel.
// Fake this event.
@@ -330,6 +333,7 @@ void wxResourceEditorDialogHandler::OnItemLeftClick(wxControl *item, int x, int
OnLeftClick(x, y, keys);
return;
}
*/
wxResourceEditorControlHandler *childHandler = (wxResourceEditorControlHandler *)item->GetEventHandler();

View File

@@ -1,266 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: editrpal.cpp
// Purpose: Editor tool palette
// Author: Julian Smart
// Modified by:
// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "editrpal.h"
#endif
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include <ctype.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#if defined(__WXMSW__) && !defined(__GNUWIN32__)
#include <strstrea.h>
#else
#include <strstream.h>
#endif
#include "reseditr.h"
#include "editrpal.h"
#ifdef __X__
#include "bitmaps/frame.xbm"
#include "bitmaps/dialog.xbm"
#include "bitmaps/panel.xbm"
#include "bitmaps/canvas.xbm"
#include "bitmaps/textsw.xbm"
#include "bitmaps/message.xbm"
#include "bitmaps/button.xbm"
#include "bitmaps/check.xbm"
#include "bitmaps/listbox.xbm"
#include "bitmaps/radio.xbm"
#include "bitmaps/choice.xbm"
#include "bitmaps/text.xbm"
#include "bitmaps/mtext.xbm"
#include "bitmaps/slider.xbm"
#include "bitmaps/arrow.xbm"
#include "bitmaps/group.xbm"
#include "bitmaps/gauge.xbm"
#include "bitmaps/scroll.xbm"
#include "bitmaps/picture.xbm"
#include "bitmaps/bmpbuttn.xbm"
#endif
/*
* Object editor tool palette
*
*/
BEGIN_EVENT_TABLE(EditorToolPalette, wxToolBarSimple)
EVT_PAINT(EditorToolPalette::OnPaint)
END_EVENT_TABLE()
EditorToolPalette::EditorToolPalette(wxResourceManager *manager, wxFrame *frame, int x, int y, int w, int h,
long style, int direction, int RowsOrColumns):
TOOLPALETTECLASS(frame, -1, wxPoint(x, y), wxSize(w, h), style, direction, RowsOrColumns)
{
currentlySelected = -1;
resourceManager = manager;
}
bool EditorToolPalette::OnLeftClick(int toolIndex, bool toggled)
{
// BEGIN mutual exclusivity code
if (toggled && (currentlySelected != -1) && (toolIndex != currentlySelected))
ToggleTool(currentlySelected, FALSE);
if (toggled)
currentlySelected = toolIndex;
else if (currentlySelected == toolIndex)
currentlySelected = -1;
// END mutual exclusivity code
/*
if (MainFrame)
{
if (toggled && (toolIndex != PALETTE_ARROW))
MainFrame->canvas->SetCursor(crossCursor);
else
MainFrame->canvas->SetCursor(handCursor);
}
*/
return TRUE;
}
void EditorToolPalette::OnMouseEnter(int toolIndex)
{
if (!resourceManager) return;
wxFrame *managerFrame = resourceManager->GetEditorFrame();
if (toolIndex > -1)
{
switch (toolIndex)
{
case PALETTE_FRAME:
managerFrame->SetStatusText("wxFrame");
break;
case PALETTE_DIALOG_BOX:
managerFrame->SetStatusText("wxDialog");
break;
case PALETTE_PANEL:
managerFrame->SetStatusText("wxPanel");
break;
#if 0
case PALETTE_CANVAS:
managerFrame->SetStatusText("wxCanvas");
break;
case PALETTE_TEXT_WINDOW:
managerFrame->SetStatusText("wxTextWindow");
break;
#endif
case PALETTE_BUTTON:
managerFrame->SetStatusText("wxButton");
break;
case PALETTE_MESSAGE:
managerFrame->SetStatusText("wxStaticText");
break;
case PALETTE_TEXT:
managerFrame->SetStatusText("wxTextCtrl (single-line)");
break;
case PALETTE_MULTITEXT:
managerFrame->SetStatusText("wxTextCtrl (multi-line)");
break;
case PALETTE_CHOICE:
managerFrame->SetStatusText("wxChoice");
break;
case PALETTE_CHECKBOX:
managerFrame->SetStatusText("wxCheckBox");
break;
case PALETTE_RADIOBOX:
managerFrame->SetStatusText("wxRadioBox");
break;
case PALETTE_LISTBOX:
managerFrame->SetStatusText("wxListBox");
break;
case PALETTE_SLIDER:
managerFrame->SetStatusText("wxSlider");
break;
case PALETTE_GROUPBOX:
managerFrame->SetStatusText("wxStaticBox");
break;
case PALETTE_GAUGE:
managerFrame->SetStatusText("wxGauge");
break;
case PALETTE_BITMAP_MESSAGE:
managerFrame->SetStatusText("wxStaticBitmap");
break;
case PALETTE_BITMAP_BUTTON:
managerFrame->SetStatusText("wxBitmapButton");
break;
case PALETTE_SCROLLBAR:
managerFrame->SetStatusText("wxScrollBar");
break;
case PALETTE_ARROW:
managerFrame->SetStatusText("Pointer");
break;
}
}
else managerFrame->SetStatusText("");
}
void EditorToolPalette::OnPaint(wxPaintEvent& event)
{
TOOLPALETTECLASS::OnPaint(event);
wxPaintDC dc(this);
int w, h;
GetSize(&w, &h);
dc.SetPen(wxBLACK_PEN);
dc.SetBrush(wxTRANSPARENT_BRUSH);
dc.DrawLine(0, h-1, w, h-1);
}
EditorToolPalette *wxResourceManager::OnCreatePalette(wxFrame *parent)
{
// Load palette bitmaps
#ifdef __WXMSW__
wxBitmap PaletteMessageBitmap("MESSAGETOOL");
wxBitmap PaletteButtonBitmap("BUTTONTOOL");
wxBitmap PaletteCheckBoxBitmap("CHECKBOXTOOL");
wxBitmap PaletteListBoxBitmap("LISTBOXTOOL");
wxBitmap PaletteRadioBoxBitmap("RADIOBOXTOOL");
wxBitmap PaletteChoiceBitmap("CHOICETOOL");
wxBitmap PaletteTextBitmap("TEXTTOOL");
wxBitmap PaletteMultiTextBitmap("MULTITEXTTOOL");
wxBitmap PaletteSliderBitmap("SLIDERTOOL");
wxBitmap PaletteArrowBitmap("ARROWTOOL");
wxBitmap PaletteGroupBitmap("GROUPTOOL");
wxBitmap PaletteGaugeBitmap("GAUGETOOL");
wxBitmap PalettePictureBitmap("PICTURETOOL");
wxBitmap PaletteBitmapButtonBitmap("BMPBUTTONTOOL");
wxBitmap PaletteScrollbarBitmap("SCROLLBARTOOL");
#endif
#ifdef __X__
wxBitmap PaletteMessageBitmap(message_bits, message_width, message_height);
wxBitmap PaletteButtonBitmap(button_bits, button_width, button_height);
wxBitmap PaletteCheckBoxBitmap(check_bits, check_width, check_height);
wxBitmap PaletteListBoxBitmap(listbox_bits, listbox_width, listbox_height);
wxBitmap PaletteRadioBoxBitmap(radio_bits, radio_width, radio_height);
wxBitmap PaletteChoiceBitmap(choice_bits, choice_width, choice_height);
wxBitmap PaletteTextBitmap(text_bits, text_width, text_height);
wxBitmap PaletteMultiTextBitmap(mtext_bits, mtext_width, mtext_height);
wxBitmap PaletteSliderBitmap(slider_bits, slider_width, slider_height);
wxBitmap PaletteArrowBitmap(arrow_bits, arrow_width, arrow_height);
wxBitmap PaletteGroupBitmap(group_bits, group_width, group_height);
wxBitmap PaletteGaugeBitmap(gauge_bits, gauge_width, gauge_height);
wxBitmap PalettePictureBitmap(picture_bits, picture_width, picture_height);
wxBitmap PaletteBitmapButtonBitmap(bmpbuttn_bits, bmpbuttn_width, bmpbuttn_height);
wxBitmap PaletteScrollbarBitmap(scroll_bits, scroll_width, scroll_height);
#endif
EditorToolPalette *palette = new EditorToolPalette(this, parent, 0, 0, -1, -1, wxNO_BORDER, // wxTB_3DBUTTONS,
wxVERTICAL, 1);
palette->SetMargins(2, 2);
/*
#ifdef __WXMSW__
if (palette->IsKindOf(CLASSINFO(wxToolBarMSW)))
((wxToolBarMSW *)palette)->SetDefaultSize(22, 22);
#endif
*/
palette->AddTool(PALETTE_ARROW, PaletteArrowBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "Pointer");
palette->AddTool(PALETTE_MESSAGE, PaletteMessageBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "wxStaticText");
palette->AddTool(PALETTE_BITMAP_MESSAGE, PalettePictureBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "wxStaticBitmap");
palette->AddTool(PALETTE_BUTTON, PaletteButtonBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "Button");
palette->AddTool(PALETTE_BITMAP_BUTTON, PaletteBitmapButtonBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "wxBitmapButton");
palette->AddTool(PALETTE_CHECKBOX, PaletteCheckBoxBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "wxCheckBox");
palette->AddTool(PALETTE_RADIOBOX, PaletteRadioBoxBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "wxRadioBox");
palette->AddTool(PALETTE_LISTBOX, PaletteListBoxBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "wxListBox");
palette->AddTool(PALETTE_CHOICE, PaletteChoiceBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "wxChoice");
palette->AddTool(PALETTE_TEXT, PaletteTextBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "wxTextCtrl (single-line)");
palette->AddTool(PALETTE_MULTITEXT, PaletteMultiTextBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "wxTextCtrl (multi-line)");
palette->AddTool(PALETTE_SLIDER, PaletteSliderBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "wxSlider");
palette->AddTool(PALETTE_GROUPBOX, PaletteGroupBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "wxStaticBox");
palette->AddTool(PALETTE_GAUGE, PaletteGaugeBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "wxGauge");
palette->AddTool(PALETTE_SCROLLBAR, PaletteScrollbarBitmap, (wxBitmap *)NULL, TRUE, 0, -1, NULL, "wxScrollBar");
palette->Layout();
palette->CreateTools();
palette->ToggleTool(PALETTE_ARROW, TRUE);
palette->currentlySelected = PALETTE_ARROW;
return palette;
}

View File

@@ -1,71 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: editrpal.h
// Purpose: Tool palette
// Author: Julian Smart
// Modified by:
// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifndef _EDITRPAL_H_
#define _EDITRPAL_H_
#ifdef __GNUG__
#pragma interface "editrpal.h"
#endif
#include "wx/wx.h"
#include "wx/string.h"
#include "wx/layout.h"
#include "wx/resource.h"
#include "wx/tbarsmpl.h"
#include "proplist.h"
/*
* Object editor tool palette
*
*/
// For some reason, wxButtonBar under Windows 95 cannot be moved to a non-0,0 position!
#define TOOLPALETTECLASS wxToolBarSimple
class EditorToolPalette: public TOOLPALETTECLASS
{
public:
int currentlySelected;
wxResourceManager *resourceManager;
EditorToolPalette(wxResourceManager *manager, wxFrame *frame, int x = 0, int y = 0, int w = -1, int h = -1,
long style = wxNO_BORDER, int direction = wxVERTICAL, int RowsOrColumns = 2);
bool OnLeftClick(int toolIndex, bool toggled);
void OnMouseEnter(int toolIndex);
void OnPaint(wxPaintEvent& event);
DECLARE_EVENT_TABLE()
};
#define PALETTE_FRAME 1
#define PALETTE_DIALOG_BOX 2
#define PALETTE_PANEL 3
#define PALETTE_CANVAS 4
#define PALETTE_TEXT_WINDOW 5
#define PALETTE_MESSAGE 6
#define PALETTE_BUTTON 7
#define PALETTE_CHECKBOX 8
#define PALETTE_LISTBOX 9
#define PALETTE_RADIOBOX 10
#define PALETTE_CHOICE 11
#define PALETTE_TEXT 12
#define PALETTE_MULTITEXT 13
#define PALETTE_SLIDER 14
#define PALETTE_ARROW 15
#define PALETTE_GAUGE 16
#define PALETTE_GROUPBOX 17
#define PALETTE_BITMAP_MESSAGE 18
#define PALETTE_BITMAP_BUTTON 19
#define PALETTE_SCROLLBAR 20
#endif

View File

@@ -38,7 +38,7 @@ DEBUG_FLAGS =
!endif
CPPFLAGS=$(DEBUG_FLAGS) $(OPT) @$(CFG) @$(INCFILE)
OBJECTS = dialoged.obj editrpal.obj reseditr.obj dlghndlr.obj reswrite.obj winprop.obj edtree.obj edlist.obj
OBJECTS = dialoged.obj reseditr.obj dlghndlr.obj reswrite.obj winprop.obj edtree.obj edlist.obj
$(TARGET).exe: wxprop $(INCFILE) $(OBJECTS) $(TARGET).def $(TARGET).res
tlink32 $(LINKFLAGS) @&&!

View File

@@ -14,7 +14,7 @@ WXDIR = ../../..
# this central makefile.
include $(WXDIR)/src/makeg95.env
OBJECTS = $(OBJDIR)/dialoged.$(OBJSUFF) $(OBJDIR)/editrpal.$(OBJSUFF) $(OBJDIR)/reseditr.$(OBJSUFF)\
OBJECTS = $(OBJDIR)/dialoged.$(OBJSUFF) $(OBJDIR)/reseditr.$(OBJSUFF)\
$(OBJDIR)/dlghndlr.$(OBJSUFF) $(OBJDIR)/reswrite.$(OBJSUFF) $(OBJDIR)/winprop.$(OBJSUFF)\
$(OBJDIR)/edlist.$(OBJSUFF) $(OBJDIR)/edtree.$(OBJSUFF)\
$(OBJDIR)/dialoged_resources.$(OBJSUFF)
@@ -40,9 +40,6 @@ dialoged$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB)
$(OBJDIR)/dialoged.$(OBJSUFF): dialoged.$(SRCSUFF)
$(CC) -c $(CPPFLAGS) -o $@ dialoged.$(SRCSUFF)
$(OBJDIR)/editrpal.$(OBJSUFF): winprop.h reseditr.h editrpal.h editrpal.$(SRCSUFF)
$(CC) -c $(CPPFLAGS) -o $@ editrpal.$(SRCSUFF)
$(OBJDIR)/winprop.$(OBJSUFF): winprop.h reseditr.h editrpal.h winprop.$(SRCSUFF)
$(CC) -c $(CPPFLAGS) -o $@ winprop.$(SRCSUFF)

View File

@@ -25,7 +25,8 @@ LOCALDOCDIR=$(WXDIR)\utils\dialoged\docs
PROGRAM=dialoged
OBJECTS = dialoged.obj editrpal.obj reseditr.obj dlghndlr.obj reswrite.obj winprop.obj edtree.obj edlist.obj
OBJECTS = dialoged.obj reseditr.obj dlghndlr.obj reswrite.obj\
winprop.obj edtree.obj edlist.obj symbtabl.obj
all: wxprop dialoged.exe
@@ -47,32 +48,27 @@ $(DUMMYOBJ) $(OBJECTS) $(PROGRAM).res
$(LIBS)
<<
dialoged.obj: winprop.h reseditr.h editrpal.h dialoged.$(SRCSUFF) $(DUMMYOBJ)
dialoged.obj: winprop.h reseditr.h dialoged.$(SRCSUFF) $(DUMMYOBJ)
$(cc) @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
<<
winprop.obj: winprop.h reseditr.h editrpal.h winprop.$(SRCSUFF) $(DUMMYOBJ)
winprop.obj: winprop.h reseditr.h winprop.$(SRCSUFF) $(DUMMYOBJ)
$(cc) @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
<<
editrpal.obj: winprop.h reseditr.h editrpal.h editrpal.$(SRCSUFF) $(DUMMYOBJ)
reswrite.obj: winprop.h reseditr.h reswrite.$(SRCSUFF) $(DUMMYOBJ)
$(cc) @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
<<
reswrite.obj: winprop.h reseditr.h editrpal.h reswrite.$(SRCSUFF) $(DUMMYOBJ)
reseditr.obj: winprop.h reseditr.h reseditr.$(SRCSUFF) $(DUMMYOBJ)
$(cc) @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
<<
reseditr.obj: winprop.h reseditr.h editrpal.h reseditr.$(SRCSUFF) $(DUMMYOBJ)
$(cc) @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
<<
edtree.obj: winprop.h reseditr.h editrpal.h edtree.h edtree.$(SRCSUFF) $(DUMMYOBJ)
edtree.obj: winprop.h reseditr.h edtree.h edtree.$(SRCSUFF) $(DUMMYOBJ)
$(cc) @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
<<
@@ -82,7 +78,12 @@ edlist.obj: winprop.h reseditr.h edlist.h edlist.$(SRCSUFF) $(DUMMYOBJ)
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
<<
dlghndlr.obj: winprop.h reseditr.h editrpal.h dlghndlr.$(SRCSUFF) $(DUMMYOBJ)
dlghndlr.obj: winprop.h reseditr.h dlghndlr.$(SRCSUFF) $(DUMMYOBJ)
$(cc) @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
<<
symbtabl.obj: symbtabl.h symbtabl.$(SRCSUFF) $(DUMMYOBJ)
$(cc) @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
<<

View File

@@ -55,7 +55,6 @@
#include "reseditr.h"
#include "winprop.h"
#include "editrpal.h"
#include "dlghndlr.h"
#include "edtree.h"
#include "edlist.h"
@@ -93,10 +92,10 @@ wxResourceManager::wxResourceManager():
m_popupMenu = NULL;
m_editorResourceTree = NULL;
m_editorControlList = NULL;
m_editorPalette = NULL;
m_nameCounter = 1;
m_modified = FALSE;
m_currentFilename = "";
m_symbolFilename = "";
m_editorToolBar = NULL;
// Default window positions
@@ -228,7 +227,6 @@ bool wxResourceManager::ShowResourceEditor(bool show, wxWindow *parent, const ch
m_editorFrame->SetMenuBar(menuBar);
m_editorToolBar = (EditorToolBar *)OnCreateToolBar(m_editorFrame);
// m_editorPalette = OnCreatePalette(m_editorFrame);
m_editorControlList = new wxResourceEditorControlList(m_editorFrame, IDC_LISTCTRL, wxPoint(0, 0), wxSize(-1, -1));
m_editorResourceTree = new wxResourceEditorProjectTree(m_editorFrame, IDC_TREECTRL, wxPoint(0, 0), wxSize(-1, -1),
wxTR_HAS_BUTTONS);
@@ -245,17 +243,7 @@ bool wxResourceManager::ShowResourceEditor(bool show, wxWindow *parent, const ch
c->width.Unconstrained();
c->height.Absolute(28);
m_editorToolBar->SetConstraints(c);
/*
// Constraints for palette
c = new wxLayoutConstraints;
c->left.SameAs (m_editorFrame, wxLeft, 0);
c->top.SameAs (m_editorToolBar, wxBottom, 0);
c->right.SameAs (m_editorFrame, wxRight, 0);
c->bottom.Unconstrained();
c->width.Unconstrained();
c->height.Absolute(34);
m_editorPalette->SetConstraints(c);
*/
// Constraints for listbox
c = new wxLayoutConstraints;
c->left.SameAs (m_editorFrame, wxLeft, 0);
@@ -397,6 +385,58 @@ bool wxResourceManager::New(bool loadFromFile, const wxString& filename)
SetFrameTitle(m_currentFilename);
UpdateResourceList();
// Construct include filename from this file
m_symbolFilename = m_currentFilename;
if (m_symbolFilename[0] == 'c')
{
}
wxString stringA("123456.45");
wxString stringB("");
stringB = str;
size_t i = 0;
char c = stringB[i];
#if 0
size_t len = stringB.Length();
size_t i = len-1;
while (i > 0)
{
// if (buffer.GetChar(i) == '.')
if (stringB[i] == '.')
{
stringB = stringB.Left(i);
break;
}
i --;
}
#endif
#if 0
size_t len = m_symbolFilename.Length();
size_t i = len-1;
while (i > 0)
{
// if (buffer.GetChar(i) == '.')
if (m_symbolFilename[i] == '.')
{
m_symbolFilename = m_symbolFilename.Left(i);
break;
}
i --;
}
#endif
// wxStripExtension(m_symbolFilename);
m_symbolFilename += ".h";
if (!m_symbolTable.ReadIncludeFile(m_symbolFilename))
{
wxString str("Could not find include file ");
str += m_symbolFilename;
wxMessageBox(str, "Dialog Editor Warning", MB_OK);
}
}
else
{
@@ -425,6 +465,7 @@ bool wxResourceManager::Clear(bool deleteWindows, bool force)
ClearCurrentDialog();
DisassociateWindows();
m_symbolTable.Clear();
m_resourceTable.ClearTable();
UpdateResourceList();
@@ -545,10 +586,18 @@ bool wxResourceManager::SaveInfoAndDeleteHandler(wxWindow* win)
// variable.
bool wxResourceManager::DeleteWindow(wxWindow* win)
{
bool clearDisplay = FALSE;
if (m_editorPanel->m_childWindow == win)
{
m_editorPanel->m_childWindow = NULL;
clearDisplay = TRUE;
}
win->Destroy();
if (clearDisplay)
m_editorPanel->Clear();
return TRUE;
}
@@ -815,7 +864,7 @@ void wxResourceManager::AddItemsRecursively(long parent, wxItemResource *resourc
bool wxResourceManager::EditSelectedResource()
{
int sel = m_editorResourceTree->GetSelection();
if (sel > -1)
if (sel != 0)
{
wxItemResource *res = (wxItemResource *)m_editorResourceTree->GetItemData(sel);
return Edit(res);
@@ -972,6 +1021,14 @@ bool wxResourceManager::CreatePanelItem(wxItemResource *panelResource, wxPanel *
wxHORIZONTAL, wxDefaultValidator, buf);
res->SetStringValues(new wxStringList("One", "Two", NULL));
}
else if (itemType == "wxRadioButton")
{
MakeUniqueName("radiobutton", buf);
res->SetName(buf);
wxString names[] = { "One", "Two" };
newItem = new wxRadioButton(panel, -1, "Radiobutton", wxPoint(x, y), wxSize(-1, -1),
0, wxDefaultValidator, buf);
}
else if (itemType == "wxChoice")
{
MakeUniqueName("choice", buf);
@@ -1042,6 +1099,33 @@ void wxResourceManager::ClearCurrentDialog()
}
}
bool wxResourceManager::TestCurrentDialog(wxWindow* parent)
{
if (m_editorPanel->m_childWindow)
{
wxItemResource* item = FindResourceForWindow(m_editorPanel->m_childWindow);
if (!item)
return FALSE;
// Make sure the resources are up-to-date w.r.t. the window
InstantiateResourceFromWindow(item, m_editorPanel->m_childWindow, TRUE);
wxDialog* dialog = new wxDialog;
long oldStyle = item->GetStyle();
bool success = FALSE;
item->SetStyle(wxDEFAULT_DIALOG_STYLE);
if (dialog->LoadFromResource(parent, item->GetName(), & m_resourceTable))
{
dialog->Centre();
dialog->ShowModal();
success = TRUE;
}
item->SetStyle(oldStyle);
return success;
}
return FALSE;
}
// Find the first dialog or panel for which
// there is a selected panel item.
wxWindow *wxResourceManager::FindParentOfSelection()
@@ -1467,7 +1551,7 @@ wxWindow *wxResourceManager::RecreateWindowFromResource(wxWindow *win, wxWindowP
bool wxResourceManager::DeleteSelection()
{
int sel = m_editorResourceTree->GetSelection();
if (sel > -1)
if (sel != 0)
{
wxItemResource *res = (wxItemResource *)m_editorResourceTree->GetItemData(sel);
wxWindow *win = FindWindowForResource(res);
@@ -1598,6 +1682,10 @@ wxWindowPropertyInfo *wxResourceManager::CreatePropertyInfoForWindow(wxWindow *w
{
info = new wxRadioBoxPropertyInfo(win);
}
else if (win->IsKindOf(CLASSINFO(wxRadioButton)))
{
info = new wxRadioButtonPropertyInfo(win);
}
else if (win->IsKindOf(CLASSINFO(wxChoice)))
{
info = new wxChoicePropertyInfo(win);
@@ -1729,7 +1817,7 @@ void wxResourceEditorFrame::OnAbout(wxCommandEvent& event)
void wxResourceEditorFrame::OnTest(wxCommandEvent& event)
{
// TODO should show the current dialog
manager->TestCurrentDialog(this);
}
void wxResourceEditorFrame::OnContents(wxCommandEvent& event)
@@ -1773,7 +1861,6 @@ bool wxResourceEditorFrame::OnClose()
}
manager->SetEditorFrame(NULL);
manager->SetEditorToolBar(NULL);
manager->SetEditorPalette(NULL);
return TRUE;
}

View File

@@ -26,6 +26,7 @@
#include "wx/imaglist.h"
#include "proplist.h"
#include "symbtabl.h"
#define RESED_DELETE 1
#define RESED_RECREATE 3
@@ -66,7 +67,6 @@
*/
class wxResourceEditorFrame;
class EditorToolPalette;
class EditorToolBar;
class wxWindowPropertyInfo;
class wxResourceEditorProjectTree;
@@ -125,6 +125,7 @@ class wxResourceTableWithSaving: public wxResourceTable
void GenerateTextStyleString(long windowStyle, char *buf);
void GenerateButtonStyleString(long windowStyle, char *buf);
void GenerateCheckBoxStyleString(long windowStyle, char *buf);
void GenerateRadioButtonStyleString(long windowStyle, char *buf);
void GenerateListBoxStyleString(long windowStyle, char *buf);
void GenerateSliderStyleString(long windowStyle, char *buf);
void GenerateGroupBoxStyleString(long windowStyle, char *buf);
@@ -180,7 +181,6 @@ public:
virtual wxMenuBar *OnCreateEditorMenuBar(wxFrame *parent);
virtual wxResourceEditorScrolledWindow *OnCreateEditorPanel(wxFrame *parent);
virtual wxToolBarBase *OnCreateToolBar(wxFrame *parent);
virtual EditorToolPalette *OnCreatePalette(wxFrame *parent);
// Create a window information object for the give window
wxWindowPropertyInfo* CreatePropertyInfoForWindow(wxWindow *win);
@@ -193,8 +193,8 @@ public:
virtual bool Edit(wxItemResource *res);
virtual bool CreateNewPanel();
virtual bool CreatePanelItem(wxItemResource *panelResource, wxPanel *panel, char *itemType, int x = 10, int y = 10, bool isBitmap = FALSE);
virtual bool DeleteSelection();
virtual bool TestCurrentDialog(wxWindow* parent);
// Saves the window info into the resource, and deletes the
// handler. Doesn't actually disassociate the window from
@@ -253,11 +253,9 @@ public:
// Accessors
inline void SetEditorFrame(wxFrame *fr) { m_editorFrame = fr; }
inline void SetEditorToolBar(EditorToolBar *tb) { m_editorToolBar = tb; }
inline void SetEditorPalette(EditorToolPalette *pal) { m_editorPalette = pal; }
inline wxFrame *GetEditorFrame() const { return m_editorFrame; }
inline wxResourceEditorProjectTree *GetEditorResourceTree() const { return m_editorResourceTree; }
inline wxResourceEditorControlList *GetEditorControlList() const { return m_editorControlList; }
inline EditorToolPalette *GetEditorPalette() const { return m_editorPalette; }
inline wxList& GetSelections() { return m_selections; }
inline wxMenu *GetPopupMenu() const { return m_popupMenu; }
inline wxHelpController *GetHelpController() const { return m_helpController; }
@@ -268,9 +266,12 @@ public:
inline wxResourceTable& GetResourceTable() { return m_resourceTable; }
inline wxHashTable& GetResourceAssociations() { return m_resourceAssociations; }
inline wxString& GetCurrentFilename() { return m_currentFilename; }
inline wxString GetCurrentFilename() const { return m_currentFilename; }
static wxResourceManager* GetCurrentResourceManager() { return sm_currentResourceManager; }
inline void SetSymbolFilename(const wxString& s) { m_symbolFilename = s; }
inline wxString GetSymbolFilename() const { return m_symbolFilename; }
inline wxRect& GetPropertyWindowSize() { return m_propertyWindowSize; }
inline wxRect& GetResourceEditorWindowSize() { return m_resourceEditorWindowSize; }
@@ -283,7 +284,6 @@ public:
wxMenu* m_popupMenu;
wxResourceEditorProjectTree* m_editorResourceTree;
wxResourceEditorControlList* m_editorControlList;
EditorToolPalette* m_editorPalette;
EditorToolBar* m_editorToolBar;
int m_nameCounter;
bool m_modified;
@@ -300,6 +300,11 @@ public:
wxRect m_propertyWindowSize;
wxRect m_resourceEditorWindowSize;
static wxResourceManager* sm_currentResourceManager;
// Symbol table with identifiers for controls
wxResourceSymbolTable m_symbolTable;
// Filename for include file, e.g. resource.h
wxString m_symbolFilename;
};

View File

@@ -221,6 +221,19 @@ bool wxResourceTableWithSaving::SaveResource(ostream& stream, wxItemResource *it
OutputFont(stream, item->GetFont());
}
}
else if (itemType == "wxRadioButton")
{
GenerateRadioButtonStyleString(item->GetStyle(), styleBuf);
stream << "wxRadioButton, " << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', ";
stream << SafeWord(item->GetName()) << ", " << item->GetX() << ", " << item->GetY() << ", ";
stream << item->GetWidth() << ", " << item->GetHeight();
stream << ", " << item->GetValue1();
if (item->GetFont())
{
stream << ",\\\n ";
OutputFont(stream, item->GetFont());
}
}
else if (itemType == "wxStaticBox")
{
GenerateGroupBoxStyleString(item->GetStyle(), styleBuf);
@@ -618,6 +631,15 @@ void wxResourceTableWithSaving::GenerateCheckBoxStyleString(long windowStyle, ch
strcat(buf, "0");
}
void wxResourceTableWithSaving::GenerateRadioButtonStyleString(long windowStyle, char *buf)
{
buf[0] = 0;
GenerateItemStyleString(windowStyle, buf);
if (strlen(buf) == 0)
strcat(buf, "0");
}
void wxResourceTableWithSaving::GenerateListBoxStyleString(long windowStyle, char *buf)
{
buf[0] = 0;

View File

@@ -0,0 +1,173 @@
/////////////////////////////////////////////////////////////////////////////
// Name: symbtabl.cpp
// Purpose: wxResourceSymbolTable
// Author: Julian Smart
// Modified by:
// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "symbtabl.h"
#endif
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include <wx/file.h>
#include <string.h>
#include <stdlib.h>
#include "symbtabl.h"
wxResourceSymbolTable::wxResourceSymbolTable():
m_hashTable(wxKEY_STRING)
{
}
wxResourceSymbolTable::~wxResourceSymbolTable()
{
Clear();
}
// Operations
bool wxResourceSymbolTable::ReadIncludeFile(const wxString& filename)
{
wxFile file;
if (!file.Open(filename, wxFile::read))
return FALSE;
off_t len = file.Length();
if (len == -1)
return FALSE;
wxString str;
char* p = str.GetWriteBuf(len + 1);
if (file.Read(p, len) == ofsInvalid)
{
str.UngetWriteBuf();
return FALSE;
}
str.UngetWriteBuf();
// Look for #define occurrences
size_t pos = str.Find("#define");
while (pos != -1)
{
size_t len = str.Length();
size_t i = pos + 8;
// Eat whitespace until symbol
while ((str[i] == ' ' || str[i] == '\t') && (i < len))
i ++;
size_t start = i;
// Eat symbol
while (str[i] != ' ' && str[i] != '\t' && (i < len))
i ++;
size_t end = i-1;
wxString symbol(str.Mid(start, (end - start + 1)));
// Eat whitespace until number
while ((str[i] == ' ' || str[i] == '\t') && (i < len))
i ++;
size_t startNum = i;
// Eat number
while (str[i] != ' ' && str[i] != '\t' && str[i] != '\n' && (i < len))
i ++;
size_t endNum = i-1;
wxString numStr(str.Mid(startNum, (endNum - startNum + 1)));
long id = atol(numStr);
AddSymbol(symbol, id);
str = str.Right(len - i);
pos = str.Find("#define");
}
return TRUE;
}
bool wxResourceSymbolTable::WriteIncludeFile(const wxString& filename)
{
wxFile file;
if (!file.Open(filename, wxFile::write))
return FALSE;
m_hashTable.BeginFind();
wxNode* node = m_hashTable.Next();
while (node)
{
char* str = node->key.string;
long id = (long) node->Data() ;
wxString line;
line.Printf("#define %s %ld\n", str, id);
file.Write(line, line.Length());
node = m_hashTable.Next();
}
return TRUE;
}
void wxResourceSymbolTable::Clear()
{
m_hashTable.Clear();
}
bool wxResourceSymbolTable::AddSymbol(const wxString& symbol, long id)
{
m_hashTable.Put(symbol, (wxObject*) id);
return TRUE;
}
// Accessors
wxString wxResourceSymbolTable::GetSymbolForId(long id)
{
m_hashTable.BeginFind();
wxNode* node = m_hashTable.Next();
while (node)
{
char* str = node->key.string;
if (str && ( ((long) node->Data()) == id) )
return wxString(str);
node = m_hashTable.Next();
}
return wxString("");
}
long wxResourceSymbolTable::GetIdForSymbol(const wxString& symbol)
{
return (long) m_hashTable.Get(symbol);
}
bool wxResourceSymbolTable::SymbolExists(const wxString& symbol) const
{
return (m_hashTable.Get(symbol) != NULL);
}

View File

@@ -0,0 +1,45 @@
/////////////////////////////////////////////////////////////////////////////
// Name: symbtabl.h
// Purpose: wxResourceSymbolTable class for storing/reading #defines
// Author: Julian Smart
// Modified by:
// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifndef _SYMBTABL_H_
#define _SYMBTABL_H_
#ifdef __GNUG__
#pragma interface "symbtabl.h"
#endif
class wxResourceSymbolTable: public wxObject
{
public:
wxResourceSymbolTable();
~wxResourceSymbolTable();
// Operations
bool ReadIncludeFile(const wxString& filename);
bool WriteIncludeFile(const wxString& filename);
void Clear();
bool AddSymbol(const wxString& symbol, long id);
// Accessors
wxString GetSymbolForId(long id);
long GetIdForSymbol(const wxString& symbol);
bool SymbolExists(const wxString& symbol) const;
// Implementation
// Member variables
protected:
wxHashTable m_hashTable;
};
#endif
// _SYMBTABL_H_

View File

@@ -40,7 +40,6 @@
#endif
#include "reseditr.h"
#include "editrpal.h"
#include "winprop.h"
// Causes immediate feedback.
@@ -144,6 +143,7 @@ bool wxPropertyInfo::Edit(wxWindow *parent, const wxString& title)
propDialog->m_registry.RegisterValidator((wxString)"bool", new wxBoolListValidator);
propDialog->m_registry.RegisterValidator((wxString)"filename", new wxFilenameListValidator);
propDialog->m_registry.RegisterValidator((wxString)"stringlist", new wxListOfStringsListValidator);
propDialog->m_registry.RegisterValidator((wxString)"window_id", new wxResourceSymbolValidator);
propDialog->m_propInfo = this;
propDialog->m_propSheet = propSheet;
@@ -290,6 +290,11 @@ wxProperty *wxWindowPropertyInfo::GetProperty(wxString& name)
propertyWindow->GetSize(&width, &height);
return new wxProperty("height", (long)height, "integer");
}
else if (name == "id")
{
wxString symbolName("TODO");
return new wxProperty("id", symbolName, "window_id");
}
else
return NULL;
}
@@ -382,12 +387,18 @@ bool wxWindowPropertyInfo::SetProperty(wxString& name, wxProperty *property)
}
return TRUE;
}
else if (name == "id")
{
// TODO
return TRUE;
}
else
return FALSE;
}
void wxWindowPropertyInfo::GetPropertyNames(wxStringList& names)
{
names.Add("id");
names.Add("name");
names.Add("x");
names.Add("y");
@@ -1147,6 +1158,45 @@ bool wxCheckBoxPropertyInfo::InstantiateResource(wxItemResource *resource)
return wxItemPropertyInfo::InstantiateResource(resource);
}
/*
* Radiobutton item
*/
wxProperty *wxRadioButtonPropertyInfo::GetProperty(wxString& name)
{
wxRadioButton *checkBox = (wxRadioButton *)propertyWindow;
if (name == "value")
return new wxProperty("value", checkBox->GetValue(), "bool");
else
return wxItemPropertyInfo::GetProperty(name);
}
bool wxRadioButtonPropertyInfo::SetProperty(wxString& name, wxProperty *property)
{
wxRadioButton *checkBox = (wxRadioButton *)propertyWindow;
if (name == "value")
{
checkBox->SetValue((bool)property->GetValue().BoolValue());
return TRUE;
}
else
return wxItemPropertyInfo::SetProperty(name, property);
}
void wxRadioButtonPropertyInfo::GetPropertyNames(wxStringList& names)
{
names.Add("label");
names.Add("value");
wxItemPropertyInfo::GetPropertyNames(names);
}
bool wxRadioButtonPropertyInfo::InstantiateResource(wxItemResource *resource)
{
wxRadioButton *cbox = (wxRadioButton *)propertyWindow;
resource->SetValue1(cbox->GetValue());
return wxItemPropertyInfo::InstantiateResource(resource);
}
/*
* Slider item
*/
@@ -1654,3 +1704,178 @@ int wxStringToFontFamily(wxString& val)
else if (val == "wxTELETYPE") return wxTELETYPE;
else return wxSWISS;
}
///
/// Resource symbol validator
///
IMPLEMENT_DYNAMIC_CLASS(wxResourceSymbolValidator, wxPropertyListValidator)
wxResourceSymbolValidator::wxResourceSymbolValidator(long flags):
wxPropertyListValidator(flags)
{
}
wxResourceSymbolValidator::~wxResourceSymbolValidator(void)
{
}
bool wxResourceSymbolValidator::OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow)
{
return TRUE;
}
// Called when TICK is pressed or focus is lost or view wants to update
// the property list.
// Does the transferance from the property editing area to the property itself
bool wxResourceSymbolValidator::OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow)
{
if (!view->GetValueText())
return FALSE;
wxString value(view->GetValueText()->GetValue());
property->GetValue() = value ;
return TRUE;
}
// Called when TICK is pressed or focus is lost or view wants to update
// the property list.
// Does the transferance from the property editing area to the property itself
bool wxResourceSymbolValidator::OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow)
{
if (!view->GetValueText())
return FALSE;
wxString str(property->GetValue().GetStringRepresentation());
view->GetValueText()->SetValue(str);
return TRUE;
}
// Called when the property is double clicked. Extra functionality can be provided,
// cycling through possible values.
bool wxResourceSymbolValidator::OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow)
{
if (!view->GetValueText())
return FALSE;
OnEdit(property, view, parentWindow);
return TRUE;
}
bool wxResourceSymbolValidator::OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow)
{
if (view->GetConfirmButton())
view->GetConfirmButton()->Enable(TRUE);
if (view->GetCancelButton())
view->GetCancelButton()->Enable(TRUE);
if (view->GetEditButton())
view->GetEditButton()->Enable(TRUE);
if (view->GetValueText())
view->GetValueText()->Enable((GetFlags() & wxPROP_ALLOW_TEXT_EDITING) == wxPROP_ALLOW_TEXT_EDITING);
return TRUE;
}
void wxResourceSymbolValidator::OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow)
{
if (!view->GetValueText())
return;
wxResourceSymbolDialog* dialog = new wxResourceSymbolDialog(parentWindow, -1, "Edit Symbol");
dialog->SetSymbol(property->GetValue().StringValue());
// TODO: split name/id pair e.g. "IDC_TEXT=123" or get from symbol table - which?
dialog->SetId(1234);
dialog->Init();
if (dialog->ShowModal())
{
wxString symbolName(dialog->GetSymbol());
long id = dialog->GetId();
dialog->Destroy();
// TODO: set id somewhere
property->GetValue() = wxString(symbolName);
view->DisplayProperty(property);
view->UpdatePropertyDisplayInList(property);
view->OnPropertyChanged(property);
}
#if 0
char *s = wxFileSelector(
filenameMessage.GetData(),
wxPathOnly(property->GetValue().StringValue()),
wxFileNameFromPath(property->GetValue().StringValue()),
NULL,
filenameWildCard.GetData(),
0,
parentWindow);
if (s)
{
property->GetValue() = wxString(s);
view->DisplayProperty(property);
view->UpdatePropertyDisplayInList(property);
view->OnPropertyChanged(property);
}
#endif
}
BEGIN_EVENT_TABLE(wxResourceSymbolDialog, wxDialog)
EVT_BUTTON(wxID_OK, wxResourceSymbolDialog::OnOK)
END_EVENT_TABLE()
wxResourceSymbolDialog::wxResourceSymbolDialog(wxWindow* parent, const wxWindowID id, const wxString& title, const wxPoint& pos,
const wxSize& size, long style):
wxDialog(parent, id, title, pos, size, style)
{
int x = 5;
int y = 5;
(void) new wxStaticText(this, -1, "Name: ", wxPoint(x, y));
x += 80;
m_nameCtrl = new wxComboBox(this, ID_SYMBOLNAME_COMBOBOX, "",
wxPoint(x, y), wxSize(200, -1), 0, NULL, wxCB_DROPDOWN);
y += 30;
x = 5;
(void) new wxStaticText(this, -1, "Id: ", wxPoint(x, y));
x += 80;
m_idCtrl = new wxTextCtrl(this, ID_SYMBOLID_TEXTCTRL, "",
wxPoint(x, y), wxSize(200, -1));
y += 30;
x = 5;
(void) new wxButton(this, wxID_OK, "OK", wxPoint(x, y), wxSize(90, -1));
x += 120;
(void) new wxButton(this, wxID_CANCEL, "Cancel", wxPoint(x, y), wxSize(90, -1));
Fit();
Centre();
}
void wxResourceSymbolDialog::Init()
{
wxString defaultId;
defaultId.Printf("%ld", m_symbolId);
m_nameCtrl->SetValue(m_symbolName);
m_idCtrl->SetValue(defaultId);
}
void wxResourceSymbolDialog::OnOK(wxCommandEvent& event)
{
if (CheckValues())
{
wxDialog::OnOK(event);
}
}
bool wxResourceSymbolDialog::CheckValues()
{
return TRUE;
}

View File

@@ -253,6 +253,20 @@ class wxCheckBoxPropertyInfo: public wxItemPropertyInfo
bool InstantiateResource(wxItemResource *resource);
};
// For radiobutton items
class wxRadioButtonPropertyInfo: public wxItemPropertyInfo
{
protected:
public:
wxRadioButtonPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
wxItemPropertyInfo(win, res) {}
~wxRadioButtonPropertyInfo(void) {}
wxProperty *GetProperty(wxString& name);
bool SetProperty(wxString& name, wxProperty *property);
void GetPropertyNames(wxStringList& names);
bool InstantiateResource(wxItemResource *resource);
};
// For gauge items
class wxGaugePropertyInfo: public wxItemPropertyInfo
{
@@ -313,5 +327,70 @@ int wxStringToFontWeight(wxString& val);
int wxStringToFontStyle(wxString& val);
int wxStringToFontFamily(wxString& val);
#endif
/*
* A validator to allow editing symbol/id pairs
*/
class wxResourceSymbolValidator: public wxPropertyListValidator
{
DECLARE_DYNAMIC_CLASS(wxResourceSymbolValidator)
protected:
public:
wxResourceSymbolValidator(long flags = 0);
~wxResourceSymbolValidator(void);
// Called when TICK is pressed or focus is lost.
// Return FALSE if value didn't check out; signal to restore old value.
bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
// Called when TICK is pressed or focus is lost or view wants to update
// the property list.
// Does the transferance from the property editing area to the property itself
bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
// Called when the edit (...) button is pressed.
void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
};
/*
* A dialog for editing symbol/id pairs
*/
class wxResourceSymbolDialog: public wxDialog
{
public:
wxResourceSymbolDialog(wxWindow* parent, const wxWindowID id, const wxString& title,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE);
void Init();
inline void SetSymbol(const wxString& symbol) { m_symbolName = symbol; }
inline void SetId(long id) { m_symbolId = id; }
inline wxString GetSymbol() const { return m_symbolName; }
inline long GetId() const { return m_symbolId; }
bool CheckValues();
void OnOK(wxCommandEvent& event);
protected:
wxString m_symbolName;
long m_symbolId;
wxComboBox* m_nameCtrl;
wxTextCtrl* m_idCtrl;
DECLARE_EVENT_TABLE()
};
#define ID_SYMBOLNAME_COMBOBOX 100
#define ID_SYMBOLID_TEXTCTRL 101
#endif
// _WINPROP_H_