///////////////////////////////////////////////////////////////////////////// // 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 #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 #endif #include #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; }