/////////////////////////////////////////////////////////////////////////////
// Name: propeditor.cpp
-// Purpose: wxWindows Configuration Tool property editor
+// Purpose: wxWidgets Configuration Tool property editor
// Author: Julian Smart
// Modified by:
// Created: 2003-06-03
// Licence:
/////////////////////////////////////////////////////////////////////////////
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "propeditor.h"
-#endif
-
-#include <wx/wx.h>
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
-#include "wx/html/htmlwin.h"
+#ifndef WX_PRECOMP
+
#include "wx/grid.h"
#include "wx/filedlg.h"
+
+#endif
+
+#include "wx/html/htmlwin.h"
#include "wx/tokenzr.h"
#include "wx/valgen.h"
-
#include "propeditor.h"
#include "symbols.h"
#include "utils.h"
#include "configtooldoc.h"
#include "configitemselector.h"
+
#include "bitmaps/ellipsis.xpm"
CreateControls(this);
}
-ctPropertyEditor::~ctPropertyEditor()
-{
-}
-
void ctPropertyEditor::CreateControls(wxWindow* parent)
{
- m_elementTitleTextCtrl = new wxTextCtrl(this, -1, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY);
+ m_elementTitleTextCtrl = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY);
wxBitmap detailsIcon(ellipsis_xpm);
wxBoxSizer *item0 = new wxBoxSizer( wxVERTICAL );
wxTextCtrl *item2 = m_elementTitleTextCtrl;
item1->Add( item2, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
- wxButton *item3a = new wxButton( parent, ctID_ATTRIBUTE_EDITOR_EDIT_DETAILS, wxT("Edit..."), wxDefaultPosition, wxSize(-1, -1));
- item1->Add( item3a, 0, wxALIGN_CENTRE|wxRIGHT|wxTOP|wxBOTTOM, 5 );
+ m_attributeEditorEditDetails = new wxButton( parent, ctID_ATTRIBUTE_EDITOR_EDIT_DETAILS, wxT("Edit..."));
+ item1->Add( m_attributeEditorEditDetails, 0, wxALIGN_CENTRE|wxRIGHT|wxTOP|wxBOTTOM, 5 );
item0->Add( item1, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5 );
// TODO: show or hide description window
// if (some-setting)
-// ShowDescriptionWindow(FALSE);
+// ShowDescriptionWindow(false);
item0->Add( m_splitterWindow, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxBOTTOM, 5 );
- this->SetAutoLayout( TRUE );
this->SetSizer( item0 );
/// Add help text
m_elementTitleTextCtrl->SetHelpText(_("The title of the property being edited."));
- FindWindow(ctID_ATTRIBUTE_EDITOR_EDIT_DETAILS)->SetHelpText(_("Click to use an appropriate editor for the selected property (if any)."));
- FindWindow(ctID_ATTRIBUTE_EDITOR_GRID)->SetHelpText(_("Shows the properties of the selected item."));
- FindWindow(ctID_ATTRIBUTE_EDITOR_DESCRIPTION)->SetHelpText(_("Shows a description of the selected property, or a summary of the whole item."));
+ m_attributeEditorEditDetails->SetHelpText(_("Click to use an appropriate editor for the selected property (if any)."));
+ m_attributeEditorGrid->SetHelpText(_("Shows the properties of the selected item."));
+ m_propertyDescriptionWindow->SetHelpText(_("Shows a description of the selected property, or a summary of the whole item."));
/// Set up the grid to display properties
m_attributeEditorGrid->RegisterDataType(ctGRID_VALUE_STRING,
{
// TODO
int pos = 100;
- m_propertyDescriptionWindow->Show(TRUE);
+ m_propertyDescriptionWindow->Show(true);
if (!m_splitterWindow->IsSplit())
{
m_splitterWindow->SplitHorizontally(m_propertyDescriptionWindow, m_attributeEditorGrid, pos);
{
m_attributeEditorGrid->ClearAttributes();
m_propertyDescriptionWindow->SetPage(WrapDescription(wxEmptyString));
- m_elementTitleTextCtrl->SetValue(_T(""));
+ m_elementTitleTextCtrl->SetValue(wxEmptyString);
}
/// Handles detailed editing event.
bool ctPropertyEditor::CanEditDetails()
{
if (!m_item)
- return FALSE;
+ return false;
int row;
ctProperty* prop = FindSelectedProperty(row);
- if (!prop || prop->GetEditorType().IsEmpty())
- return FALSE;
- return TRUE;
+ if (!prop || prop->GetEditorType().empty())
+ return false;
+ return true;
}
/// Shows the item
m_attributeEditorGrid->AppendRows(m_item->GetProperties().GetCount());
- wxNode* node = m_item->GetProperties().GetList().GetFirst();
+ wxObjectList::compatibility_iterator node = m_item->GetProperties().GetList().GetFirst();
int i = 0;
while (node)
{
{
UpdateTitle();
- wxNode* node = m_item->GetProperties().GetList().GetFirst();
+ wxObjectList::compatibility_iterator node = m_item->GetProperties().GetList().GetFirst();
int i = 0;
while (node)
{
ctProperty* prop = (ctProperty*) node->GetData();
- DisplayProperty(i, prop, TRUE);
+ DisplayProperty(i, prop, true);
i ++;
node = node->GetNext();
if (!m_item->CanEditProperty(prop->GetName()))
{
m_attributeEditorGrid->SetReadOnly(row, 1);
-
+
wxColour col(wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT));
m_attributeEditorGrid->SetCellTextColour(row, 1, col);
}
else
{
- m_attributeEditorGrid->SetReadOnly(row, 1, FALSE);
+ m_attributeEditorGrid->SetReadOnly(row, 1, false);
m_attributeEditorGrid->SetCellTextColour(row, 1, * wxBLACK);
}
m_attributeEditorGrid->SetCellValue(row, 1, ctConvertToSingleText(prop->GetValue()));
if (valueOnly)
- return TRUE;
+ return true;
// Set the value type
if (prop->GetEditorType() == _T("choice"))
m_attributeEditorGrid->SetCellEditor(row, 1,
new ctGridCellTextEditor);
}
-
- return TRUE;
+
+ return true;
}
/// Display attribute value
bool ctPropertyEditor::DisplayProperty(ctProperty* prop)
{
if (!m_item)
- return FALSE;
+ return false;
int index = m_item->GetProperties().GetList().IndexOf(prop);
- return DisplayProperty(index, prop, TRUE);
+ return DisplayProperty(index, prop, true);
}
/// Display the default property
bool ctPropertyEditor::DisplayDefaultProperty()
{
if (!m_item)
- return FALSE;
+ return false;
wxString str = m_item->GetDefaultProperty();
this->m_attributeEditorGrid->SelectRow(index);
this->m_attributeEditorGrid->SetGridCursor(index, 1);
}
- return TRUE;
+ return true;
}
/// Edit the default property
bool ctPropertyEditor::EditDefaultProperty(ctConfigItem* item)
{
wxString defaultPropertyName = item->GetDefaultProperty();
- if (!defaultPropertyName.IsEmpty())
+ if (!defaultPropertyName.empty())
{
ctProperty* prop = item->GetProperties().FindProperty(defaultPropertyName);
if (prop)
this->m_attributeEditorGrid->SelectRow(index);
this->m_attributeEditorGrid->SetGridCursor(index, 1);
EditDetails(wxTheApp->GetTopWindow());
- return TRUE;
+ return true;
}
}
}
- return FALSE;
+ return false;
}
/// Find the selected property
if (selRow > -1)
{
row = selRow;
-
+
if (selRow < (int) m_item->GetProperties().GetCount())
{
ctProperty* prop = m_item->GetProperties().GetNth(selRow);
int row;
ctProperty* prop = FindSelectedProperty(row);
if (!prop)
- return FALSE;
+ return false;
wxString type(prop->GetEditorType());
wxString value = m_attributeEditorGrid->GetCellValue(row, 1);
wxString msg;
msg.Printf(wxT("Edit %s:"), (const wxChar*) prop->GetName());
ctMultiLineTextEditor dialog(wxTheApp->GetTopWindow(),
- -1, wxT("Edit Text Property"), msg, value);
+ wxID_ANY, wxT("Edit Text Property"), msg, value);
if (dialog.ShowModal() == wxID_OK)
{
value = ctConvertToSingleText(dialog.GetText());
m_attributeEditorGrid->SetCellValue(row, 1, value);
ApplyCellValueToProperty(row, 1);
- return TRUE;
+ return true;
}
else
- return FALSE;
+ return false;
}
else if (type == _T("filename"))
{
m_attributeEditorGrid->SetCellValue(row, 1, value);
ApplyCellValueToProperty(row, 1);
- return TRUE;
+ return true;
}
else
- return FALSE;
+ return false;
}
else if (type == _T("configitems"))
{
ctConfigItem::StringToArray(value, items);
ctConfigItemsSelector dialog(wxTheApp->GetTopWindow(),
- -1, wxT("Select Configuration Items"));
+ wxID_ANY, wxT("Select Configuration Items"));
dialog.SetConfigList(items);
if (dialog.ShowModal() == wxID_OK)
{
m_attributeEditorGrid->SetCellValue(row, 1, newValue);
ApplyCellValueToProperty(row, 1);
- return TRUE;
+ return true;
}
else
- return FALSE;
+ return false;
}
}
- return FALSE;
+ return false;
}
/// Intercept selection event.
}
if (row == -1)
{
- wxString str = WrapDescription(wxEmptyString);
+ wxString str = WrapDescription(wxEmptyString);
m_propertyDescriptionWindow->SetPage(str);
}
else
ctProperty* prop = FindProperty(row);
if (prop)
{
- wxString str = WrapDescription(m_item->GetDescription(prop));
+ wxString str = WrapDescription(m_item->GetDescription(prop));
m_propertyDescriptionWindow->SetPage(str);
}
}
wxColour col = ctDESCRIPTION_BACKGROUND_COLOUR;
wxString colStr = apColourToHexString(col);
colStr = wxT("#") + colStr;
-
+
wxString str;
str << _T("<HTML><BODY BGCOLOR=\"") << colStr << wxT("\"><FONT SIZE=-1>") ;
str << s;
str << _T("</FONT></BODY></HTML>");
-
- return str;
+
+ return str;
}
/// Intercept cell data change event.
/// item object.
void ctPropertyEditor::ApplyCellValueToProperty(int row, int col)
{
- static bool s_Applying = FALSE;
+ static bool s_Applying = false;
if (s_Applying)
return;
- s_Applying = TRUE;
+ s_Applying = true;
if (col == 1 && m_item)
{
ctProperty* prop = m_item->GetProperties().GetNth(row);
if (prop->GetVariant().GetType() == _T("bool"))
{
if (value == _T("1"))
- variant = (bool) TRUE;
+ variant = true;
else
- variant = (bool) FALSE;
+ variant = false;
}
else if (prop->GetVariant().GetType() == _T("long"))
{
if (prop->GetName() == _T("description"))
UpdateDescription(row);
}
- s_Applying = FALSE;
+ s_Applying = false;
}
/// Apply the cell value to the property, and notify the
/// item object.
void ctPropertyEditor::ApplyPropertyValue(ctConfigItem* item, ctProperty* property, const wxVariant& variant)
{
- static bool s_Applying = FALSE;
+ static bool s_Applying = false;
if (s_Applying)
return;
- s_Applying = TRUE;
+ s_Applying = true;
// Save the old values
ctProperties* oldProperties = new ctProperties(item->GetProperties());
// Apply the new value
property->GetVariant() = variant;
- item->ApplyProperty(property, oldValue);
+ item->ApplyProperty(property, oldValue);
item->Modify();
-
+
UpdateItem();
wxString menuLabel(_T("Change ") + property->GetName());
-
+
// This won't do anything first time Do is applied,
// since we've already done the action for this property.
// But when we Undo or Redo, the changed properties will be applied.
item->GetDocument()->GetCommandProcessor()->Submit(
new ctConfigCommand(menuLabel, ctCMD_APPLY_PROPERTY,
- item, oldProperties, TRUE));
+ item, oldProperties, true));
- s_Applying = FALSE;
+ s_Applying = false;
}
/*!
{
if (GetNumberRows() > 0)
DeleteRows(0, GetNumberRows());
- return TRUE;
+ return true;
}
/*!
AddControls(this, msg);
Centre();
}
-
+
bool ctMultiLineTextEditor::AddControls(wxWindow* parent, const wxString& msg)
{
wxBoxSizer *item0 = new wxBoxSizer( wxVERTICAL );
wxStaticText *item2 = new wxStaticText( parent, wxID_STATIC, msg, wxDefaultPosition, wxDefaultSize, 0 );
item1->Add( item2, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT, 5 );
- wxTextCtrl *item3 = new wxTextCtrl( parent, -1, wxT(""), wxDefaultPosition, wxSize(330,180), wxTE_MULTILINE|wxTE_RICH );
+ wxTextCtrl *item3 = new wxTextCtrl( parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(330,180), wxTE_MULTILINE|wxTE_RICH );
item1->Add( item3, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
wxBoxSizer *item4 = new wxBoxSizer( wxHORIZONTAL );
item4->Add( 5, 5, 1, wxALIGN_CENTRE|wxALL, 5 );
- wxButton *item5 = new wxButton( parent, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
- item5->SetDefault();
+ wxButton *item5 = new wxButton( parent, wxID_OK);
item4->Add( item5, 0, wxALIGN_CENTRE|wxALL, 5 );
- wxButton *item6 = new wxButton( parent, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
+ wxButton *item6 = new wxButton( parent, wxID_CANCEL);
item4->Add( item6, 0, wxALIGN_CENTRE|wxALL, 5 );
item1->Add( item4, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5 );
item3->SetFocus();
- ((wxButton*) FindWindow(wxID_OK))->SetDefault();
+ item5->SetDefault();
- parent->SetAutoLayout( TRUE );
parent->SetSizer(item0);
item0->Fit(parent);
- return TRUE;
+ return true;
}
/*
*/
BEGIN_EVENT_TABLE(ctSplitterWindow, wxSplitterWindow)
- EVT_SPLITTER_SASH_POS_CHANGED(-1, ctSplitterWindow::OnChangeSash)
+ EVT_SPLITTER_SASH_POS_CHANGED(wxID_ANY, ctSplitterWindow::OnChangeSash)
END_EVENT_TABLE()
ctSplitterWindow::ctSplitterWindow(wxWindow* parent, wxWindowID id,
const wxPoint& pos, const wxSize& size, long style):
wxSplitterWindow(parent, id, pos, size, style)
{
- m_updateSettings = FALSE;
+ m_updateSettings = false;
m_position = 0;
}