X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c92b0f9abd8348df6c43e69e66cc428fb9aac59c..6dfec4b8d901b13f11745a1371083a0b8c1c6980:/demos/dbbrowse/dbtree.cpp diff --git a/demos/dbbrowse/dbtree.cpp b/demos/dbbrowse/dbtree.cpp index 3937e1c7bd..1ee46028e4 100644 --- a/demos/dbbrowse/dbtree.cpp +++ b/demos/dbbrowse/dbtree.cpp @@ -88,18 +88,26 @@ DBTree::DBTree(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const w p_imageListNormal->Add(wxICON(DocOpen)); SetImageList(p_imageListNormal); ct_BrowserDB = NULL; + popupMenu1 = NULL; + popupMenu2 = NULL; } //---------------------------------------------------------------------------------------- DBTree::~DBTree() { +// delete (pDoc->db_Br+i_Which); // wxLogMessage("DBTree::~DBTree() - Vor OnCloseDB()"); (pDoc->db_Br+i_Which)->OnCloseDB(FALSE); // wxLogMessage("DBTree::~DBTree() - Nach OnCloseDB()"); (pDoc->db_Br+i_Which)->db_BrowserDB = NULL; (pDoc->db_Br+i_Which)->ct_BrowserDB = NULL; (pDoc->db_Br+i_Which)->cl_BrowserDB = NULL; + delete ct_BrowserDB; delete p_imageListNormal; + if (popupMenu1) // If the DSN has no Tables, then no delete should be done ! + delete popupMenu1; + if (popupMenu1) // If the DSN has no Tables, then no delete should be done ! + delete popupMenu2; } //---------------------------------------------------------------------------------------- #undef TREE_EVENT_HANDLER @@ -107,12 +115,13 @@ DBTree::~DBTree() int DBTree::OnPopulate() { wxTreeItemId Root, Folder, Docu, Funkt; - int i,x,y, TableType; + int i,x,y,z=0, TableType; wxString SQL_TYPE, DB_TYPE; SetFont(* pDoc->ft_Doc); //--------------------------------------------------------------------------------------- if ((pDoc->db_Br+i_Which)->Initialize(FALSE)) { + wxStopWatch sw; wxBeginBusyCursor(); ct_BrowserDB = (pDoc->db_Br+i_Which)->OnGetCatalog(FALSE); if (ct_BrowserDB) @@ -153,23 +162,28 @@ int DBTree::OnPopulate() // Here is where we find out if the Column is a Primary / Foreign Key if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkCol != 0) // Primary Key { - Docu = AppendItem(Folder,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName,TreeIc_KEY,TreeIc_KEY,new DBTreeData(Temp1)); - Temp2.Printf(_("This Key is used in the following Tables : %s"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkTableName); + Temp2.Printf("(%d) - %s",((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkCol,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName); + Docu = AppendItem(Folder,Temp2,TreeIc_KEY,TreeIc_KEY,new DBTreeData(Temp1)); + Temp2 = ((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkTableName; + if (Temp2 == "") + Temp2 = _("None"); + Temp2.Printf(_("This Primary Key is used in the following Tables : %s"),Temp2.c_str()); Funkt = AppendItem(Docu,Temp2,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData("KEY")); } else { if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkCol != 0) // Foreign Key { - Docu = AppendItem(Folder,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName,TreeIc_KEYF,TreeIc_KEYF,new DBTreeData(Temp1)); + Temp2.Printf("(%d) - %s",((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkCol,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName); + Docu = AppendItem(Folder,Temp2,TreeIc_KEYF,TreeIc_KEYF,new DBTreeData(Temp1)); Temp2.Printf(_("This Foreign Key comes from the following Table : %s"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkTableName); Funkt = AppendItem(Docu,Temp2,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData("KEYF")); } else Docu = AppendItem(Folder,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName,TreeIc_COL,TreeIc_COL,new DBTreeData(Temp1)); } - SQL_TYPE.Printf(_("SQL_C_???? (%d)"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->sqlDataType); - DB_TYPE.Printf(_("DB_DATA_TYPE_???? (%d)"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->dbDataType); + SQL_TYPE.Printf("SQL_C_???? (%d)",((ct_BrowserDB->pTableInf+x)->pColInf+y)->sqlDataType); + DB_TYPE.Printf("DB_DATA_TYPE_???? (%d)",((ct_BrowserDB->pTableInf+x)->pColInf+y)->dbDataType); for (i=1;i<=(pDoc->db_Br+i_Which)->i_SqlTyp[0];i++) { if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->sqlDataType == (pDoc->db_Br+i_Which)->i_SqlTyp[i]) @@ -193,6 +207,12 @@ int DBTree::OnPopulate() } // if ((ct_BrowserDB->pTableInf+x)->pColInf) else Folder = AppendItem(Root,Temp0,TreeIc_FolderClosed,TreeIc_FolderOpen, new DBTreeData(Temp1)); + z++; + if (z % 10 == 0) + { + Temp0.Printf(_("-I-> DBTree::OnPopulate(%s) - Table %6d (from %d) has been read."),(ct_BrowserDB->pTableInf+x)->tableName,z,ct_BrowserDB->numTables); + pDoc->p_MainFrame->SetStatusText(Temp0, 0); + } } // if ((ct_BrowserDB->pTableInf+x)->tableType == "TABLE" or VIEW) // else // wxLogMessage(_("\n-I-> if ! TABLE or VIEW >%s<"),(ct_BrowserDB->pTableInf+x)->tableType); @@ -201,6 +221,9 @@ int DBTree::OnPopulate() else wxLogMessage(_("\n-E-> DBTree::OnPopulate() : Invalid Catalog Pointer : Failed")); wxEndBusyCursor(); + Temp0.Printf(_("-I-> DBTree::OnPopulate() - %6d Tables have been read. - Time needed : %ld ms"),z,sw.Time()); + wxLogMessage(Temp0); + pDoc->p_MainFrame->SetStatusText(Temp0, 0); } // if((pDoc->db_Br+i_Which)->Initialize(FALSE)) else { @@ -317,7 +340,7 @@ void DBTree::OnRightSelect(wxTreeEvent& WXUNUSED(event)) } } //---------------------------------------------------------------------------------------- -void DBTree::OnDBGrid(wxMenu& , wxCommandEvent& event) +void DBTree::OnDBGrid(wxCommandEvent& event) { int i; // Get the Information that we need @@ -339,7 +362,7 @@ void DBTree::OnDBGrid(wxMenu& , wxCommandEvent& event) } } //---------------------------------------------------------------------------------------- -void DBTree::OnDBClass(wxMenu& , wxCommandEvent& event) +void DBTree::OnDBClass(wxCommandEvent& event) { // int i; // Get the Information that we need @@ -352,7 +375,7 @@ void DBTree::OnDBClass(wxMenu& , wxCommandEvent& event) } } //---------------------------------------------------------------------------------------- -void DBTree::OnTableClass(wxMenu& , wxCommandEvent& event) +void DBTree::OnTableClass(wxCommandEvent& event) { int i; // Get the Information that we need @@ -373,7 +396,7 @@ void DBTree::OnTableClass(wxMenu& , wxCommandEvent& event) } } //---------------------------------------------------------------------------------------- -void DBTree::OnTableClassAll(wxMenu& , wxCommandEvent& event) +void DBTree::OnTableClassAll(wxCommandEvent& event) { // int i; // Get the Information that we need