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:
@@ -34,6 +34,8 @@ MyApp::MyApp(void)
|
||||
|
||||
wxResourceManager *theResourceManager = NULL;
|
||||
|
||||
#include "symbtabl.h"
|
||||
|
||||
bool MyApp::OnInit(void)
|
||||
{
|
||||
theResourceManager = new wxResourceManager;
|
||||
|
@@ -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();
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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
|
@@ -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) @&&!
|
||||
|
@@ -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)
|
||||
|
||||
|
@@ -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)
|
||||
<<
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@@ -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;
|
||||
|
173
utils/dialoged/src/symbtabl.cpp
Normal file
173
utils/dialoged/src/symbtabl.cpp
Normal 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);
|
||||
}
|
||||
|
45
utils/dialoged/src/symbtabl.h
Normal file
45
utils/dialoged/src/symbtabl.h
Normal 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_
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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_
|
||||
|
Reference in New Issue
Block a user