/////////////////////////////////////////////////////////////////////////////
// Name: dbprocedure.cc
// Purpose: Database Objects
// Author: Daniel Horak
// Modified by:
// RCS-ID: $Id: dbprocedure.cc,v 1.2 2004/01/01 13:56:19 horakdan Exp $
// Copyright: (c) Daniel Horak
// Licence: GPL
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
// declarations
// ============================================================================
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
// For compilers that support precompilation, includes "wx/wx.h".
#include <wx/wxprec.h>
#ifdef __BORLANDC__
#pragma hdrstop
#endif
// for all others, include the necessary headers (this file is usually all you
// need because it includes almost all "standard" wxWindows headers
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
#include <wx/notebook.h>
#include "config.h"
#include "xml.h"
#include "dbobject.h"
#include "dbprocedure.h"
#include "servers/dbserver.h"
DBProcedure::DBProcedure(DataDesignerProject *project, DataDesignerContainer *container)
: DBObject(DBProcedureType, "procedure", project, container)
{
}
wxDialog *DBProcedure::Editor(bool edit)
{
return new DBProcedureEditor(this, edit);
}
void DBProcedure::LoadXmlNode(wxXmlNode *node)
{
if (node->GetName() == m_typestr) {
DBObject::LoadXmlNode(node);
m_language = node->GetPropVal("language", wxEmptyString);
wxXmlNode *child = node->GetChildren();
while (child) {
if (child->GetName() == "source") {
LoadTextNode(child, "source", m_source);
if (m_source.GetChar(0) == wxChar('\n'))
m_source.Remove(0,1);
} else if (child->GetName() == "language") {
LoadTextNode(child, "language", m_language);
}
child = child->GetNext();
}
} else {
wxLogMessage("wrong type '%s'", node->GetName().c_str());
}
}
wxXmlNode *DBProcedure::GetXmlNode()
{
wxXmlNode *node = DBObject::GetXmlNode();
wxString source = m_source;
node->AddChild(GetTextNode("language", m_language));
source.Prepend("\n");
node->AddChild(GetTextNode("source", source));
return node;
}
/*
* Editor
*/
DBProcedureEditor::DBProcedureEditor(DBObject *object, bool edit)
: DBObjectEditor(_("Procedure"), wxSize(500,400), object, edit)
{
DBServer *server;
server = GetObject()->GetProject()->GetServer();
new wxStaticText(m_page_general, -1, _("Language"), wxPoint(10,60), wxSize(80,-1), wxALIGN_RIGHT);
c2 = new wxComboBox(m_page_general, -1, wxEmptyString, wxPoint(100,60), wxSize(100,-1),
server->GetLanguagesCount(), server->GetLanguages(), wxCB_SORT | wxCB_READONLY);
wxPanel *m_page_source = new wxPanel(m_notebook);
t1 = new wxTextCtrl(m_page_source, -1, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_PROCESS_TAB);
wxLayoutConstraints *c = new wxLayoutConstraints;
c->top.SameAs (m_page_source, wxTop);
c->left.SameAs (m_page_source, wxLeft);
c->right.SameAs (m_page_source, wxRight);
c->bottom.SameAs(m_page_source, wxBottom);
t1->SetConstraints(c);
m_page_source->SetAutoLayout(TRUE);
m_notebook->InsertPage(m_notebook->GetPageCount() - 1, m_page_source, _("Source code"));
}
DBProcedureEditor::~DBProcedureEditor()
{
}
bool DBProcedureEditor::TransferDataFromWindow()
{
DBProcedure *object = (DBProcedure *)GetObject();
DBObjectEditor::TransferDataFromWindow();
object->m_language = c2->GetValue();
object->m_source = t1->GetValue();
return TRUE;
}
bool DBProcedureEditor::TransferDataToWindow()
{
DBProcedure *object = (DBProcedure *)GetObject();
DBObjectEditor::TransferDataToWindow();
c2->SetValue(object->m_language);
t1->SetValue(object->m_source);
return TRUE;
}
/*
* Container
*/
DBProcedureContainer::DBProcedureContainer(DataDesignerProject *project, const wxTreeItemId& parent)
: DataDesignerContainer(project, parent, "procedures")
{
}
DBObject *DBProcedureContainer::CreateObject()
{
return new DBProcedure(GetProject(), this);
}
void DBProcedureContainer::ShowList()
{
SetList(new DBProcedureListCtrl(GetProject()->GetSplitter(), this));
DataDesignerContainer::AddObjectsToListAndShow();
}
/*
* ObjectList
*/
DBProcedureListCtrl::DBProcedureListCtrl(wxWindow *parent, DataDesignerContainer *container)
: DBObjectListCtrl(parent, container)
{
}
DBProcedureListCtrl::~DBProcedureListCtrl()
{
}
void DBProcedureListCtrl::SetObject(long item, DBObject *object)
{
DBProcedure *procedure = (DBProcedure *)object;
}
syntax highlighted by Code2HTML, v. 0.9.1