void DbViewerPanel::OnDnDStart(wxTreeEvent& event) { ShapeList lstDnD; lstDnD.DeleteContents(true); DbItem* item = (DbItem*)m_treeDatabases->GetItemData(event.GetItem()); ErdPanel* pPanel = wxDynamicCast(m_mgr->GetActivePage(), ErdPanel); if(item != NULL) { if(pPanel) { Table* table = wxDynamicCast(item->GetData(), Table); if(table) { table = (Table*)table->Clone(); wxSFShapeBase* pShape = new dndTableShape(table); lstDnD.Append(pShape); pPanel->GetCanvas()->DoDragDrop(lstDnD); } View* view = wxDynamicCast(item->GetData(), View); if(view) { view = (View*)view->Clone(); wxSFShapeBase* pShape = new dndTableShape(view); lstDnD.Append(pShape); pPanel->GetCanvas()->DoDragDrop(lstDnD); } } } }
void DbViewerPanel::OnShowThumbnail(wxCommandEvent& e) { if(e.IsChecked()) { ErdPanel* pPanel = wxDynamicCast(m_mgr->GetActivePage(), ErdPanel); if(pPanel) m_pThumbnail->SetCanvas(pPanel->GetCanvas()); GetSizer()->Show(m_pThumbnail); } else { GetSizer()->Hide(m_pThumbnail); } GetSizer()->Layout(); }
void DbViewerPanel::OnPageChanged(NotebookEvent& event) { if( !m_SuppressUpdate ) { ErdPanel* pPanel = wxDynamicCast(m_mgr->GetPage( event.GetSelection() ), ErdPanel); if (pPanel) m_pThumbnail->SetCanvas( pPanel->GetCanvas() ); else m_pThumbnail->SetCanvas(NULL); } else m_SuppressUpdate = false; event.Skip(); }
void DatabaseExplorer::OnOpenWithDBE(wxCommandEvent& e) { // get the file name TreeItemInfo item = m_mgr->GetSelectedTreeItemInfo( TreeFileView ); if ( item.m_item.IsOk() && item.m_itemType == ProjectItem::TypeFile ) { if (item.m_fileName.GetExt() == wxT("erd")) { // try to determine used database adapter IDbAdapter *adapter = NULL; IDbAdapter::TYPE type = IDbAdapter::atUNKNOWN; wxSFDiagramManager mgr; mgr.AcceptShape( wxT("All") ); mgr.SetRootItem( new ErdInfo() ); if( mgr.DeserializeFromXml( item.m_fileName.GetFullPath() ) ) { ErdInfo *info = wxDynamicCast( mgr.GetRootItem(), ErdInfo ); if( info ) type = info->GetAdapterType(); switch( type ) { case IDbAdapter::atSQLITE: #ifdef DBL_USE_SQLITE adapter = new SQLiteDbAdapter(); #endif break; case IDbAdapter::atMYSQL: #ifdef DBL_USE_MYSQL adapter = new MySqlDbAdapter(); #endif break; case IDbAdapter::atPOSTGRES: #ifdef DBL_USE_POSTGRES adapter = new PostgreSqlDbAdapter(); #endif break; default: break; } if( adapter ) { ErdPanel *panel = new ErdPanel( m_mgr->GetEditorPaneNotebook(), adapter, NULL ); m_mgr->AddEditorPage( panel, wxString::Format( wxT("ERD [%s]"), item.m_fileName.GetFullName().c_str() ) ); panel->LoadERD( item.m_fileName.GetFullPath() ); return; } } } } e.Skip(); }
void DatabaseExplorer::DoOpenFile(const wxFileName& filename) { if(filename.GetExt() == wxT("erd")) { // try to determine used database adapter IDbAdapter* adapter = NULL; IDbAdapter::TYPE type = IDbAdapter::atUNKNOWN; wxSFDiagramManager mgr; mgr.AcceptShape(wxT("All")); mgr.SetRootItem(new ErdInfo()); if(mgr.DeserializeFromXml(filename.GetFullPath())) { ErdInfo* info = wxDynamicCast(mgr.GetRootItem(), ErdInfo); if(info) type = info->GetAdapterType(); switch(type) { case IDbAdapter::atSQLITE: #ifdef DBL_USE_SQLITE adapter = new SQLiteDbAdapter(); #endif break; case IDbAdapter::atMYSQL: #ifdef DBL_USE_MYSQL adapter = new MySqlDbAdapter(); #endif break; case IDbAdapter::atPOSTGRES: //#ifdef DBL_USE_POSTGRES adapter = new PostgreSqlDbAdapter(); //#endif break; default: break; } if(adapter) { ErdPanel* panel = new ErdPanel(m_mgr->GetEditorPaneNotebook(), adapter, NULL); m_mgr->AddEditorPage(panel, wxString::Format(wxT("ERD [%s]"), filename.GetFullName().c_str())); panel->LoadERD(filename.GetFullPath()); return; } } } }
void DbViewerPanel::AddEditorPage(wxWindow* page, const wxString& name) { m_SuppressUpdate = true; m_mgr->AddEditorPage(page, name); m_pagesAdded.Add(name); ErdPanel* erd = wxDynamicCast(page, ErdPanel); if(erd) { m_pThumbnail->SetCanvas(erd->GetCanvas()); erd->GetCanvas()->SaveCanvasState(); erd->GetCanvas()->SetFocus(); } else { m_pThumbnail->SetCanvas(NULL); page->SetFocus(); } }