From: Mark Johnson Date: Sat, 12 Feb 2000 14:11:17 +0000 (+0000) Subject: browsedb.cpp browsedb.h dbbrowse.cpp dbbrowse.h dbbrowse.rc X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/c92b0f9abd8348df6c43e69e66cc428fb9aac59c browsedb.cpp browsedb.h dbbrowse.cpp dbbrowse.h dbbrowse.rc dbgrid.cpp dbgrid.h dbtree.cpp dbtree.h dlguser.cpp dlguser.h doc.cpp doc.h pgmctrl.cpp pgmctrl.h git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5981 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/demos/dbbrowse/browsedb.cpp b/demos/dbbrowse/browsedb.cpp index 602a074ddb..48d3c308ec 100644 --- a/demos/dbbrowse/browsedb.cpp +++ b/demos/dbbrowse/browsedb.cpp @@ -1,478 +1,471 @@ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // Name: BrowserDB.h,cpp -// Purpose: a wxDB; +// Purpose: a wxDB class // Author: Mark Johnson, mj10777@gmx.net // Modified by: // Created: 19991127.mj10777 // Copyright: (c) Mark Johnson // Licence: wxWindows license // RCS-ID: $Id$ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- //-- 1) -//--------------------------------------------------------------------------- -//-- all #ifdefs that the whole Project needs. ------------------------------ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- all #ifdefs that the whole Project needs. ------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __GNUG__ #pragma implementation #pragma interface #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __BORLANDC__ #pragma hdrstop #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifndef WX_PRECOMP #include "wx/wx.h" #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #include #include "std.h" #include -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // Global structure for holding ODBC connection information // - darf nur einmal im Projekte definiert werden ?? Extra Databasse Klasse ? struct DbStuff ConnectInf; // Für DBase -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- extern DbList* WXDLLEXPORT PtrBegDbList; /* from db.cpp, used in getting back error results from db connections */ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- char *GetExtendedDBErrorMsg(char *ErrFile, int ErrLine) { - static wxString msg; - wxString tStr; - if (ErrFile || ErrLine) - { - msg += "File: "; - msg += ErrFile; - msg += " Line: "; - tStr.Printf("%d",ErrLine); - msg += tStr.GetData(); - // msg += "\n"; - } - msg.Append ("\nODBC errors:\n"); + static wxString msg; + wxString tStr; + if (ErrFile || ErrLine) + { + msg += "File: "; + msg += ErrFile; + msg += " Line: "; + tStr.Printf("%d",ErrLine); + msg += tStr.GetData(); // msg += "\n"; - /* Scan through each database connection displaying - * any ODBC errors that have occured. */ - for (DbList *pDbList = PtrBegDbList; pDbList; pDbList = pDbList->PtrNext) - { - // Skip over any free connections - if (pDbList->Free) - continue; - // Display errors for this connection - for (int i = 0; i < DB_MAX_ERROR_HISTORY; i++) - { - if (pDbList->PtrDb->errorList[i]) - { - msg.Append(pDbList->PtrDb->errorList[i]); - if (strcmp(pDbList->PtrDb->errorList[i],"") != 0) - msg.Append("\n"); - } - } - } - msg += "\n"; - return (char*) (const char*) msg; + } + msg.Append ("\nODBC errors:\n"); + // msg += "\n"; + /* Scan through each database connection displaying + * any ODBC errors that have occured. */ + for (DbList *pDbList = PtrBegDbList; pDbList; pDbList = pDbList->PtrNext) + { + // Skip over any free connections + if (pDbList->Free) + continue; + // Display errors for this connection + for (int i = 0; i < DB_MAX_ERROR_HISTORY; i++) + { + if (pDbList->PtrDb->errorList[i]) + { + msg.Append(pDbList->PtrDb->errorList[i]); + if (strcmp(pDbList->PtrDb->errorList[i],"") != 0) + msg.Append("\n"); + } + } + } + msg += "\n"; + return (char*) (const char*) msg; } // GetExtendedDBErrorMsg -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- BrowserDB::BrowserDB() { - Zeiger_auf_NULL(0); - ODBCSource = ""; // ODBC data source name (created with ODBC Administrator under Win95/NT) - UserName = ""; // database username - must already exist in the data source - Password = ""; // password database username - OnFillSqlTyp(); - OnFilldbTyp(); + Zeiger_auf_NULL(0); + ODBCSource = ""; // ODBC data source name (created with ODBC Administrator under Win95/NT) + UserName = ""; // database username - must already exist in the data source + Password = ""; // password database username + OnFillSqlTyp(); + OnFilldbTyp(); } // BrowserDB Constructor -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- BrowserDB::~BrowserDB() { Zeiger_auf_NULL(1); // Clean up Tables and Databases (Commit, Close und delete) } // BrowserDB destructor -//-------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- bool BrowserDB::Initialize(int Quite) { - if (!OnStartDB(Quite)) - { - wxLogMessage(_("\n\n-E-> BrowserDB::OnStartDB(%s) : Failed ! "),ODBCSource.c_str()); - return FALSE; - } - return TRUE; + if (!OnStartDB(Quite)) + { + wxLogMessage(_("\n\n-E-> BrowserDB::OnStartDB(%s) : Failed ! "),ODBCSource.c_str()); + return FALSE; + } + return TRUE; } // BrowserDB:Initialize -//-------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- bool BrowserDB::OnStartDB(int Quite) { + if (!Quite) + wxLogMessage(_("\n-I-> BrowserDB::OnStartDB(%s) : Begin "),ODBCSource.c_str()); + if (db_BrowserDB != NULL) + { if (!Quite) - wxLogMessage(_("\n-I-> BrowserDB::OnStartDB(%s) : Begin "),ODBCSource.c_str()); - if (db_BrowserDB != NULL) - { - if (!Quite) - wxLogMessage(_("\n-I-> BrowserDB::OnStartDB() : DB is allready open.")); - return TRUE; - } - // Initialize the ODBC Environment for Database Operations - if (SQLAllocEnv(&ConnectInf.Henv) != SQL_SUCCESS) - { - if (!Quite) - wxLogMessage(_("\n-E-> BrowserDB::OnStartDB() : DB CONNECTION ERROR : A problem occured while trying to get a connection to the data source")); - return FALSE; - } - //--------------------------------------------------------------------------- - // Connect to datasource - //--------------------------- - DlgUser *p_Dlg = new DlgUser(pDoc->p_MainFrame, "Username and Password"); - p_Dlg->s_DSN = ODBCSource; - p_Dlg->s_User = UserName; - p_Dlg->s_Password = Password; - p_Dlg->OnInit(); - p_Dlg->Fit(); - - bool OK = FALSE; - if (p_Dlg->ShowModal() == wxID_OK) - { - (pDoc->p_DSN+i_Which)->Usr = p_Dlg->s_User; - (pDoc->p_DSN+i_Which)->Pas = p_Dlg->s_Password; - UserName = p_Dlg->s_User; - Password = p_Dlg->s_Password; - OK = TRUE; - } - //p_Dlg.Destroy(); - delete p_Dlg; + wxLogMessage(_("\n-I-> BrowserDB::OnStartDB() : DB is allready open.")); + return TRUE; + } + // Initialize the ODBC Environment for Database Operations + if (SQLAllocEnv(&ConnectInf.Henv) != SQL_SUCCESS) + { + if (!Quite) + wxLogMessage(_("\n-E-> BrowserDB::OnStartDB() : DB CONNECTION ERROR : A problem occured while trying to get a connection to the data source")); + return FALSE; + } + //--------------------------------------------------------------------------------------- + // Connect to datasource + //--------------------------------------------------------------------------------------- + DlgUser *p_Dlg = new DlgUser(pDoc->p_MainFrame, "Username and Password"); + p_Dlg->pDoc = pDoc; + p_Dlg->s_DSN = ODBCSource; + p_Dlg->s_User = UserName; + p_Dlg->s_Password = Password; + p_Dlg->OnInit(); + p_Dlg->Fit(); - if (OK) - { - //--------------------------- - strcpy(ConnectInf.Dsn, ODBCSource); // ODBC data source name (created with ODBC Administrator under Win95/NT) - strcpy(ConnectInf.Uid, UserName); // database username - must already exist in the data source - strcpy(ConnectInf.AuthStr, Password); // password database username - db_BrowserDB = GetDbConnection(&ConnectInf); - // wxLogMessage(">>>%s<<<>>>%s<<<",UserName.c_str(),Password.c_str()); - if (db_BrowserDB == NULL) - { - strcpy(ConnectInf.Dsn, ""); - strcpy(ConnectInf.Uid, ""); - strcpy(ConnectInf.AuthStr, ""); - if (!Quite) - { - wxLogMessage(_("\n-E-> BrowserDB::OnConnectDataSource() DB CONNECTION ERROR : Unable to connect to the data source.\n\nCheck the name of your data source to verify it has been correctly entered/spelled.\n\nWith some databases, the user name and password must\nbe created with full rights to the table prior to making a connection\n(using tools provided by the database manufacturer)")); - wxLogMessage(_("-I-> BrowserDB::OnStartDB(%s) : End "),ODBCSource.c_str()); - } - return FALSE; - } - //-------------------------------------------------------------------------- - if (!Quite) - { - Temp1 = db_BrowserDB->GetDatabaseName(); - Temp2 = db_BrowserDB->GetDataSource(); - wxLogMessage(_("-I-> BrowserDB::OnGetDataSourceODBC() - DatabaseName(%s) ; DataSource(%s)"),Temp1.c_str(),Temp2.c_str()); - wxLogMessage(_("-I-> BrowserDB::OnStartDB(%s) : End "),ODBCSource.c_str()); - } - return TRUE; - } else return FALSE; + bool OK = FALSE; + if (p_Dlg->ShowModal() == wxID_OK) + { + (pDoc->p_DSN+i_Which)->Usr = p_Dlg->s_User; + (pDoc->p_DSN+i_Which)->Pas = p_Dlg->s_Password; + UserName = p_Dlg->s_User; + Password = p_Dlg->s_Password; + OK = TRUE; + } + delete p_Dlg; + if (OK) + { + //-------------------------------------------------------------------------------------- + strcpy(ConnectInf.Dsn, ODBCSource); // ODBC data source name (created with ODBC Administrator under Win95/NT) + strcpy(ConnectInf.Uid, UserName); // database username - must already exist in the data source + strcpy(ConnectInf.AuthStr, Password); // password database username + db_BrowserDB = GetDbConnection(&ConnectInf); + // wxLogMessage(">>>%s<<<>>>%s<<<",UserName.c_str(),Password.c_str()); + if (db_BrowserDB == NULL) + { + strcpy(ConnectInf.Dsn, ""); + strcpy(ConnectInf.Uid, ""); + strcpy(ConnectInf.AuthStr, ""); + if (!Quite) + { + wxLogMessage(_("\n-E-> BrowserDB::OnConnectDataSource() DB CONNECTION ERROR : Unable to connect to the data source.\n\nCheck the name of your data source to verify it has been correctly entered/spelled.\n\nWith some databases, the user name and password must\nbe created with full rights to the table prior to making a connection\n(using tools provided by the database manufacturer)")); + wxLogMessage(_("-I-> BrowserDB::OnStartDB(%s) : End "),ODBCSource.c_str()); + } + return FALSE; + } + //-------------------------------------------------------------------------------------- + if (!Quite) + { + Temp1 = db_BrowserDB->GetDatabaseName(); + Temp2 = db_BrowserDB->GetDataSource(); + wxLogMessage(_("-I-> BrowserDB::OnGetDataSourceODBC() - DatabaseName(%s) ; DataSource(%s)"),Temp1.c_str(),Temp2.c_str()); + wxLogMessage(_("-I-> BrowserDB::OnStartDB(%s) : End "),ODBCSource.c_str()); + } + return TRUE; + } else return FALSE; } -//-------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- bool BrowserDB::OnCloseDB(int Quite) { - if (!Quite) - wxLogMessage(_("-I-> BrowserDB::OnCloseDB() : Begin ")); - if (db_BrowserDB) - { - db_BrowserDB->Close(); - FreeDbConnection(db_BrowserDB); - - // Free Environment Handle that ODBC uses - if (SQLFreeEnv(&ConnectInf.Henv) != SQL_SUCCESS) - { - // Error freeing environment handle - } - db_BrowserDB = NULL; - } - if (!Quite) - wxLogMessage(_("\n-I-> BrowserDB::OnCloseDB() : End ")); - return TRUE; + if (!Quite) + wxLogMessage(_("-I-> BrowserDB::OnCloseDB() : Begin ")); + if (db_BrowserDB) + { + db_BrowserDB->Close(); + FreeDbConnection(db_BrowserDB); + + // Free Environment Handle that ODBC uses + if (SQLFreeEnv(&ConnectInf.Henv) != SQL_SUCCESS) + { + // Error freeing environment handle + } + db_BrowserDB = NULL; + } + if (!Quite) + wxLogMessage(_("\n-I-> BrowserDB::OnCloseDB() : End ")); + return TRUE; } //---------------------------------------------------------------------------------------- bool BrowserDB::OnGetNext(int Cols,int Quite) { - SDWORD cb; - int i_dbDataType; - int i=0; - char s_temp[1024+1]; - long l_temp; - double f_temp; - int AnzError=0; - TIMESTAMP_STRUCT t_temp; - wxString Temp0; - //----------------------------- - if (!db_BrowserDB->GetNext()) - { - return FALSE; - Temp0.Printf(_("\n-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext \n-E-> ")); + SDWORD cb; + int i_dbDataType; + int i=0; + char s_temp[1024+1]; + long l_temp; + double f_temp; + int AnzError=0; + TIMESTAMP_STRUCT t_temp; + wxString Temp0; + //----------------------------- + if (!db_BrowserDB->GetNext()) + { + return FALSE; + Temp0.Printf(_("\n-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext \n-E-> ")); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); + wxLogMessage(Temp0); + wxMessageBox(Temp0); + } + else + { + for (i=0;itableName,"-E->"); + i_dbDataType = (cl_BrowserDB->pColFor+i)->i_dbDataType; + if (i_dbDataType == 0) // Filter unsupported dbDataTypes + { + if (((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_VARCHAR) || ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_LONGVARCHAR)) + i_dbDataType = DB_DATA_TYPE_VARCHAR; + if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_DATE) + i_dbDataType = DB_DATA_TYPE_DATE; + if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_BIT) + i_dbDataType = DB_DATA_TYPE_INTEGER; + if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_NUMERIC) + i_dbDataType = DB_DATA_TYPE_VARCHAR; + if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_REAL) + i_dbDataType = DB_DATA_TYPE_FLOAT; + } + if ((i_dbDataType == DB_DATA_TYPE_INTEGER) && ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_DOUBLE)) + { // DBASE Numeric + i_dbDataType = DB_DATA_TYPE_FLOAT; + } + switch(i_dbDataType) + { + case DB_DATA_TYPE_VARCHAR: + strcpy(s_temp,""); + if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_dbDataType,&s_temp,sizeof(s_temp), &cb)) + { + Temp0.Printf(_("\n-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext of >%s<.\n-E-> "),(cl_BrowserDB+i)->tableName); Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); wxLogMessage(Temp0); + } + Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,s_temp); + strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); + break; + case DB_DATA_TYPE_INTEGER: + l_temp = 0; + if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&l_temp,sizeof(l_temp), &cb)) + { + Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> ")); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); + } + else + { + Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,l_temp); + strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); + } + break; + case DB_DATA_TYPE_FLOAT: + f_temp = 0; + if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&f_temp,sizeof(f_temp), &cb)) + { + Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> ")); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); wxMessageBox(Temp0); - } - else - { - for (i=0;itableName,"-E->"); - i_dbDataType = (cl_BrowserDB->pColFor+i)->i_dbDataType; - if (i_dbDataType == 0) // Filter unsupported dbDataTypes - { - if (((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_VARCHAR) || ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_LONGVARCHAR)) - i_dbDataType = DB_DATA_TYPE_VARCHAR; - if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_DATE) - i_dbDataType = DB_DATA_TYPE_DATE; - if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_BIT) - i_dbDataType = DB_DATA_TYPE_INTEGER; - if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_NUMERIC) - i_dbDataType = DB_DATA_TYPE_VARCHAR; - if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_REAL) - i_dbDataType = DB_DATA_TYPE_FLOAT; - } - if ((i_dbDataType == DB_DATA_TYPE_INTEGER) && ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_DOUBLE)) - { // DBASE Numeric - i_dbDataType = DB_DATA_TYPE_FLOAT; - } - switch(i_dbDataType) - { - case DB_DATA_TYPE_VARCHAR: - strcpy(s_temp,""); - if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_dbDataType,&s_temp,sizeof(s_temp), &cb)) - { - Temp0.Printf(_("\n-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext of >%s<.\n-E-> "),(cl_BrowserDB+i)->tableName); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxLogMessage(Temp0); - } - Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,s_temp); - strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); - break; - case DB_DATA_TYPE_INTEGER: - l_temp = 0; - if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&l_temp,sizeof(l_temp), &cb)) - { - Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> ")); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); - } - else - { - Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,l_temp); - strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); - } - break; - case DB_DATA_TYPE_FLOAT: - f_temp = 0; - if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&f_temp,sizeof(f_temp), &cb)) - { - Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> ")); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(Temp0); - } - else - { - Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,f_temp); - strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); - } - break; - case DB_DATA_TYPE_DATE: - t_temp.day = t_temp.month = t_temp.year = t_temp.hour = t_temp.minute = t_temp.second = t_temp.fraction = 0; - if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&t_temp,sizeof(t_temp), &cb)) - { - Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> ")); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); - } - else - { - // i_Nation = 0 = timestamp , 1=EU, 2=UK, 3=International, 4=US - if (((cl_BrowserDB->pColFor+i)->i_Nation == 0) || // TS YYYY-MM-DD - ((cl_BrowserDB->pColFor+i)->i_Nation == 3)) // IT YYYY-MM-DD - { - Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.year,t_temp.month,t_temp.day, + } + else + { + Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,f_temp); + strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); + } + break; + case DB_DATA_TYPE_DATE: + t_temp.day = t_temp.month = t_temp.year = t_temp.hour = t_temp.minute = t_temp.second = t_temp.fraction = 0; + if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&t_temp,sizeof(t_temp), &cb)) + { + Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> ")); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); + } + else + { + // i_Nation = 0 = timestamp , 1=EU, 2=UK, 3=International, 4=US + if (((cl_BrowserDB->pColFor+i)->i_Nation == 0) || // TS YYYY-MM-DD + ((cl_BrowserDB->pColFor+i)->i_Nation == 3)) // IT YYYY-MM-DD + { + Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.year,t_temp.month,t_temp.day, t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction); - strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); - } - if ( ((cl_BrowserDB->pColFor+i)->i_Nation == 1) || // EU DD.MM.YYYY - ((cl_BrowserDB->pColFor+i)->i_Nation == 2)) // UK DD/MM/YYYY - { - Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.day,t_temp.month,t_temp.year, + strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); + } + if (((cl_BrowserDB->pColFor+i)->i_Nation == 1) || // EU DD.MM.YYYY + ((cl_BrowserDB->pColFor+i)->i_Nation == 2)) // UK DD/MM/YYYY + { + Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.day,t_temp.month,t_temp.year, t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction); - strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); - } - if ((cl_BrowserDB->pColFor+i)->i_Nation == 3) // US MM/DD/YYYY - { - Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.month,t_temp.day,t_temp.year, + strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); + } + if ((cl_BrowserDB->pColFor+i)->i_Nation == 3) // US MM/DD/YYYY + { + Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.month,t_temp.day,t_temp.year, t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction); - strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); - } - } - break; - default: - AnzError++; - if (AnzError <= 100) - { - Temp0 = (cl_BrowserDB+i)->colName; - wxLogMessage(_("-E-> BrowserDB::OnGetNext - DB_DATA_TYPE_?? (%d) in Col(%s)"),(cl_BrowserDB->pColFor+i)->i_dbDataType,Temp0.c_str()); - } - else - return TRUE; - Temp0.Printf(_("-E-> unknown Format(%d) - sql(%d)"),(cl_BrowserDB->pColFor+i)->i_dbDataType,(cl_BrowserDB->pColFor+i)->i_sqlDataType); - strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); - break; - }; - } - } - // wxLogMessage("-E-> BrowserDB::OnGetNext - End"); - return TRUE; + strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); + } + } + break; + default: + AnzError++; + if (AnzError <= 100) + { + Temp0 = (cl_BrowserDB+i)->colName; + wxLogMessage(_("-E-> BrowserDB::OnGetNext - DB_DATA_TYPE_?? (%d) in Col(%s)"),(cl_BrowserDB->pColFor+i)->i_dbDataType,Temp0.c_str()); + } + else + return TRUE; + Temp0.Printf(_("-E-> unknown Format(%d) - sql(%d)"),(cl_BrowserDB->pColFor+i)->i_dbDataType,(cl_BrowserDB->pColFor+i)->i_sqlDataType); + strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); + break; + }; + } + } + // wxLogMessage("-E-> BrowserDB::OnGetNext - End"); + return TRUE; } //---------------------------------------------------------------------------------------- bool BrowserDB::OnSelect(wxString tb_Name, int Quite) { - wxString SQLStmt; - i_Records = 0; - //-------------------------------------------------------------------------- - SQLStmt.sprintf("SELECT * FROM %s",tb_Name.c_str()); - if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData()))) - { - Temp0.Printf(_("\n-E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of >%s<.\n-E-> "),tb_Name.c_str()); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxLogMessage(Temp0); - wxMessageBox("-E-> BrowserDB::OnSelect - GetData()"); - return FALSE; - } - //-------------------------------------------------------------------------- - while (db_BrowserDB->GetNext()) - { - i_Records++; - } - //-------------------------------------------------------------------------- - if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData()))) - { - Temp0.Printf(_("\n-E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of >%s<.\n-E-> "),tb_Name.c_str()); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxLogMessage(Temp0); - return FALSE; - } - //-------------------------------------------------------------------------- - // SetColDefs ( 0,"NAME", DB_DATA_TYPE_VARCHAR, Name, SQL_C_CHAR, sizeof(Name), TRUE, TRUE); // Primary index - //-------------------------------------------------------------------------- - if (!Quite) - { - wxLogMessage(_("\n-I-> BrowserDB::OnSelect(%s) Records(%d): End "),tb_Name.c_str(),i_Records); - } - return TRUE; + wxString SQLStmt; + i_Records = 0; + //--------------------------------------------------------------------------------------- + SQLStmt.sprintf("SELECT * FROM %s",tb_Name.c_str()); + if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData()))) + { + Temp0.Printf(_("\n-E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of >%s<.\n-E-> "),tb_Name.c_str()); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); + wxLogMessage(Temp0); + wxMessageBox("-E-> BrowserDB::OnSelect - GetData()"); + return FALSE; + } + //--------------------------------------------------------------------------------------- + while (db_BrowserDB->GetNext()) + { + i_Records++; + } + //--------------------------------------------------------------------------------------- + if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData()))) + { + Temp0.Printf(_("\n-E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of >%s<.\n-E-> "),tb_Name.c_str()); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); + wxLogMessage(Temp0); + return FALSE; + } + //--------------------------------------------------------------------------------------- + // SetColDefs ( 0,"NAME", DB_DATA_TYPE_VARCHAR, Name, SQL_C_CHAR, sizeof(Name), TRUE, TRUE); // Primary index + //--------------------------------------------------------------------------------------- + if (!Quite) + { + wxLogMessage(_("\n-I-> BrowserDB::OnSelect(%s) Records(%d): End "),tb_Name.c_str(),i_Records); + } + return TRUE; } //---------------------------------------------------------------------------------------- bool BrowserDB::OnExecSql(wxString SQLStmt, int Quite) { - //-------------------------------------------------------------------------- - if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData()))) - { - Temp0.Printf(_("\n-E-> BrowserDB::OnExecSQL - ODBC-Error with ExecSql of >%s<.\n-E-> "),SQLStmt.c_str()); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); - if (!Quite) - wxLogMessage(Temp0); - else - wxMessageBox("-E-> BrowserDB::OnExecSql - ExecSql()"); - return FALSE; - } + //--------------------------------------------------------------------------------------- + if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData()))) + { + Temp0.Printf(_("\n-E-> BrowserDB::OnExecSQL - ODBC-Error with ExecSql of >%s<.\n-E-> "),SQLStmt.c_str()); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); if (!Quite) - { - // wxLogMessage(_("\n-I-> BrowserDB::OnExecSql(%s) - End "),SQLStmt.c_str()); - } - return TRUE; + wxLogMessage(Temp0); + else + wxMessageBox("-E-> BrowserDB::OnExecSql - ExecSql()"); + return FALSE; + } + if (!Quite) + { + // wxLogMessage(_("\n-I-> BrowserDB::OnExecSql(%s) - End "),SQLStmt.c_str()); + } + return TRUE; } //---------------------------------------------------------------------------------------- wxDbInf* BrowserDB::OnGetCatalog(int Quite) { - char UName[255]; - strcpy(UName,UserName); - ct_BrowserDB = db_BrowserDB->GetCatalog(UName); - return ct_BrowserDB; + char UName[255]; + strcpy(UName,UserName); + ct_BrowserDB = db_BrowserDB->GetCatalog(UName); + return ct_BrowserDB; } //---------------------------------------------------------------------------------------- wxColInf* BrowserDB::OnGetColumns(char *tableName, int numCols,int Quite) { - char UName[255]; - int i; - strcpy(UName,UserName); - cl_BrowserDB = db_BrowserDB->GetColumns(tableName,&numCols,UName); - cl_BrowserDB->pColFor = new wxColFor[numCols]; - for (i=0;ipColFor+i)->Format(1,(cl_BrowserDB+i)->dbDataType,(cl_BrowserDB+i)->sqlDataType, - (cl_BrowserDB+i)->columnSize, (cl_BrowserDB+i)->decimalDigits); - } - return cl_BrowserDB; + char UName[255]; + int i; + strcpy(UName,UserName); + cl_BrowserDB = db_BrowserDB->GetColumns(tableName,&numCols,UName); + cl_BrowserDB->pColFor = new wxColFor[numCols]; + for (i=0;ipColFor+i)->Format(1,(cl_BrowserDB+i)->dbDataType,(cl_BrowserDB+i)->sqlDataType, + (cl_BrowserDB+i)->columnSize, (cl_BrowserDB+i)->decimalDigits); + } + return cl_BrowserDB; } //---------------------------------------------------------------------------------------- void BrowserDB::Zeiger_auf_NULL(int Art) { - if (Art == 1) // Löschen - { - if (cl_BrowserDB != NULL) - { // Destroy the memory - delete [] cl_BrowserDB; - } - if (ct_BrowserDB != NULL) - { // Destroy the memory - delete [] ct_BrowserDB; - } - if (db_BrowserDB != NULL) - { - db_BrowserDB->CommitTrans(); - db_BrowserDB->Close(); - CloseDbConnections(); - delete db_BrowserDB; - } - } - cl_BrowserDB = NULL; - ct_BrowserDB = NULL; - db_BrowserDB = NULL; - p_LogWindow = NULL; + if (Art == 1) // Löschen + { + if (cl_BrowserDB != NULL) + { // Destroy the memory + delete [] cl_BrowserDB; + } + if (ct_BrowserDB != NULL) + { // Destroy the memory + delete [] ct_BrowserDB; + } + if (db_BrowserDB != NULL) + { + db_BrowserDB->CommitTrans(); + db_BrowserDB->Close(); + CloseDbConnections(); + delete db_BrowserDB; + } + } + cl_BrowserDB = NULL; + ct_BrowserDB = NULL; + db_BrowserDB = NULL; + p_LogWindow = NULL; } //---------------------------------------------------------------------------------------- void BrowserDB::OnFillSqlTyp() { - i_SqlTyp[1] = SQL_C_BINARY; s_SqlTyp[1] = "SQL_C_BINARY"; - i_SqlTyp[2] = SQL_C_BIT; s_SqlTyp[2] = "SQL_C_BIT"; - i_SqlTyp[3] = SQL_C_BOOKMARK; s_SqlTyp[3] = "SQL_C_BOOKMARK"; - i_SqlTyp[4] = SQL_C_CHAR; s_SqlTyp[4] = "SQL_C_CHAR"; - i_SqlTyp[5] = SQL_C_DATE; s_SqlTyp[5] = "SQL_C_DATE"; - i_SqlTyp[6] = SQL_C_DEFAULT; s_SqlTyp[6] = "SQL_C_DEFAULT"; - i_SqlTyp[7] = SQL_C_DOUBLE; s_SqlTyp[7] = "SQL_C_DOUBLE"; - i_SqlTyp[8] = SQL_C_FLOAT; s_SqlTyp[8] = "SQL_C_FLOAT"; - i_SqlTyp[9] = SQL_C_LONG; s_SqlTyp[9] = "SQL_C_LONG"; - i_SqlTyp[10] = SQL_C_SHORT; s_SqlTyp[10] = "SQL_C_SHORT"; - i_SqlTyp[11] = SQL_C_SLONG; s_SqlTyp[11] = "SQL_C_SLONG"; - i_SqlTyp[12] = SQL_C_SSHORT; s_SqlTyp[12] = "SQL_C_SSHORT"; - i_SqlTyp[13] = SQL_C_STINYINT; s_SqlTyp[13] = "SQL_C_STINYINT"; - i_SqlTyp[14] = SQL_C_TIME; s_SqlTyp[14] = "SQL_C_TIME"; - i_SqlTyp[15] = SQL_C_TIMESTAMP; s_SqlTyp[15] = "SQL_C_TIMESTAMP"; - i_SqlTyp[16] = SQL_C_TINYINT; s_SqlTyp[16] = "SQL_C_TINYINT"; - i_SqlTyp[17] = SQL_C_ULONG; s_SqlTyp[17] = "SQL_C_ULONG"; - i_SqlTyp[18] = SQL_C_USHORT; s_SqlTyp[18] = "SQL_C_USHORT"; - i_SqlTyp[19] = SQL_C_UTINYINT; s_SqlTyp[19] = "SQL_C_UTINYINT"; - i_SqlTyp[20] = SQL_VARCHAR; s_SqlTyp[20] = "SQL_VARCHAR"; - i_SqlTyp[21] = SQL_NUMERIC; s_SqlTyp[21] = "SQL_NUMERIC"; - i_SqlTyp[22] = SQL_LONGVARCHAR; s_SqlTyp[22] = "SQL_LONGVARCHAR"; - i_SqlTyp[23] = SQL_REAL; s_SqlTyp[23] = "SQL_REAL"; - i_SqlTyp[0] = 23; s_SqlTyp[0] = ""; + i_SqlTyp[1] = SQL_C_BINARY; s_SqlTyp[1] = "SQL_C_BINARY"; + i_SqlTyp[2] = SQL_C_BIT; s_SqlTyp[2] = "SQL_C_BIT"; + i_SqlTyp[3] = SQL_C_BOOKMARK; s_SqlTyp[3] = "SQL_C_BOOKMARK"; + i_SqlTyp[4] = SQL_C_CHAR; s_SqlTyp[4] = "SQL_C_CHAR"; + i_SqlTyp[5] = SQL_C_DATE; s_SqlTyp[5] = "SQL_C_DATE"; + i_SqlTyp[6] = SQL_C_DEFAULT; s_SqlTyp[6] = "SQL_C_DEFAULT"; + i_SqlTyp[7] = SQL_C_DOUBLE; s_SqlTyp[7] = "SQL_C_DOUBLE"; + i_SqlTyp[8] = SQL_C_FLOAT; s_SqlTyp[8] = "SQL_C_FLOAT"; + i_SqlTyp[9] = SQL_C_LONG; s_SqlTyp[9] = "SQL_C_LONG"; + i_SqlTyp[10] = SQL_C_SHORT; s_SqlTyp[10] = "SQL_C_SHORT"; + i_SqlTyp[11] = SQL_C_SLONG; s_SqlTyp[11] = "SQL_C_SLONG"; + i_SqlTyp[12] = SQL_C_SSHORT; s_SqlTyp[12] = "SQL_C_SSHORT"; + i_SqlTyp[13] = SQL_C_STINYINT; s_SqlTyp[13] = "SQL_C_STINYINT"; + i_SqlTyp[14] = SQL_C_TIME; s_SqlTyp[14] = "SQL_C_TIME"; + i_SqlTyp[15] = SQL_C_TIMESTAMP; s_SqlTyp[15] = "SQL_C_TIMESTAMP"; + i_SqlTyp[16] = SQL_C_TINYINT; s_SqlTyp[16] = "SQL_C_TINYINT"; + i_SqlTyp[17] = SQL_C_ULONG; s_SqlTyp[17] = "SQL_C_ULONG"; + i_SqlTyp[18] = SQL_C_USHORT; s_SqlTyp[18] = "SQL_C_USHORT"; + i_SqlTyp[19] = SQL_C_UTINYINT; s_SqlTyp[19] = "SQL_C_UTINYINT"; + i_SqlTyp[20] = SQL_VARCHAR; s_SqlTyp[20] = "SQL_VARCHAR"; + i_SqlTyp[21] = SQL_NUMERIC; s_SqlTyp[21] = "SQL_NUMERIC"; + i_SqlTyp[22] = SQL_LONGVARCHAR; s_SqlTyp[22] = "SQL_LONGVARCHAR"; + i_SqlTyp[23] = SQL_REAL; s_SqlTyp[23] = "SQL_REAL"; + i_SqlTyp[0] = 23; s_SqlTyp[0] = ""; } //---------------------------------------------------------------------------------------- void BrowserDB::OnFilldbTyp() { - i_dbTyp[1] = DB_DATA_TYPE_VARCHAR; s_dbTyp[1] = "DB_DATA_TYPE_VARCHAR"; - i_dbTyp[2] = DB_DATA_TYPE_INTEGER; s_dbTyp[2] = "DB_DATA_TYPE_INTEGER"; - i_dbTyp[3] = DB_DATA_TYPE_FLOAT; s_dbTyp[3] = "DB_DATA_TYPE_FLOAT"; - i_dbTyp[4] = DB_DATA_TYPE_DATE; s_dbTyp[4] = "DB_DATA_TYPE_DATE"; - i_dbTyp[0] = 4; s_dbTyp[0] = ""; + i_dbTyp[1] = DB_DATA_TYPE_VARCHAR; s_dbTyp[1] = "DB_DATA_TYPE_VARCHAR"; + i_dbTyp[2] = DB_DATA_TYPE_INTEGER; s_dbTyp[2] = "DB_DATA_TYPE_INTEGER"; + i_dbTyp[3] = DB_DATA_TYPE_FLOAT; s_dbTyp[3] = "DB_DATA_TYPE_FLOAT"; + i_dbTyp[4] = DB_DATA_TYPE_DATE; s_dbTyp[4] = "DB_DATA_TYPE_DATE"; + i_dbTyp[0] = 4; s_dbTyp[0] = ""; } //---------------------------------------------------------------------------------------- - - - - - - diff --git a/demos/dbbrowse/browsedb.h b/demos/dbbrowse/browsedb.h index 2195c96917..2fde1fbb78 100644 --- a/demos/dbbrowse/browsedb.h +++ b/demos/dbbrowse/browsedb.h @@ -1,26 +1,26 @@ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // Name: browsedb.h -// Purpose: a wxDB ; +// Purpose: a wxDB class // Author: Mark Johnson, mj10777@gmx.net // Modified by: // Created: 19991127.mj10777 // Copyright: (c) Mark Johnson // Licence: wxWindows license // RCS-ID: $Id$ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- //-- Zu tun in browsedb.h -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- //-- 1) -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // Global structure for holding ODBC connection information -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- extern struct DbStuff DbConnectInf; class mjDoc; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- class BrowserDB { public: - //--------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- // Pointer to the main database connection used in the program. This // pointer would normally be used for doing things as database lookups // for user login names and passwords, getting workstation settings, etc. @@ -40,13 +40,13 @@ class BrowserDB // the entire program to use for READ-ONLY database accesses, but for each // table object which will do a CommitTrans() or RollbackTrans() that a // new wxDB object be created and used for it. - //--------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- wxDB* db_BrowserDB; wxDbInf* ct_BrowserDB; wxColInf* cl_BrowserDB; wxString ODBCSource, UserName, Password; mjDoc *pDoc; - //--------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5; wxString ODBCText; wxTextCtrl* p_LogWindow; @@ -57,12 +57,12 @@ class BrowserDB int i_Which; int i_Records; int i_Cols; - //--------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- BrowserDB(); ~BrowserDB(); void Zeiger_auf_NULL(int Art); bool Initialize(int Quite); - //--------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- bool OnStartDB(int Quite); bool OnCloseDB(int Quite); bool OnSelect(wxString tb_Name,int Quite); @@ -72,6 +72,6 @@ class BrowserDB wxColInf* OnGetColumns(char *tableName, int numCols,int Quite); void OnFillSqlTyp(); void OnFilldbTyp(); - //--------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- }; // BrowserDB class definition -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- diff --git a/demos/dbbrowse/dbbrowse.cpp b/demos/dbbrowse/dbbrowse.cpp index e4c64dc9be..b6770225e4 100644 --- a/demos/dbbrowse/dbbrowse.cpp +++ b/demos/dbbrowse/dbbrowse.cpp @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- // Name: dbbrowse.cpp // Purpose: Through ODBC - Databases Browsen // Author: Mark Johnson, mj10777@gmx.net @@ -8,61 +8,50 @@ // Copyright: (c) Mark Johnson // Licence: wxWindows license // RCS-ID: $Id$ -//------------------------------------------------------------------------------ -//-- all #ifdefs that the whole Project needs. ------------------------------ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- all #ifdefs that the whole Project needs. ------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __GNUG__ #pragma implementation #pragma interface #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __BORLANDC__ #pragma hdrstop #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifndef WX_PRECOMP #include "wx/wx.h" #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifndef __WXMSW__ #endif #include "bitmaps/logo.xpm" -//--------------------------------------------------------------------------- -//-- all #includes that every .cpp needs --- 19990807.mj10777 --- -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- all #includes that every .cpp needs --- 19990807.mj10777 ---------------- +//---------------------------------------------------------------------------------------- #include "std.h" // sorgsam Pflegen ! #include -//--------------------------------------------------------------------------- -//-- Some Global Vars for this file ---------------------------------------- -//--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- Some Global Vars for this file ------------------------------------------------------ +//---------------------------------------------------------------------------------------- MainFrame *frame = NULL; // The one and only MainFrame -// wxLogNull logNo; // No Log messages -//--------------------------------------------------------------------------- -// verify that the item is ok and insult the user if it is not -#define CHECK_ITEM(item) \ - if (!item.IsOk()) \ - { \ - wxMessageBox(_("Please select some item first!"),_("Tree sample error"), \ - wxOK | wxICON_EXCLAMATION,this); \ - return; \ - } \ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- BEGIN_EVENT_TABLE(MainFrame, wxFrame) EVT_MENU(QUIT, MainFrame::OnQuit) EVT_MENU(ABOUT, MainFrame::OnAbout) EVT_MENU(HELP, MainFrame::OnHelp) EVT_SIZE(MainFrame::OnSize) END_EVENT_TABLE() -//--------------------------------------------------------------------------- -IMPLEMENT_APP(MyApp) -//--------------------------------------------------------------------------- -// `Main program' equivalent, creating windows and returning main app frame -//--------------------------------------------------------------------------- -bool MyApp::OnInit(void) +//---------------------------------------------------------------------------------------- +IMPLEMENT_APP(MainApp) +//---------------------------------------------------------------------------------------- +// 'Main program' equivalent, creating windows and returning main app frame +//---------------------------------------------------------------------------------------- +bool MainApp::OnInit(void) { //--------------------------------------------------------------------------------------- // set the language to use @@ -70,8 +59,10 @@ bool MyApp::OnInit(void) const char *language = NULL; const char *langid = NULL; //--------------------------------------------------------------------------------------- + //-- Graphic File suport - use only when needed, otherwise big .exe's + //--------------------------------------------------------------------------------------- #if wxUSE_LIBPNG - wxImage::AddHandler( new wxPNGHandler ); // use only when needed, otherwise big .exe's + wxImage::AddHandler( new wxPNGHandler ); // needed for help System #endif /* #if wxUSE_LIBJPEG @@ -82,11 +73,11 @@ bool MyApp::OnInit(void) wxImage::AddHandler( new wxPNMHandler ); // use only when needed, otherwise big .exe's */ #ifdef __WXMSW__ - // wxBitmap::AddHandler( new wxXPMFileHandler ); // use only when needed, otherwise big .exe's - // wxBitmap::AddHandler( new wxXPMDataHandler ); // use only when needed, otherwise big .exe's + // wxBitmap::AddHandler( new wxXPMFileHandler ); // Attempt to use XPS instead of ico + // wxBitmap::AddHandler( new wxXPMDataHandler ); // - Attempt failed #endif //--------------------------------------------------------------------------------------- - langid = "std"; // BJO20000125 instead of "" + langid = "std"; // Standard language is "std" = english switch ( argc ) { default: @@ -114,13 +105,12 @@ bool MyApp::OnInit(void) // name is the name of the executable and the vendor name is the same) //--------------------------------------------------------------------------------------- SetVendorName("mj10777"); - SetAppName("DBBrowser"); // not needed, it's the default value + SetAppName("DBBrowser"); p_ProgramCfg = wxConfigBase::Get(); // p_ProgramCfg->DeleteAll(); p_ProgramCfg->SetPath("/"); wxString Temp0, Temp1; Temp0.Empty(); - //--------------------------------------------------------------------------------------- //-- Set the Language and remember it for the next time. -------------------------------- //--------------------------------------------------------------------------------------- @@ -136,7 +126,7 @@ bool MyApp::OnInit(void) Temp0 = langid; p_ProgramCfg->Write("/Local/langid",Temp0); // >const char *langid< can't be used here //--------------------------------------------------------------------------------------- - // Support the following languages + // Support the following languages (std = english) if (Temp0 != "std") { if (Temp0 == "cz") @@ -172,37 +162,29 @@ bool MyApp::OnInit(void) p_ProgramCfg->Write("/Local/language",Temp0); Temp0 = "std"; // allways english if not german or french (at the moment austrian) } - + //--------------------------------------------------------------------------------------- Temp0 = "NONE"; p_ProgramCfg->Write("/NONE",Temp0); p_ProgramCfg->Write("/Paths/NONE",Temp0); p_ProgramCfg->Write("/MainFrame/NONE",Temp0); - //----------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- p_ProgramCfg->Write("/Paths/Work",wxGetCwd()); p_ProgramCfg->SetPath("/"); - //----------------------------------------------------------------------------- - // or you could also write something like this: - // wxFileConfig *p_ProgramCfg = new wxFileConfig("conftest"); - // wxConfigBase::Set(p_ProgramCfg); - // where you can also specify the file names explicitly if you wish. - // Of course, calling Set() is optional and you only must do it if - // you want to later retrieve this pointer with Get(). - //---------------------------------------------------------------------------- - // SetPath() understands ".." - // restore frame position and size + //--------------------------------------------------------------------------------------- + // restore frame position and size, if empty start Values (1,1) and (750,600) int x = p_ProgramCfg->Read("/MainFrame/x", 1), y = p_ProgramCfg->Read("/MainFrame/y", 1), - w = p_ProgramCfg->Read("/MainFrame/w", 600), h = p_ProgramCfg->Read("/MainFrame/h", 450); + w = p_ProgramCfg->Read("/MainFrame/w", 750), h = p_ProgramCfg->Read("/MainFrame/h", 600); //--------------------------------------------------------------------------------------- // Create the main frame window - frame = new MainFrame((wxFrame *) NULL, (char *) _("DBBrowser - mj10777"),x,y,w,h); - //--------------------------------------------------------------------------------------- - // This reduces flicker effects - even better would be to define OnEraseBackground - // to do Temp0. When the list control's scrollbars are show or hidden, the - // frame is sent a background erase event. + frame = new MainFrame((wxFrame *) NULL, (char *) _("DBBrowser - mj10777"),wxPoint(x,y),wxSize(w,h)); //--------------------------------------------------------------------------------------- - frame->SetBackgroundColour( *wxWHITE ); + // Set the Backgroundcolour (only need if your are NOT using wxSYS_COLOUR_BACKGROUND) + frame->SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BACKGROUND)); // frame->SetBackgroundColour(wxColour(255, 255, 255)); - + // frame->SetBackgroundColour(* wxWHITE); + //--------------------------------------------------------------------------------------- + // Give it an icon + frame->SetIcon(wxICON(aLogo)); // Programm Icon = lowest name in RC File //--------------------------------------------------------------------------------------- // Make a menubar wxMenu *file_menu = new wxMenu; @@ -223,9 +205,8 @@ bool MyApp::OnInit(void) //--------------------------------------------------------------------------------------- int width, height; frame->GetClientSize(&width, &height); - - frame->p_Splitter = new DocSplitterWindow(frame, SPLITTER_WINDOW); - + //--------------------------------------------------------------------------------------- + frame->p_Splitter = new DocSplitterWindow(frame,-1); // p_Splitter->SetCursor(wxCursor(wxCURSOR_PENCIL)); frame->pDoc = new mjDoc(); frame->pDoc->p_MainFrame = frame; @@ -233,8 +214,6 @@ bool MyApp::OnInit(void) frame->pDoc->p_Splitter->pDoc = frame->pDoc; // ControlBase: saving the Sash if (!frame->pDoc->OnNewDocument()) frame->Close(TRUE); - // frame->Maximize(); - // frame->SetSize(-1,-1); // the wxSplitter does not show correctly without this ! frame->SetClientSize(width, height); // the wxSplitter does not show correctly without this ! //--------------------------------------------------------------------------------------- //-- Problem : GetClientSize(Width,Hight) are not the same as the values given in the --- @@ -246,49 +225,27 @@ bool MyApp::OnInit(void) //---------------------------------------------------------------------------- //-- Help : --- //---------------------------------------------------------------------------- - - frame->help.UseConfig(p_ProgramCfg); - frame->help.AddBook(langhelp); - /* - if (!frame->help.AddBook("helpfiles/dbbrowse.hhp")) - wxMessageBox("Failed adding book helpfiles/dbbrowse.hhp"); - if (!frame->help.AddBook("helpfiles/testing.hhp")) - wxMessageBox("Failed adding book helpfiles/testing.hhp"); - if (!frame->help.AddBook("helpfiles/another.hhp")) - wxMessageBox("Failed adding book helpfiles/another.hhp"); - */ - - - //--------------------------------------------------------------------------------------- - p_ProgramCfg->Flush(TRUE); // sicher Objekt - + frame->p_Help = new wxHtmlHelpController(); // construct the Help System + frame->p_Help->UseConfig(p_ProgramCfg); // Don't rember what this was for + frame->p_Help->AddBook(langhelp); // Use the language set + frame->pDoc->p_Help = frame->p_Help; // Save the information to the document //--------------------------------------------------------------------------------------- // Show the frame frame->Show(TRUE); SetTopWindow(frame); - - - + //--------------------------------------------------------------------------------------- + p_ProgramCfg->Flush(TRUE); // sicher Objekt return TRUE; -} -//--------------------------------------------------------------------------- +} // bool MainApp::OnInit(void) +//---------------------------------------------------------------------------------------- // My frame constructor -//--------------------------------------------------------------------------- -MainFrame::MainFrame(wxFrame *frame, char *title, int x, int y, int w, int h): - wxFrame(frame, SPLITTER_FRAME, title, wxPoint(x, y), wxSize(w, h)) +//---------------------------------------------------------------------------------------- +MainFrame::MainFrame(wxFrame *frame, char *title, const wxPoint& pos, const wxSize& size): + wxFrame(frame, -1, title, pos, size) { - InitializeMenu(); - // This reduces flicker effects - even better would be to define OnEraseBackground - // to do Temp0. When the list control's scrollbars are show or hidden, the - // frame is sent a background erase event. - SetBackgroundColour( *wxWHITE ); - // frame->SetBackgroundColour(wxColour(255, 255, 255)); - //--------------------------------------------------------------------------------------- - // Give it an icon - SetIcon( wxICON(Logo) ); - //--------------------------------------------------------------------------------------- + //--- Everything is done in MainApp ----------------------------------------------------- } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- MainFrame::~MainFrame(void) { // save the control's values to the config @@ -307,36 +264,18 @@ MainFrame::~MainFrame(void) // Get() it doesn't try to create one if there is none (definitely not what // we want here!) // delete wxConfigBase::Set((wxConfigBase *) NULL); - p_ProgramCfg->Flush(TRUE); // sichert Objekt - delete frame->pDoc; -} -//-------------------------------------------------------------------------------------- -void MainFrame::InitializeMenu() -{ - //--------------------------------------------------------------------------------------- - // Make a menubar - //--------------------------------------------------------------------------------------- - wxMenu *file_menu = new wxMenu; - - file_menu->Append(ABOUT, _("&About")); - file_menu->AppendSeparator(); - file_menu->Append(QUIT, _("E&xit")); - - - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, _("&File")); - SetMenuBar(menu_bar); + p_ProgramCfg->Flush(TRUE); // saves Objekt + delete frame->pDoc; // Cleanup } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void MainFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) { - // Close the help frame; this will cause the config data to - // get written. - if (help.GetFrame()) // returns NULL if no help frame active - help.GetFrame()->Close(TRUE); + // Close the help frame; this will cause the config data to get written. + if (p_Help->GetFrame()) // returns NULL if no help frame active + p_Help->GetFrame()->Close(TRUE); Close(TRUE); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void MainFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { wxMessageDialog dialog(this, _("DBBrowser\nMark Johnson\nBerlin, Germany\nmj10777@gmx.net\n (c) 1999"), @@ -344,9 +283,9 @@ void MainFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) dialog.ShowModal(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void MainFrame::OnHelp(wxCommandEvent& WXUNUSED(event)) { - help.Display("Main page"); + p_Help->Display("Main page"); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- diff --git a/demos/dbbrowse/dbbrowse.h b/demos/dbbrowse/dbbrowse.h index 32a7785005..13f8571891 100644 --- a/demos/dbbrowse/dbbrowse.h +++ b/demos/dbbrowse/dbbrowse.h @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- // Name: dbbrowse.h // Purpose: Through ODBC - Databases Browsen // Author: Mark Johnson, mj10777@gmx.net @@ -7,49 +7,46 @@ // Copyright: (c) Mark Johnson // Licence: wxWindows license // RCS-ID: $Id$ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // Define a new application type -//------------------------------------------------------------------------------ -class MyApp: public wxApp +//---------------------------------------------------------------------------------------- +class MainApp: public wxApp { public: - bool OnInit(void); - wxLocale m_locale; // locale we'll be using + bool OnInit(void); // Programmstart + wxLocale m_locale; // locale we'll be using and language support }; -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- // Define a new frame type -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- class MainFrame: public wxFrame { public: - MainFrame(wxFrame *frame, char *title, int x, int y, int w, int h); + MainFrame(wxFrame *frame, char *title, const wxPoint& pos, const wxSize& size); ~MainFrame(void); public: // menu callbacks - void InitializeMenu(); void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); void OnHelp(wxCommandEvent& event); - //-------------------------------------------------------- - wxHtmlHelpController help; - //-------------------------------------------------------- + //-------------------------------------------------------------------------------------- + wxHtmlHelpController *p_Help; + //-------------------------------------------------------------------------------------- int DiffW, DiffH; mjDoc *pDoc; DocSplitterWindow *p_Splitter; - //-------------------------------------------------------- + //-------------------------------------------------------------------------------------- DECLARE_EVENT_TABLE() }; -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- // ID for the menu quit command -//------------------------------------------------------------------------------ -#define QUIT 1 -#define ABOUT 2 -#define HELP 3 -#define SPLITTER_FRAME 100 -#define SPLITTER_WINDOW 101 +//---------------------------------------------------------------------------------------- +#define QUIT 777 +#define ABOUT 778 +#define HELP 779 #define TREE_CTRL_PGM 102 #define GRID_CTRL 103 #define TREE_CTRL_DB 104 #define GRID_CTRL_DB 105 -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- diff --git a/demos/dbbrowse/dbbrowse.rc b/demos/dbbrowse/dbbrowse.rc index ec17794d14..116ca054c3 100644 --- a/demos/dbbrowse/dbbrowse.rc +++ b/demos/dbbrowse/dbbrowse.rc @@ -1,4 +1,4 @@ -Logo ICON "bitmaps\\logo.ico" +aLogo ICON "bitmaps\\logo.ico" Col ICON "bitmaps\\col.ico" DSNClosed ICON "bitmaps\\dsnclose.ico" DSNOpen ICON "bitmaps\\dsnopen.ico" diff --git a/demos/dbbrowse/dbgrid.cpp b/demos/dbbrowse/dbgrid.cpp index f36f771c97..b83245f264 100644 --- a/demos/dbbrowse/dbgrid.cpp +++ b/demos/dbbrowse/dbgrid.cpp @@ -1,4 +1,4 @@ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // Name: DBGrid.cpp // Purpose: wxGrid sample // Author: Mark Johnson @@ -7,83 +7,81 @@ // Copyright: (c) // Licence: wxWindows license // RCS-ID: $Id$ -//--------------------------------------------------------------------------- -//-- all #ifdefs that the whole Project needs. ------------------------------ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- all #ifdefs that the whole Project needs. ------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __GNUG__ #pragma implementation #pragma interface #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __BORLANDC__ #pragma hdrstop #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifndef WX_PRECOMP #include "wx/wx.h" #endif -//--------------------------------------------------------------------------- -//-- all #includes that every .cpp needs --- 19990807.mj10777 --- -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- all #includes that every .cpp needs --- 19990807.mj10777 ---------------- +//---------------------------------------------------------------------------------------- #include "std.h" // sorgsam Pflegen ! -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- BEGIN_EVENT_TABLE(DBGrid, wxGrid) - EVT_MOTION (DBGrid::OnMouseMove) - // DBGrid - EVT_GRID_LABEL_LEFT_CLICK( DBGrid::OnLabelLeftClick ) - EVT_GRID_LABEL_RIGHT_CLICK( DBGrid::OnLabelRightClick ) - EVT_GRID_LABEL_LEFT_DCLICK( DBGrid::OnLabelLeftDClick ) - EVT_GRID_LABEL_RIGHT_DCLICK( DBGrid::OnLabelRightDClick ) - EVT_GRID_CELL_LEFT_CLICK( DBGrid::OnCellLeftClick ) - EVT_GRID_CELL_RIGHT_CLICK( DBGrid::OnCellRightClick ) - EVT_GRID_CELL_LEFT_DCLICK( DBGrid::OnCellLeftDClick ) - EVT_GRID_CELL_RIGHT_DCLICK( DBGrid::OnCellRightDClick ) - EVT_GRID_ROW_SIZE( DBGrid::OnRowSize ) - // EVT_GRID_COL_SIZE( DBGrid::OnColSize ) - EVT_GRID_RANGE_SELECT( DBGrid::OnRangeSelected ) - EVT_GRID_CELL_CHANGE( DBGrid::OnCellChange ) - EVT_MENU(GRID_EDIT,DBGrid::OnModusEdit) - EVT_MENU(GRID_BROWSE,DBGrid::OnModusBrowse) - END_EVENT_TABLE() - //--------------------------------------------------------------------------- - // wxListCtrl(parent, id, pos, size, style) - // wxGrid(parent,-1,wxPoint( 0, 0 ), wxSize( 400, 300 ) ); - //--------------------------------------------------------------------------- - // DBGrid - //--------------------------------------------------------------------------- - // DBGrid::DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size): - // wxGrid(parent, id, pos, size) - DBGrid::DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size, long style): - wxGrid(parent, id, pos, size, style) + EVT_MOTION (DBGrid::OnMouseMove) + // DBGrid + EVT_GRID_LABEL_LEFT_CLICK( DBGrid::OnLabelLeftClick ) + EVT_GRID_LABEL_RIGHT_CLICK( DBGrid::OnLabelRightClick ) + EVT_GRID_LABEL_LEFT_DCLICK( DBGrid::OnLabelLeftDClick ) + EVT_GRID_LABEL_RIGHT_DCLICK( DBGrid::OnLabelRightDClick ) + EVT_GRID_CELL_LEFT_CLICK( DBGrid::OnCellLeftClick ) + EVT_GRID_CELL_RIGHT_CLICK( DBGrid::OnCellRightClick ) + EVT_GRID_CELL_LEFT_DCLICK( DBGrid::OnCellLeftDClick ) + EVT_GRID_CELL_RIGHT_DCLICK( DBGrid::OnCellRightDClick ) + EVT_GRID_ROW_SIZE( DBGrid::OnRowSize ) + // EVT_GRID_COL_SIZE( DBGrid::OnColSize ) + EVT_GRID_RANGE_SELECT( DBGrid::OnRangeSelected ) + EVT_GRID_CELL_CHANGE( DBGrid::OnCellChange ) + EVT_MENU(GRID_EDIT,DBGrid::OnModusEdit) + EVT_MENU(GRID_BROWSE,DBGrid::OnModusBrowse) +END_EVENT_TABLE() +//---------------------------------------------------------------------------------------- +// wxListCtrl(parent, id, pos, size, style) +// wxGrid(parent,-1,wxPoint( 0, 0 ), wxSize( 400, 300 ) ); +//---------------------------------------------------------------------------------------- +// DBGrid +//---------------------------------------------------------------------------------------- +// DBGrid::DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size): +// wxGrid(parent, id, pos, size) +DBGrid::DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size, long style): + wxGrid(parent, id, pos, size, style) { - //f_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS"); - f_Temp = new wxFont(wxSystemSettings::GetSystemFont(wxSYS_SYSTEM_FONT)); - wxPanel::SetFont(* f_Temp); - b_EditModus = TRUE; - //---------------------------------------------------------------------------------------------------------------------------- - popupMenu1 = new wxMenu(""); - popupMenu1->Append(GRID_EDIT, _("Edit Modus")); - popupMenu2 = new wxMenu(""); - popupMenu2->Append(GRID_BROWSE, _("Browse Modus")); + b_EditModus = TRUE; + //--------------------------------------------------------------------------------------- + popupMenu1 = new wxMenu(""); + popupMenu1->Append(GRID_EDIT, _("Edit Modus")); + popupMenu2 = new wxMenu(""); + popupMenu2->Append(GRID_BROWSE, _("Browse Modus")); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- DBGrid::~DBGrid() { } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- int DBGrid::OnTableView(wxString Table) { - //--------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- int i=0,x,y,z, ValidTable=0; wxString Temp0; //SetLabelFont(* f_Temp); wxBeginBusyCursor(); - //--------------------------------------------------------------------------- + SetFont(* pDoc->ft_Doc); + //--------------------------------------------------------------------------------------- ct_BrowserDB = (db_Br+i_Which)->ct_BrowserDB; // Get the DSN Pointer - //---------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- if (ct_BrowserDB) // Valid pointer (!= NULL) ? { // Pointer is Valid, use the wxDatabase Information for (x=0;xnumTables;x++) // go through the Tables @@ -135,241 +133,238 @@ int DBGrid::OnTableView(wxString Table) } // if (ct_BrowserDB) else wxLogMessage(_("\n-E-> DBGrid::OnTableView():: Invalid DSN Pointer : Failed")); - //--------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- Weiter: - SetEditInPlace(b_EditModus); // Activate in-place Editing (FALSE) - wxEndBusyCursor(); - //--------------------------------------------------------------------------- - wxLogMessage(_("-I-> DBGrid::OnTableView() - End")); - return 0; + SetEditInPlace(b_EditModus); // Activate in-place Editing (FALSE) + wxEndBusyCursor(); + //--------------------------------------------------------------------------------------- + wxLogMessage(_("-I-> DBGrid::OnTableView() - End")); + return 0; } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnModusEdit(wxMenu& menu, wxCommandEvent& event) { - b_EditModus = TRUE; // Needed by PopupMenu - SetEditable(FALSE); // Do not Edit with Text Edit Control - SetEditInPlace(b_EditModus); // Deactivate in-place Editing - UpdateDimensions(); // Redraw the Grid + b_EditModus = TRUE; // Needed by PopupMenu + SetEditable(FALSE); // Do not Edit with Text Edit Control + SetEditInPlace(b_EditModus); // Deactivate in-place Editing + UpdateDimensions(); // Redraw the Grid } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnModusBrowse(wxMenu& menu, wxCommandEvent& event) { - b_EditModus = FALSE; // Needed by PopupMenu - SetEditInPlace(b_EditModus); // Deactivate in-place Editing - UpdateDimensions(); // Redraw the Grid + b_EditModus = FALSE; // Needed by PopupMenu + SetEditInPlace(b_EditModus); // Deactivate in-place Editing + UpdateDimensions(); // Redraw the Grid } -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- void DBGrid::OnMouseMove(wxMouseEvent &event) { - MousePos = event.GetPosition(); + MousePos = event.GetPosition(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnLabelLeftClick( wxGridEvent& ev ) { - logBuf = "DBGrid::OnLabelLeftClick : "; - if ( ev.GetRow() != -1 ) - { - logBuf << "row label " << ev.GetRow(); - } - else if ( ev.GetCol() != -1 ) - { - logBuf << "col label " << ev.GetCol(); - } - else - { - logBuf << "corner label"; - } - if ( ev.ShiftDown() ) - logBuf << " (shift down)"; - // wxLogMessage( "%s", logBuf.c_str() ); - logBuf += "\n"; - wxLogMessage(logBuf.c_str()); - ev.Skip(); + logBuf = "DBGrid::OnLabelLeftClick : "; + if ( ev.GetRow() != -1 ) + { + logBuf << "row label " << ev.GetRow(); + } + else if ( ev.GetCol() != -1 ) + { + logBuf << "col label " << ev.GetCol(); + } + else + { + logBuf << "corner label"; + } + if ( ev.ShiftDown() ) + logBuf << " (shift down)"; + // wxLogMessage( "%s", logBuf.c_str() ); + logBuf += "\n"; + wxLogMessage(logBuf.c_str()); + ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnLabelRightClick( wxGridEvent& ev ) { //------------------- - if (b_EditModus) - PopupMenu(popupMenu2,MousePos.x,MousePos.y); - else - PopupMenu(popupMenu1,MousePos.x,MousePos.y); - //------------------- - logBuf = "DBGrid::OnLabelRightClick : "; - if ( ev.GetRow() != -1 ) - { - logBuf << "row label " << ev.GetRow(); - } - else if ( ev.GetCol() != -1 ) - { - logBuf << "col label " << ev.GetCol(); - } - else - { - logBuf << "corner label"; - } - if ( ev.ShiftDown() ) - logBuf << " (shift down)"; - // wxLogMessage( "%s", logBuf.c_str() ); - logBuf += "\n"; - wxLogMessage(logBuf.c_str()); - ev.Skip(); + if (b_EditModus) + PopupMenu(popupMenu2,MousePos.x,MousePos.y); + else + PopupMenu(popupMenu1,MousePos.x,MousePos.y); + //------------------- + logBuf = "DBGrid::OnLabelRightClick : "; + if ( ev.GetRow() != -1 ) + { + logBuf << "row label " << ev.GetRow(); + } + else if ( ev.GetCol() != -1 ) + { + logBuf << "col label " << ev.GetCol(); + } + else + { + logBuf << "corner label"; + } + if ( ev.ShiftDown() ) + logBuf << " (shift down)"; + // wxLogMessage( "%s", logBuf.c_str() ); + logBuf += "\n"; + wxLogMessage(logBuf.c_str()); + ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnLabelLeftDClick( wxGridEvent& ev ) { - logBuf = "DBGrid::OnLabelLeftDClick : "; - if ( ev.GetRow() != -1 ) - { - logBuf << "row label " << ev.GetRow(); - } - else if ( ev.GetCol() != -1 ) - { - logBuf << "col label " << ev.GetCol(); - } - else - { - logBuf << "corner label"; - } - if ( ev.ShiftDown() ) - logBuf << " (shift down)"; - // wxLogMessage( "%s", logBuf.c_str() ); - logBuf += "\n"; - wxLogMessage(logBuf.c_str()); - ev.Skip(); + logBuf = "DBGrid::OnLabelLeftDClick : "; + if ( ev.GetRow() != -1 ) + { + logBuf << "row label " << ev.GetRow(); + } + else if ( ev.GetCol() != -1 ) + { + logBuf << "col label " << ev.GetCol(); + } + else + { + logBuf << "corner label"; + } + if ( ev.ShiftDown() ) + logBuf << " (shift down)"; + // wxLogMessage( "%s", logBuf.c_str() ); + logBuf += "\n"; + wxLogMessage(logBuf.c_str()); + ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnLabelRightDClick( wxGridEvent& ev ) { - logBuf = "DBGrid::OnLabelRightDClick : "; - if ( ev.GetRow() != -1 ) - { - logBuf << "row label " << ev.GetRow(); - } - else if ( ev.GetCol() != -1 ) - { - logBuf << "col label " << ev.GetCol(); - } - else - { - logBuf << "corner label"; - } - if ( ev.ShiftDown() ) - logBuf << " (shift down)"; - // wxLogMessage( "%s", logBuf.c_str() ); - logBuf += "\n"; - wxLogMessage(logBuf.c_str()); - ev.Skip(); + logBuf = "DBGrid::OnLabelRightDClick : "; + if ( ev.GetRow() != -1 ) + { + logBuf << "row label " << ev.GetRow(); + } + else if ( ev.GetCol() != -1 ) + { + logBuf << "col label " << ev.GetCol(); + } + else + { + logBuf << "corner label"; + } + if ( ev.ShiftDown() ) + logBuf << " (shift down)"; + // wxLogMessage( "%s", logBuf.c_str() ); + logBuf += "\n"; + wxLogMessage(logBuf.c_str()); + ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnCellLeftClick( wxGridEvent& ev ) { - logBuf = "DBGrid::OnCellLeftClick : "; - logBuf << "Cell at row " << ev.GetRow() - << " col " << ev.GetCol(); - // wxLogMessage( "%s", logBuf.c_str() ); - // wxMessageBox(logBuf); - logBuf += "\n"; - wxLogMessage(logBuf.c_str()); - // you must call event skip if you want default grid processing - // (cell highlighting etc.) - // - ev.Skip(); + logBuf = "DBGrid::OnCellLeftClick : "; + logBuf << "Cell at row " << ev.GetRow() + << " col " << ev.GetCol(); + // wxLogMessage( "%s", logBuf.c_str() ); + // wxMessageBox(logBuf); + logBuf += "\n"; + wxLogMessage(logBuf.c_str()); + // you must call event skip if you want default grid processing + // (cell highlighting etc.) + // + ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnCellRightClick( wxGridEvent& ev ) { - logBuf = "DBGrid::OnCellRightClick : "; - logBuf << "Cell at row " << ev.GetRow() - << " col " << ev.GetCol(); - // wxLogMessage( "%s", logBuf.c_str() ); - // wxMessageBox(logBuf); - logBuf += "\n"; - wxLogMessage(logBuf.c_str()); - // you must call event skip if you want default grid processing - // (cell highlighting etc.) - // - ev.Skip(); + logBuf = "DBGrid::OnCellRightClick : "; + logBuf << "Cell at row " << ev.GetRow() + << " col " << ev.GetCol(); + // wxLogMessage( "%s", logBuf.c_str() ); + // wxMessageBox(logBuf); + logBuf += "\n"; + wxLogMessage(logBuf.c_str()); + // you must call event skip if you want default grid processing + // (cell highlighting etc.) + // + ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnCellLeftDClick( wxGridEvent& ev ) { - logBuf = "DBGrid::OnCellLeftDClick : "; - logBuf << "Cell at row " << ev.GetRow() - << " col " << ev.GetCol(); - // wxLogMessage( "%s", logBuf.c_str() ); - // wxMessageBox(logBuf); - logBuf += "\n"; - wxLogMessage(logBuf.c_str()); - // you must call event skip if you want default grid processing - // (cell highlighting etc.) - // - ev.Skip(); + logBuf = "DBGrid::OnCellLeftDClick : "; + logBuf << "Cell at row " << ev.GetRow() + << " col " << ev.GetCol(); + // wxLogMessage( "%s", logBuf.c_str() ); + // wxMessageBox(logBuf); + logBuf += "\n"; + wxLogMessage(logBuf.c_str()); + // you must call event skip if you want default grid processing + // (cell highlighting etc.) + // + ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnCellRightDClick( wxGridEvent& ev ) { - logBuf = "DBGrid::OnCellRightDClick : "; - logBuf << "Cell at row " << ev.GetRow() - << " col " << ev.GetCol(); - // wxLogMessage( "%s", logBuf.c_str() ); - // wxMessageBox(logBuf); - logBuf += "\n"; - wxLogMessage(logBuf.c_str()); - // you must call event skip if you want default grid processing - // (cell highlighting etc.) - // - ev.Skip(); + logBuf = "DBGrid::OnCellRightDClick : "; + logBuf << "Cell at row " << ev.GetRow() + << " col " << ev.GetCol(); + // wxLogMessage( "%s", logBuf.c_str() ); + // wxMessageBox(logBuf); + logBuf += "\n"; + wxLogMessage(logBuf.c_str()); + // you must call event skip if you want default grid processing + // (cell highlighting etc.) + // + ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnCellChange( wxGridEvent& ev ) { - logBuf = "DBGrid::OnCellChange : "; - logBuf << "Cell at row " << ev.GetRow() - << " col " << ev.GetCol(); - // wxLogMessage( "%s", logBuf.c_str() ); - // wxMessageBox(logBuf); - logBuf += "\n"; - wxLogMessage(logBuf.c_str()); - // you must call event skip if you want default grid processing - // (cell highlighting etc.) - // - ev.Skip(); + logBuf = "DBGrid::OnCellChange : "; + logBuf << "Cell at row " << ev.GetRow() + << " col " << ev.GetCol(); + // wxLogMessage( "%s", logBuf.c_str() ); + // wxMessageBox(logBuf); + logBuf += "\n"; + wxLogMessage(logBuf.c_str()); + // you must call event skip if you want default grid processing + // (cell highlighting etc.) + // + ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnRowSize( wxGridSizeEvent& ev ) { - logBuf = "DBGrid::OnRowSize : "; - logBuf << "Resized row " << ev.GetRowOrCol(); - // wxLogMessage( "%s", logBuf.c_str() ); - logBuf += "\n"; - wxLogMessage(logBuf.c_str()); - ev.Skip(); + logBuf = "DBGrid::OnRowSize : "; + logBuf << "Resized row " << ev.GetRowOrCol(); + // wxLogMessage( "%s", logBuf.c_str() ); + logBuf += "\n"; + wxLogMessage(logBuf.c_str()); + ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnColSize( wxGridSizeEvent& ev ) { - logBuf = "DBGrid::OnColSize : "; - logBuf << "Resized col " << ev.GetRowOrCol(); - // wxLogMessage( "%s", logBuf.c_str() ); - logBuf += "\n"; - wxLogMessage(logBuf.c_str()); - - ev.Skip(); + logBuf = "DBGrid::OnColSize : "; + logBuf << "Resized col " << ev.GetRowOrCol(); + // wxLogMessage( "%s", logBuf.c_str() ); + logBuf += "\n"; + wxLogMessage(logBuf.c_str()); + ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnRangeSelected( wxGridRangeSelectEvent& ev ) { - logBuf = "DBGrid::OnRangeSelected : "; - logBuf << "Selected cells from row " << ev.GetTopRow() - << " col " << ev.GetLeftCol() - << " to row " << ev.GetBottomRow() - << " col " << ev.GetRightCol(); - - logBuf += "\n"; - // wxLogMessage( "%s", logBuf.c_str() ); - wxLogMessage(logBuf.c_str()); - - ev.Skip(); + logBuf = "DBGrid::OnRangeSelected : "; + logBuf << "Selected cells from row " << ev.GetTopRow() + << " col " << ev.GetLeftCol() + << " to row " << ev.GetBottomRow() + << " col " << ev.GetRightCol(); + logBuf += "\n"; + // wxLogMessage( "%s", logBuf.c_str() ); + wxLogMessage(logBuf.c_str()); + ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- diff --git a/demos/dbbrowse/dbgrid.h b/demos/dbbrowse/dbgrid.h index c9c3467d57..39e7cc48c0 100644 --- a/demos/dbbrowse/dbgrid.h +++ b/demos/dbbrowse/dbgrid.h @@ -1,41 +1,39 @@ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // Name: DBGrid.h -// Purpose: DBGrid +// Purpose: shows seleted Table in a Grid // Author: Mark Johnson // Modified by: 20000126.mj10777 // Created: // Copyright: (c) Mark Johnson // Licence: wxWindows license // RCS-ID: $Id$ -//--------------------------------------------------------------------------- - +//---------------------------------------------------------------------------------------- #if !defined(wxUSE_NEW_GRID) || !(wxUSE_NEW_GRID) - #error "DBGrid requires the new wxGrid class" + #error "DBGrid requires the new wxGrid class" #endif - +//---------------------------------------------------------------------------------------- class mjDoc; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- class DBGrid: public wxGrid { public: DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size, long style); virtual ~DBGrid(); - //------------------------------------------- + //--------------------------------------------------------------------------------------- int i_TabArt; // Tab = 0 ; Page = 1; int i_ViewNr; // View Nummer in Tab / Page int i_Which; // Which View, Database is this/using - //------------------------------------------- - wxFont* f_Temp; + //--------------------------------------------------------------------------------------- mjDoc* pDoc; wxDbInf* ct_BrowserDB; BrowserDB* db_Br; wxMenu *popupMenu1; // OnDBClass wxMenu *popupMenu2; // OnDBGrid & OnTableclass bool b_EditModus; - //------------------------------------------- + //--------------------------------------------------------------------------------------- wxString logBuf,Temp0; wxPoint MousePos; - //------------------------------------------- + //--------------------------------------------------------------------------------------- void OnModusEdit(wxMenu& menu, wxCommandEvent& event); void OnModusBrowse(wxMenu& menu, wxCommandEvent& event); void OnMouseMove(wxMouseEvent& event); @@ -52,12 +50,12 @@ class DBGrid: public wxGrid void OnColSize( wxGridSizeEvent& ); void OnRangeSelected( wxGridRangeSelectEvent& ); void OnCellChange( wxGridEvent& ); - //------------------------------------------- + //--------------------------------------------------------------------------------------- DECLARE_EVENT_TABLE() }; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #define GRID_01_BEGIN 1200 #define GRID_BROWSE 1201 #define GRID_EDIT 1202 #define GRID_01_END 1203 -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- diff --git a/demos/dbbrowse/dbtree.cpp b/demos/dbbrowse/dbtree.cpp index 6b9452b687..3937e1c7bd 100644 --- a/demos/dbbrowse/dbtree.cpp +++ b/demos/dbbrowse/dbtree.cpp @@ -1,124 +1,116 @@ -//--------------------------------------------------------------------------- -// Name: DBTree.h -// Purpose: Programm Control with a Tree +//---------------------------------------------------------------------------------------- +// Name: DBTree.cpp/.h +// Purpose: Tree with Table and Views, branches show Field information // Author: Mark Johnson // Modified by: // Created: 19991129 // RCS-ID: $Id$ // Copyright: (c) Mark Johnson, Berlin Germany, mj10777@gmx.net // Licence: wxWindows license -//--------------------------------------------------------------------------- -//-- all #ifdefs that the whole Project needs. ------------------------------ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- all #ifdefs that the whole Project needs. ------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __GNUG__ #pragma implementation #pragma interface #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __BORLANDC__ #pragma hdrstop #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifndef WX_PRECOMP #include "wx/wx.h" #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifndef __WXMSW__ #endif -//--------------------------------------------------------------------------- -//-- all #includes that every .cpp needs --- 19990807.mj10777 --- -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- all #includes that every .cpp needs --- 19990807.mj10777 ---------------- +//---------------------------------------------------------------------------------------- #include "std.h" // sorgsam Pflegen ! -//--------------------------------------------------------------------------- -//-- Global functions ------------------------------------------------------- -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- Global functions -------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- static inline const char *bool2String(bool b) { return b ? "" : "not "; } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- BEGIN_EVENT_TABLE(DBTree, wxTreeCtrl) - EVT_MOTION (DBTree::OnMouseMove) - EVT_TREE_SEL_CHANGED(TREE_CTRL_DB, DBTree::OnSelChanged) - EVT_TREE_ITEM_RIGHT_CLICK(TREE_CTRL_DB,DBTree::OnRightSelect) - EVT_MENU(DATA_SHOW,DBTree::OnDBGrid) - EVT_MENU(DATA_DB,DBTree::OnDBClass) - EVT_MENU(DATA_TABLE,DBTree::OnTableClass) - EVT_MENU(DATA_TABLE_ALL,DBTree::OnTableClassAll) - END_EVENT_TABLE() - //--------------------------------------------------------------------------- - // DBTree implementation - //--------------------------------------------------------------------------- - IMPLEMENT_DYNAMIC_CLASS(DBTree, wxTreeCtrl) - //--------------------------------------------------------------------------- - DBTree::DBTree(wxWindow *parent) : wxTreeCtrl(parent) + EVT_MOTION (DBTree::OnMouseMove) + EVT_TREE_SEL_CHANGED(TREE_CTRL_DB, DBTree::OnSelChanged) + EVT_TREE_ITEM_RIGHT_CLICK(TREE_CTRL_DB,DBTree::OnRightSelect) + EVT_MENU(DATA_SHOW,DBTree::OnDBGrid) + EVT_MENU(DATA_DB,DBTree::OnDBClass) + EVT_MENU(DATA_TABLE,DBTree::OnTableClass) + EVT_MENU(DATA_TABLE_ALL,DBTree::OnTableClassAll) +END_EVENT_TABLE() +//---------------------------------------------------------------------------------------- +// DBTree implementation +//---------------------------------------------------------------------------------------- +IMPLEMENT_DYNAMIC_CLASS(DBTree, wxTreeCtrl) +//---------------------------------------------------------------------------------------- +DBTree::DBTree(wxWindow *parent) : wxTreeCtrl(parent) { } +//---------------------------------------------------------------------------------------- DBTree::DBTree(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size, long style) : wxTreeCtrl(parent, id, pos, size, style) { - //wxFont* ft_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS"); - wxFont* ft_Temp = new wxFont(wxSystemSettings::GetSystemFont(wxSYS_SYSTEM_FONT)); - SetFont(* ft_Temp); - - // Make an image list containing small icons - p_imageListNormal = new wxImageList(16, 16, TRUE); - - // should correspond to TreeIc_xxx enum - + // Make an image list containing small icons + p_imageListNormal = new wxImageList(16, 16, TRUE); + // should correspond to TreeIc_xxx enum #if !defined(__WXMSW__) -#include "bitmaps/logo.xpm" -#include "bitmaps/dsnclose.xpm" -#include "bitmaps/dsnopen.xpm" -#include "bitmaps/tab.xpm" -#include "bitmaps/key.xpm" -#include "bitmaps/keyf.xpm" -#include "bitmaps/d_open.xpm" -#include "bitmaps/d_closed.xpm" -#include "bitmaps/col.xpm" + #include "bitmaps/logo.xpm" + #include "bitmaps/dsnclose.xpm" + #include "bitmaps/dsnopen.xpm" + #include "bitmaps/tab.xpm" + #include "bitmaps/view.xpm" + #include "bitmaps/col.xpm" + #include "bitmaps/key.xpm" + #include "bitmaps/keyf.xpm" + #include "bitmaps/d_open.xpm" + #include "bitmaps/d_closed.xpm" #endif - - p_imageListNormal->Add(wxICON(Logo)); - p_imageListNormal->Add(wxICON(DsnClosed)); - p_imageListNormal->Add(wxICON(DsnOpen)); - p_imageListNormal->Add(wxICON(TAB)); - p_imageListNormal->Add(wxICON(COL)); - p_imageListNormal->Add(wxICON(KEY)); - p_imageListNormal->Add(wxICON(KEYF)); - p_imageListNormal->Add(wxICON(DocOpen)); - p_imageListNormal->Add(wxICON(DocOpen)); - - - - - - SetImageList(p_imageListNormal); - ct_BrowserDB = NULL; + p_imageListNormal->Add(wxICON(aLogo)); + p_imageListNormal->Add(wxICON(DsnClosed)); + p_imageListNormal->Add(wxICON(DsnOpen)); + p_imageListNormal->Add(wxICON(TAB)); + p_imageListNormal->Add(wxICON(VIEW)); + p_imageListNormal->Add(wxICON(COL)); + p_imageListNormal->Add(wxICON(KEY)); + p_imageListNormal->Add(wxICON(KEYF)); + p_imageListNormal->Add(wxICON(DocOpen)); + p_imageListNormal->Add(wxICON(DocOpen)); + SetImageList(p_imageListNormal); + ct_BrowserDB = NULL; } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- DBTree::~DBTree() { - // 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; + // 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; } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #undef TREE_EVENT_HANDLER -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- int DBTree::OnPopulate() { wxTreeItemId Root, Folder, Docu, Funkt; int i,x,y, TableType; wxString SQL_TYPE, DB_TYPE; - //---------------------------------------------------------------------------------------------------------------------------- + SetFont(* pDoc->ft_Doc); + //--------------------------------------------------------------------------------------- if ((pDoc->db_Br+i_Which)->Initialize(FALSE)) { wxBeginBusyCursor(); @@ -215,9 +207,9 @@ int DBTree::OnPopulate() wxLogMessage(_("\n-E-> DBTree::OnPopulate() : A valid Pointer could not be created : Failed")); return 0; } - //---------------------------------------------------------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- Expand(Root); - //---------------------------------------------------------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- popupMenu1 = NULL; popupMenu1 = new wxMenu(""); popupMenu1->Append(DATA_DB, _("Make wxDB.cpp/h ")); @@ -228,11 +220,10 @@ int DBTree::OnPopulate() popupMenu2->Append(DATA_SHOW, _("Show Data")); popupMenu2->AppendSeparator(); popupMenu2->Append(DATA_TABLE, _("Make wxTable.cpp/h ")); - //---------------------------------------------------------------------------------------------------------------------------- - + //--------------------------------------------------------------------------------------- return 0; } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBTree::OnSelChanged(wxTreeEvent& WXUNUSED(event)) { int i; @@ -242,163 +233,161 @@ void DBTree::OnSelChanged(wxTreeEvent& WXUNUSED(event)) wxTreeItemId itemId = GetSelection(); DBTreeData *item = (DBTreeData *)GetItemData(itemId); if ( item != NULL ) + { + int Treffer = 0; + Temp1.Printf("%s",item->m_desc.c_str()); + //------------------------------------------------------------------------------------- + if (Temp1.Contains("ODBC-")) + { + Temp1 = Temp1.Mid(5,wxSTRING_MAXLEN); + for (i=0;ii_DSN;i++) + { + if (Temp1 == (pDoc->p_DSN+i)->Dsn) { - int Treffer = 0; - Temp1.Printf("%s",item->m_desc.c_str()); - //----------------------------------------------------------------------------------------- - if (Temp1.Contains("ODBC-")) - { - Temp1 = Temp1.Mid(5,wxSTRING_MAXLEN); - for (i=0;ii_DSN;i++) - { - if (Temp1 == (pDoc->p_DSN+i)->Dsn) - { - // pDoc->OnChosenDSN(i); - } - } - Treffer++; - } - //----------------------------------------------------------------------------------------- - if (Treffer == 0) - { - //--------------------------------------------------- - /* - Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold," - "%u children (%u immediately under this item)."), - item->m_desc.c_str(), - bool2String(IsSelected(itemId)), - bool2String(IsExpanded(itemId)), - bool2String(IsBold(itemId)), - GetChildrenCount(itemId), - GetChildrenCount(itemId)); - LogBuf.Printf("-I-> DBTree::OnSelChanged - %s",Temp0.c_str()); - wxLogMessage( "%s", LogBuf.c_str() ); - */ - //--------------------------------------------------- - } + // pDoc->OnChosenDSN(i); } + } + Treffer++; + } + //-------------------------------------------------------------------------------------- + if (Treffer == 0) + { + //------------------------------------------------------------------------------------- + /* + Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold," + "%u children (%u immediately under this item)."), + item->m_desc.c_str(), + bool2String(IsSelected(itemId)), + bool2String(IsExpanded(itemId)), + bool2String(IsBold(itemId)), + GetChildrenCount(itemId), + GetChildrenCount(itemId)); + LogBuf.Printf("-I-> DBTree::OnSelChanged - %s",Temp0.c_str()); + wxLogMessage( "%s", LogBuf.c_str() ); + */ + //------------------------------------------------------------------------------------- + } + } } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBTree::OnRightSelect(wxTreeEvent& WXUNUSED(event)) { - int i; - Temp0.Empty(); - // Get the Information that we need - wxTreeItemId itemId = GetSelection(); - DBTreeData *item = (DBTreeData *)GetItemData(itemId); - if ( item != NULL ) - { - int Treffer = 0; - Temp1.Printf("%s",item->m_desc.c_str()); - //----------------------------------------------------------------------------------------- - if (!wxStrcmp("Root",Temp1)) - { - PopupMenu(popupMenu1,TreePos.x,TreePos.y); - Treffer++; - } - for (i=0;inumTables;i++) - { - Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName); - if (!wxStrcmp(Temp2,Temp1)) - { - PopupMenu(popupMenu2,TreePos.x,TreePos.y); - Treffer++; - } - } - //----------------------------------------------------------------------------------------- - if (Treffer == 0) - { - //--------------------------------------------------- - /* - Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold," - "%u children (%u immediately under this item)."), - item->m_desc.c_str(), - bool2String(IsSelected(itemId)), - bool2String(IsExpanded(itemId)), - bool2String(IsBold(itemId)), - GetChildrenCount(itemId), - GetChildrenCount(itemId)); - LogBuf.Printf("-I-> DBTree::OnSelChanged - %s",Temp0.c_str()); - wxLogMessage( "%s", LogBuf.c_str() ); - */ - //--------------------------------------------------- - } - } + int i; + Temp0.Empty(); + // Get the Information that we need + wxTreeItemId itemId = GetSelection(); + DBTreeData *item = (DBTreeData *)GetItemData(itemId); + if ( item != NULL ) + { + int Treffer = 0; + Temp1.Printf("%s",item->m_desc.c_str()); + //-------------------------------------------------------------------------------------- + if (!wxStrcmp("Root",Temp1)) + { + PopupMenu(popupMenu1,TreePos.x,TreePos.y); + Treffer++; + } + for (i=0;inumTables;i++) + { + Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName); + if (!wxStrcmp(Temp2,Temp1)) + { + PopupMenu(popupMenu2,TreePos.x,TreePos.y); + Treffer++; + } + } + //-------------------------------------------------------------------------------------- + if (Treffer == 0) + { + //------------------------------------------------------------------------------------- + /* + Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold," + "%u children (%u immediately under this item)."), + item->m_desc.c_str(), + bool2String(IsSelected(itemId)), + bool2String(IsExpanded(itemId)), + bool2String(IsBold(itemId)), + GetChildrenCount(itemId), + GetChildrenCount(itemId)); + LogBuf.Printf("-I-> DBTree::OnSelChanged - %s",Temp0.c_str()); + wxLogMessage( "%s", LogBuf.c_str() ); + */ + //------------------------------------------------------------------------------------- + } + } } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBTree::OnDBGrid(wxMenu& , wxCommandEvent& event) { - int i; - // Get the Information that we need - wxTreeItemId itemId = GetSelection(); - DBTreeData *item = (DBTreeData *)GetItemData(itemId); - if ( item != NULL ) - { - Temp1.Printf("%s",item->m_desc.c_str()); - for (i=0;inumTables;i++) - { - Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName); - if (!wxStrcmp(Temp2,Temp1)) - { - // Temp0.Printf("(%d) Here is where a GridCtrl for >%s< will be called! ",i,(ct_BrowserDB->pTableInf+i)->tableName); - pDoc->OnChosenTbl(1,(ct_BrowserDB->pTableInf+i)->tableName); - // wxMessageBox(Temp0); - } - } - } + int i; + // Get the Information that we need + wxTreeItemId itemId = GetSelection(); + DBTreeData *item = (DBTreeData *)GetItemData(itemId); + if ( item != NULL ) + { + Temp1.Printf("%s",item->m_desc.c_str()); + for (i=0;inumTables;i++) + { + Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName); + if (!wxStrcmp(Temp2,Temp1)) + { + // Temp0.Printf("(%d) Here is where a GridCtrl for >%s< will be called! ",i,(ct_BrowserDB->pTableInf+i)->tableName); + pDoc->OnChosenTbl(1,(ct_BrowserDB->pTableInf+i)->tableName); + // wxMessageBox(Temp0); + } + } + } } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBTree::OnDBClass(wxMenu& , wxCommandEvent& event) { - // int i; - // Get the Information that we need - wxTreeItemId itemId = GetSelection(); - DBTreeData *item = (DBTreeData *)GetItemData(itemId); - if ( item != NULL ) - { - Temp0.Printf(_("Here is where a wxDB Class for >%s< will be made! "),s_DSN.c_str()); - wxMessageBox(Temp0); - } + // int i; + // Get the Information that we need + wxTreeItemId itemId = GetSelection(); + DBTreeData *item = (DBTreeData *)GetItemData(itemId); + if ( item != NULL ) + { + Temp0.Printf(_("Here is where a wxDB Class for >%s< will be made! "),s_DSN.c_str()); + wxMessageBox(Temp0); + } } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBTree::OnTableClass(wxMenu& , wxCommandEvent& event) { - int i; - // Get the Information that we need - wxTreeItemId itemId = GetSelection(); - DBTreeData *item = (DBTreeData *)GetItemData(itemId); - if ( item != NULL ) - { - Temp1.Printf("%s",item->m_desc.c_str()); - for (i=0;inumTables;i++) - { - Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName); - if (!wxStrcmp(Temp2,Temp1)) - { - Temp0.Printf(_("(%d) Here is where a wxTable Class for >%s< will be made! "),i,(ct_BrowserDB->pTableInf+i)->tableName); - wxMessageBox(Temp0); - } - } - } + int i; + // Get the Information that we need + wxTreeItemId itemId = GetSelection(); + DBTreeData *item = (DBTreeData *)GetItemData(itemId); + if ( item != NULL ) + { + Temp1.Printf("%s",item->m_desc.c_str()); + for (i=0;inumTables;i++) + { + Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName); + if (!wxStrcmp(Temp2,Temp1)) + { + Temp0.Printf(_("(%d) Here is where a wxTable Class for >%s< will be made! "),i,(ct_BrowserDB->pTableInf+i)->tableName); + wxMessageBox(Temp0); + } + } + } } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBTree::OnTableClassAll(wxMenu& , wxCommandEvent& event) { - // int i; - // Get the Information that we need - wxTreeItemId itemId = GetSelection(); - DBTreeData *item = (DBTreeData *)GetItemData(itemId); - if ( item != NULL ) - { - Temp0.Printf(_("Here is where all wxTable Classes in >%s< will be made! "),s_DSN.c_str()); - wxMessageBox(Temp0); - } + // int i; + // Get the Information that we need + wxTreeItemId itemId = GetSelection(); + DBTreeData *item = (DBTreeData *)GetItemData(itemId); + if ( item != NULL ) + { + Temp0.Printf(_("Here is where all wxTable Classes in >%s< will be made! "),s_DSN.c_str()); + wxMessageBox(Temp0); + } } -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- void DBTree::OnMouseMove(wxMouseEvent &event) { - TreePos = event.GetPosition(); + TreePos = event.GetPosition(); } -//------------------------------------------------------------------------------ - - +//---------------------------------------------------------------------------------------- diff --git a/demos/dbbrowse/dbtree.h b/demos/dbbrowse/dbtree.h index 61d5604385..b7631fde66 100644 --- a/demos/dbbrowse/dbtree.h +++ b/demos/dbbrowse/dbtree.h @@ -1,25 +1,23 @@ -//--------------------------------------------------------------------------- -// Name: DBTree.h -// Purpose: Shows ODBC Catalog entries for Databases +//---------------------------------------------------------------------------------------- +// Name: DBTree.cpp/.h +// Purpose: Tree with Table and Views, branches show Field information // Author: Mark Johnson // Modified by: 19991129.mj10777 // Created: 19991129 // Copyright: (c) Mark Johnson // Licence: wxWindows license // RCS-ID: $Id$ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- class mjDoc; // Declared in Doc.h file -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- class DBTreeData : public wxTreeItemData { public: DBTreeData(const wxString& desc) : m_desc(desc) { } - void ShowInfo(wxTreeCtrl *tree); - - wxString m_desc; + wxString m_desc; }; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- class DBTree : public wxTreeCtrl { public: @@ -39,14 +37,14 @@ class DBTree : public wxTreeCtrl TreeIc_FolderOpen // f_open.ico }; wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- DBTree() { } DBTree(wxWindow *parent); DBTree(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size,long style); virtual ~DBTree(); mjDoc *pDoc; wxDbInf *ct_BrowserDB; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- int i_TabArt; // Tab = 0 ; Page = 1; int i_ViewNr; // View Nummer in Tab / Page int i_Which; // Which View, Database is this/using @@ -54,9 +52,9 @@ class DBTree : public wxTreeCtrl wxMenu *popupMenu1; // OnDBClass wxMenu *popupMenu2; // OnDBGrid & OnTableclass wxPoint TreePos; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- wxImageList *p_imageListNormal; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- public: int OnPopulate(); void OnSelChanged(wxTreeEvent& event); @@ -68,7 +66,7 @@ class DBTree : public wxTreeCtrl void OnMouseEvent(wxMouseEvent& event); void OnMouseMove(wxMouseEvent& event); public: -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS() // if you want your overloaded OnCompareItems() to be called. // OTOH, if you don't want it you may omit the next line - this will @@ -76,11 +74,11 @@ class DBTree : public wxTreeCtrl DECLARE_DYNAMIC_CLASS(DBTree) DECLARE_EVENT_TABLE() }; -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- #define POPUP_01_BEGIN 1100 #define DATA_SHOW 1101 #define DATA_DB 1102 #define DATA_TABLE 1103 #define DATA_TABLE_ALL 1104 #define POPUP_01_END 1117 -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- diff --git a/demos/dbbrowse/dlguser.cpp b/demos/dbbrowse/dlguser.cpp index 8369e1614e..c045db6103 100644 --- a/demos/dbbrowse/dlguser.cpp +++ b/demos/dbbrowse/dlguser.cpp @@ -1,4 +1,4 @@ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // Name: DlgUser.h,cpp // Purpose: Dialog mit Variable Gestaltung durch DlgUser.wxr // Author: Mark Johnson, mj10777@gmx.net @@ -7,44 +7,36 @@ // Copyright: (c) Mark Johnson // Licence: wxWindows license // RCS-ID: $Id$ -//--------------------------------------------------------------------------- -//-- all #ifdefs that the whole Project needs. ------------------------------ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- all #ifdefs that the whole Project needs. ------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __GNUG__ #pragma implementation #pragma interface #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __BORLANDC__ #pragma hdrstop #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifndef WX_PRECOMP #include "wx/wx.h" #endif -//--------------------------------------------------------------------------- -//-- all #includes that every .cpp needs ----19990807.mj10777 --- -//--------------------------------------------------------------------------- -#include "dlguser.h" -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- all #includes that every .cpp needs ----19990807.mj10777 ---------------- +//---------------------------------------------------------------------------------------- +#include "std.h" +//---------------------------------------------------------------------------------------- DlgUser::DlgUser(wxWindow *parent, const wxString& title) : wxDialog(parent, ID_DIALOG_DSN, title) { - SetBackgroundColour("wheat"); - - wxLayoutConstraints* layout; - SetAutoLayout(TRUE); - -// m_Dsn = new wxStaticText(this, -1, "", wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE); -// layout = new wxLayoutConstraints; -// layout->centreX.SameAs(this, wxCentreX); -// layout->top.SameAs(this, wxTop,10); -// layout->height.AsIs(); -// layout->width.AsIs(); -// m_Dsn->SetConstraints(layout); + SetBackgroundColour("wheat"); + + wxLayoutConstraints* layout; + SetAutoLayout(TRUE); m_Label1 = new wxStaticText(this, -1, _("User ID:")); layout = new wxLayoutConstraints; @@ -61,9 +53,9 @@ DlgUser::DlgUser(wxWindow *parent, const wxString& title) : layout->centreY.SameAs(m_Label1,wxCentreY); layout->width.Absolute(200); layout->height.AsIs(); - m_UserName->SetConstraints(layout); - - + m_UserName->SetConstraints(layout); + + m_Label2 = new wxStaticText(this, -1, _("Password:")); layout = new wxLayoutConstraints; layout->left.SameAs(m_Label1, wxLeft); @@ -71,7 +63,7 @@ DlgUser::DlgUser(wxWindow *parent, const wxString& title) : layout->height.AsIs(); layout->width.SameAs(m_Label1, wxWidth); m_Label2->SetConstraints(layout); - + m_Password = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD); layout = new wxLayoutConstraints; layout->left.SameAs(m_UserName, wxLeft); @@ -80,7 +72,7 @@ DlgUser::DlgUser(wxWindow *parent, const wxString& title) : layout->centreY.SameAs(m_Label2,wxCentreY); layout->height.AsIs(); m_Password->SetConstraints(layout); - + m_OK = new wxButton(this, wxID_OK, _("Ok")); layout = new wxLayoutConstraints; layout->left.SameAs(this, wxLeft, 10); @@ -99,45 +91,28 @@ DlgUser::DlgUser(wxWindow *parent, const wxString& title) : m_OK->SetDefault(); m_UserName->SetFocus(); - - + s_User = ""; s_Password = ""; - Layout(); - - - - -// wxButton *but1 = new wxButton(this, wxID_OK, "OK", wxPoint(55,110), wxSize(80, 30)); -// wxButton *but2 = new wxButton(this, wxID_CANCEL, "Cancel", wxPoint(210,110), wxSize(80, 30)); -// (void)new wxStaticText(this, -1,_("User ID"), wxPoint(20, 40), wxSize(50, 20),wxALIGN_LEFT); -// (void)new wxStaticText(this, -1,_("Password"), wxPoint(20, 80), wxSize(50, 20),wxALIGN_LEFT); - // but1->SetFocus(); -// m_OK->SetDefault(); } - - void DlgUser::OnInit() - { - wxString Temp; Temp.Printf(_(">>> %s <<< "),s_DSN.c_str()); - SetTitle(Temp); - - m_UserName->SetLabel(s_User); - m_Password->SetLabel(s_Password); - - // (void)new wxStaticText(this, -1, Temp, wxPoint(10, 10), wxSize(300, 20),wxALIGN_CENTRE ); -// tc_User = new wxTextCtrl(this, ID_USER, s_User, wxPoint(75, 35), wxSize(200, 25), 0, wxDefaultValidator); -// tc_Password = new wxTextCtrl(this, ID_PASSWORD, s_Password, wxPoint(75, 75), wxSize(200, 25),wxTE_PASSWORD, wxDefaultValidator); -// tc_User->SetFocus(); - } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +void DlgUser::OnInit() +{ + wxString Temp; Temp.Printf(_(">>> %s <<< "),s_DSN.c_str()); + SetTitle(Temp); + m_UserName->SetLabel(s_User); + m_Password->SetLabel(s_Password); + m_Label1->SetFont(* pDoc->ft_Doc); m_Label2->SetFont(* pDoc->ft_Doc); + m_UserName->SetFont(* pDoc->ft_Doc); m_Password->SetFont(* pDoc->ft_Doc); + m_OK->SetFont(* pDoc->ft_Doc); m_Cancel->SetFont(* pDoc->ft_Doc); +} +//---------------------------------------------------------------------------------------- BEGIN_EVENT_TABLE(DlgUser, wxDialog) - EVT_BUTTON(wxID_OK, DlgUser::OnOk) - EVT_BUTTON(wxID_CANCEL, DlgUser::OnCancel) + EVT_BUTTON(wxID_OK, DlgUser::OnOk) + EVT_BUTTON(wxID_CANCEL, DlgUser::OnCancel) END_EVENT_TABLE() - - - //--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DlgUser::OnOk(wxCommandEvent& WXUNUSED(event) ) { //canceled = FALSE; @@ -145,11 +120,11 @@ void DlgUser::OnOk(wxCommandEvent& WXUNUSED(event) ) s_Password = m_Password->GetValue(); EndModal(wxID_OK); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- //void DlgUser::OnCancel(wxCommandEvent& WXUNUSED(event) ) // { // canceled = TRUE; // EndModal(wxID_CANCEL); // } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- diff --git a/demos/dbbrowse/dlguser.h b/demos/dbbrowse/dlguser.h index 785ee45e90..26e219811a 100644 --- a/demos/dbbrowse/dlguser.h +++ b/demos/dbbrowse/dlguser.h @@ -1,4 +1,4 @@ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // Name: DlgUser.h,cpp // Purpose: Dialog mit Variable Gestaltung durch DlgUser.wxr // Author: Mark Johnson, mj10777@gmx.net @@ -7,32 +7,30 @@ // Copyright: (c) Mark Johnson // Licence: wxWindows license // RCS-ID: $Id$ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // DlgUser -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #define ID_DIALOG_DSN 100 #define ID_DSN 101 #define ID_USER 102 #define ID_PASSWORD 103 #define ID_TEXT 104 -//--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +class mjDoc; +//---------------------------------------------------------------------------------------- class DlgUser: public wxDialog { public: -// bool canceled; wxString s_DSN, s_User, s_Password; -// wxTextCtrl *tc_User, *tc_Password; wxStaticText *m_Label1, *m_Label2; wxTextCtrl *m_UserName, *m_Password; wxButton *m_OK, *m_Cancel; - - //--------------------------------------------------------------------------- + mjDoc *pDoc; + //--------------------------------------------------------------------------------------- DlgUser(wxWindow *parent, const wxString& title); void OnInit(); void OnOk(wxCommandEvent& event); -// void OnCancel(wxCommandEvent& event); - //--------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- DECLARE_EVENT_TABLE() }; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- diff --git a/demos/dbbrowse/doc.cpp b/demos/dbbrowse/doc.cpp index 64305d1f08..256a200505 100644 --- a/demos/dbbrowse/doc.cpp +++ b/demos/dbbrowse/doc.cpp @@ -1,6 +1,6 @@ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // Name: Doc.cpp -// Purpose: Holds information for DBBrowser +// Purpose: Holds information for DBBrowser - (a do-it-yourself document) // Author: Mark Johnson, mj10777@gmx.net // Modified by: 19990808.mj10777 // BJO : Bart A.M. JOURQUIN @@ -8,324 +8,319 @@ // Copyright: (c) Mark Johnson // Licence: wxWindows license // RCS-ID: $Id$ -//--------------------------------------------------------------------------- -//-- all #ifdefs that the whole Project needs. ------------------------------ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- all #ifdefs that the whole Project needs. ------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __GNUG__ #pragma implementation #pragma interface #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __BORLANDC__ #pragma hdrstop #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifndef WX_PRECOMP #include "wx/wx.h" #endif -//--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- -//-- all #includes that every .cpp needs ----19990807.mj10777 --- -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- all #includes that every .cpp needs ----19990807.mj10777 ---------------- +//---------------------------------------------------------------------------------------- #include "std.h" // sorgsam Pflegen ! -//--------------------------------------------------------------------------- -//-- Some Global Vars for all Files (extern in ?.h needed) ----------------- +//---------------------------------------------------------------------------------------- +//-- Some Global Vars for all Files (extern in ?.h needed) ------------------------------- // Global structure for holding ODBC connection information struct DbStuff DbConnectInf; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- wxConfigBase *p_ProgramCfg; // All Config and Path information wxLogTextCtrl *p_LogBook; // All Log messages wxString LogBuf; // String for all Logs -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- mjDoc::mjDoc() { - db_Br = NULL; - p_DSN = NULL; - i_DSN = 0; - p_Splitter = NULL; - p_MainFrame = NULL; - p_PgmCtrl = NULL; // Is not active - p_DBTree = NULL; - p_DBGrid = NULL; - p_LogWin = NULL; - p_TabArea = NULL; - p_PageArea = NULL; - i_TabNr = 0; - i_PageNr = 0; + db_Br = NULL; + p_DSN = NULL; + i_DSN = 0; + p_Splitter = NULL; + p_MainFrame = NULL; + p_PgmCtrl = NULL; // Is not active + p_DBTree = NULL; + p_DBGrid = NULL; + p_LogWin = NULL; + p_TabArea = NULL; + p_PageArea = NULL; + i_TabNr = 0; + i_PageNr = 0; + s_BColour = "WHEAT"; + ft_Doc = new wxFont(wxSystemSettings::GetSystemFont(wxSYS_SYSTEM_FONT)); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- mjDoc::~mjDoc() { - // ---------------------------------------------------------- - // -E-> The Tree Controls take to long to close : Why ?? - // ---------------------------------------------------------- - // wxMessageBox("-I-> end Doc"); - p_TabArea->Show(FALSE); // Deactivate the Window - p_PageArea->Show(FALSE); // Deactivate the Window - p_PgmCtrl = NULL; - delete p_PgmCtrl; - delete [] p_DSN; - delete p_DBTree; - p_TabArea = NULL; delete p_TabArea; - p_PageArea = NULL; delete p_PageArea; - p_Splitter = NULL; - delete p_Splitter; - delete [] db_Br; - // wxMessageBox("~mjDoc"); + // ---------------------------------------------------------- + // -E-> The Tree Controls take to long to close : Why ?? + // ---------------------------------------------------------- + // wxMessageBox("-I-> end Doc"); + p_TabArea->Show(FALSE); // Deactivate the Window + p_PageArea->Show(FALSE); // Deactivate the Window + p_PgmCtrl = NULL; + delete p_PgmCtrl; + delete [] p_DSN; + delete p_DBTree; + p_TabArea = NULL; delete p_TabArea; + p_PageArea = NULL; delete p_PageArea; + p_Splitter = NULL; + delete p_Splitter; + delete [] db_Br; + // wxMessageBox("~mjDoc"); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- bool mjDoc::OnNewDocument() { - //------------------------------------------------------------------- - if (!OnInitView()) - { - return FALSE; - } - p_PgmCtrl->OnPopulate(); - //------------------------------------------------------------------- - return TRUE; + //--------------------------------------------------------------------------------------- + if (!OnInitView()) + { + return FALSE; + } + p_PgmCtrl->OnPopulate(); + //--------------------------------------------------------------------------------------- + return TRUE; } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- bool mjDoc::OnInitView() { - Sash = p_ProgramCfg->Read("/MainFrame/Sash", 200); - // wxMessageBox("OnInitView() - Begin ","-I->mjDoc::OnInitView"); - //-------------------------------------------------------------------------- - // create "workplace" window - //-------------------------------------------------------------------------- - p_TabArea = new wxTabbedWindow(); // Init the Pointer - p_TabArea->Create(p_Splitter, -1); - //-------------------------------------------------------------------------- - p_PgmCtrl = new PgmCtrl(p_TabArea, TREE_CTRL_PGM,wxDefaultPosition, wxDefaultSize, - wxTR_HAS_BUTTONS | wxSUNKEN_BORDER); - p_PgmCtrl->i_TabArt = 0; // 0 = Tab ; 1 = Page - p_PgmCtrl->i_ViewNr = p_TabArea->GetTabCount()-1; - //-------------------------------------------------------------------------- - wxBitmap *p_FolderClose = new wxBitmap("PgmCtrl"); //, wxBITMAP_TYPE_BMP_RESOURCE); // BJO20000115 - //-------------------------------------------------------------------------- - p_TabArea->AddTab(p_PgmCtrl,"PgmCtrl",p_FolderClose); - //-------------------------------------------------------------------------- - // now create "output" window - //-------------------------------------------------------------------------- - p_PageArea = new wxPaggedWindow(); // Init the Pointer - p_PageArea->Create(p_Splitter, -1); - //-------------------------------------------------------------------------- - p_LogWin = new wxTextCtrl(p_PageArea,-1,wxEmptyString, - wxDefaultPosition, wxDefaultSize,wxTE_MULTILINE ); - //wxFont* ft_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS"); - wxFont* ft_Temp = new wxFont(wxSystemSettings::GetSystemFont(wxSYS_SYSTEM_FONT)); - p_LogWin->SetFont(* ft_Temp); - // Don't forget ! This is always : i_TabArt = 0 ; i_ViewNr = 1; - //------------------------------------------------------------------ - p_LogBook = new wxLogTextCtrl(p_LogWin); // make p_LogWin the LogBook - p_LogBook->SetActiveTarget(p_LogBook); - p_LogBook->SetTimestamp( NULL ); - //------------------------------------------------------------------ - p_PageArea->AddTab(p_LogWin,_("LogBook"), "what is this?" ); - i_TabNr = p_TabArea->GetTabCount()-1; // Add one when a new AddTab is done; - i_PageNr = p_PageArea->GetTabCount()-1; // Add one when a new AddTab is done; - //-------------------------------------------------------------------------- - p_PgmCtrl->pDoc = this; - p_TabArea->SetActiveTab(i_PageNr); - //-------------------------------------------------------------------------- - p_Splitter->Initialize(p_TabArea); - p_Splitter->SplitHorizontally(p_TabArea,p_PageArea,Sash); - //-------------------------------------------------------------------------- - - if (!OnInitODBC()) - return FALSE; - //-------------------------------------------------------------------------- - Temp0.Printf("-I-> mjDoc::OnInitView() - End - %d DSN's found",i_DSN); - p_MainFrame->SetStatusText(Temp0, 0); - wxLogMessage(Temp0); - return TRUE; + Sash = p_ProgramCfg->Read("/MainFrame/Sash", 200); + // wxMessageBox("OnInitView() - Begin ","-I->mjDoc::OnInitView"); + //--------------------------------------------------------------------------------------- + // create "workplace" window + //--------------------------------------------------------------------------------------- + p_TabArea = new wxTabbedWindow(); // Init the Pointer + p_TabArea->Create(p_Splitter, -1); + //--------------------------------------------------------------------------------------- + p_PgmCtrl = new PgmCtrl(p_TabArea, TREE_CTRL_PGM,wxDefaultPosition, wxDefaultSize, + wxTR_HAS_BUTTONS | wxSUNKEN_BORDER); + p_PgmCtrl->i_TabArt = 0; // 0 = Tab ; 1 = Page + p_PgmCtrl->i_ViewNr = p_TabArea->GetTabCount()-1; + //--------------------------------------------------------------------------------------- + wxBitmap *p_FolderClose = new wxBitmap("PgmCtrl"); //, wxBITMAP_TYPE_BMP_RESOURCE); // BJO20000115 + //--------------------------------------------------------------------------------------- + p_TabArea->AddTab(p_PgmCtrl,"PgmCtrl",p_FolderClose); + //--------------------------------------------------------------------------------------- + // now create "output" window + //--------------------------------------------------------------------------------------- + p_PageArea = new wxPaggedWindow(); // Init the Pointer + p_PageArea->Create(p_Splitter, -1); + //--------------------------------------------------------------------------------------- + p_LogWin = new wxTextCtrl(p_PageArea,-1,wxEmptyString, + wxDefaultPosition, wxDefaultSize,wxTE_MULTILINE ); + //wxFont* ft_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS"); + wxFont* ft_Temp = new wxFont(wxSystemSettings::GetSystemFont(wxSYS_SYSTEM_FONT)); + p_LogWin->SetFont(* ft_Temp); + // Don't forget ! This is always : i_TabArt = 0 ; i_ViewNr = 1; + //--------------------------------------------------------------------------------------- + p_LogBook = new wxLogTextCtrl(p_LogWin); // make p_LogWin the LogBook + p_LogBook->SetActiveTarget(p_LogBook); + p_LogBook->SetTimestamp( NULL ); + //--------------------------------------------------------------------------------------- + p_PageArea->AddTab(p_LogWin,_("LogBook"), "what is this?" ); + i_TabNr = p_TabArea->GetTabCount()-1; // Add one when a new AddTab is done; + i_PageNr = p_PageArea->GetTabCount()-1; // Add one when a new AddTab is done; + //--------------------------------------------------------------------------------------- + p_PgmCtrl->pDoc = this; + p_TabArea->SetActiveTab(i_PageNr); + //--------------------------------------------------------------------------------------- + p_Splitter->Initialize(p_TabArea); + p_Splitter->SplitHorizontally(p_TabArea,p_PageArea,Sash); + //--------------------------------------------------------------------------------------- + if (!OnInitODBC()) + return FALSE; + //--------------------------------------------------------------------------------------- + Temp0.Printf("-I-> mjDoc::OnInitView() - End - %d DSN's found",i_DSN); + p_MainFrame->SetStatusText(Temp0, 0); + wxLogMessage(Temp0); + return TRUE; } //---------------------------------------------------------------------------------------- bool mjDoc::OnInitODBC() { - char Dsn[SQL_MAX_DSN_LENGTH + 1]; - char DsDesc[255]; // BJO20002501 instead of 512 - Temp0 = ""; - i_DSN = 0; // Counter - int i = 0; - //--------------------------------------------------------------------------- - // Initialize the ODBC Environment for Database Operations - - if (SQLAllocEnv(&DbConnectInf.Henv) != SQL_SUCCESS) - { - return FALSE; - } - //--------------------------------------------------------------------------- - - const char sep = 3; // separator character used in string between DSN ans DsDesc - wxStringList s_SortDSNList, s_SortDsDescList; - // BJO-20000127 - // In order to have same sort result on both Dsn and DsDesc, create a 'keyed' string. - // The key will be removed after sorting - wxString KeyString; - //--------------------------------------------------------------------------- - while(GetDataSource(DbConnectInf.Henv, Dsn, sizeof(Dsn), DsDesc, sizeof(DsDesc))) - { - i_DSN++; // How many Dsn have we ? - KeyString.Printf("%s%c%s",Dsn, sep, DsDesc); - s_SortDSNList.Add(Dsn); - s_SortDsDescList.Add(KeyString); - } - s_SortDSNList.Sort(); //BJO - s_SortDsDescList.Sort(); //BJO - - char ** s_SortDSN = s_SortDSNList.ListToArray(); //BJO - char ** s_SortDsDesc = s_SortDsDescList.ListToArray(); //BJO - //--------------------------------------------------------------------------- - // Allocate n ODBC-DSN objects to hold the information - p_DSN = new DSN[i_DSN]; //BJO - for (i=0;iDsn = s_SortDSN[i]; - (p_DSN+i)->Drv = s_SortDsDesc[i]; - (p_DSN+i)->Usr = ""; - (p_DSN+i)->Pas = ""; - Temp0.Printf("%02d) Dsn(%s) DsDesc(%s)",i,(p_DSN+i)->Dsn.c_str(),(p_DSN+i)->Drv.c_str()); - wxLogMessage(Temp0); - } - i = 0; - //--------------------------------------------------------------------------- - // Allocate n wxDatabase objects to hold the column information - db_Br = new BrowserDB[i_DSN]; - for (i=0;ip_LogWindow = p_LogWin; - (db_Br+i)->ODBCSource = (p_DSN+i)->Dsn; - (db_Br+i)->UserName = (p_DSN+i)->Usr; - (db_Br+i)->Password = (p_DSN+i)->Pas; - (db_Br+i)->pDoc = this; - (db_Br+i)->i_Which = i; - } - - if (SQLFreeEnv(&DbConnectInf.Henv) != SQL_SUCCESS) // BJO20000125 - { - // Error freeing environment handle - } - - delete [] s_SortDSN; - delete [] s_SortDsDesc; - - //--------------------------------------------------------------------------- - if (!i_DSN) - { - wxMessageBox(_("No Dataset names found in ODBC!\n" \ - " Program will exit!\n\n" \ - " Ciao"),"-E-> Fatal situation"); - return FALSE; - } - //--------------------------------------------------------------------------- - return TRUE; + char Dsn[SQL_MAX_DSN_LENGTH + 1]; + char DsDesc[255]; // BJO20002501 instead of 512 + Temp0 = ""; + i_DSN = 0; // Counter + int i = 0; + //--------------------------------------------------------------------------------------- + // Initialize the ODBC Environment for Database Operations + + if (SQLAllocEnv(&DbConnectInf.Henv) != SQL_SUCCESS) + { + return FALSE; + } + //--------------------------------------------------------------------------------------- + const char sep = 3; // separator character used in string between DSN ans DsDesc + wxStringList s_SortDSNList, s_SortDsDescList; + // BJO-20000127 + // In order to have same sort result on both Dsn and DsDesc, create a 'keyed' string. + // The key will be removed after sorting + wxString KeyString; + //--------------------------------------------------------------------------------------- + while(GetDataSource(DbConnectInf.Henv, Dsn, sizeof(Dsn), DsDesc, sizeof(DsDesc))) + { + i_DSN++; // How many Dsn have we ? + KeyString.Printf("%s%c%s",Dsn, sep, DsDesc); + s_SortDSNList.Add(Dsn); + s_SortDsDescList.Add(KeyString); + } + s_SortDSNList.Sort(); //BJO + s_SortDsDescList.Sort(); //BJO + + char ** s_SortDSN = s_SortDSNList.ListToArray(); //BJO + char ** s_SortDsDesc = s_SortDsDescList.ListToArray(); //BJO + //--------------------------------------------------------------------------------------- + // Allocate n ODBC-DSN objects to hold the information + p_DSN = new DSN[i_DSN]; //BJO + for (i=0;iDsn = s_SortDSN[i]; + (p_DSN+i)->Drv = s_SortDsDesc[i]; + (p_DSN+i)->Usr = ""; + (p_DSN+i)->Pas = ""; + Temp0.Printf("%02d) Dsn(%s) DsDesc(%s)",i,(p_DSN+i)->Dsn.c_str(),(p_DSN+i)->Drv.c_str()); + wxLogMessage(Temp0); + } + i = 0; + //--------------------------------------------------------------------------------------- + // Allocate n wxDatabase objects to hold the column information + db_Br = new BrowserDB[i_DSN]; + for (i=0;ip_LogWindow = p_LogWin; + (db_Br+i)->ODBCSource = (p_DSN+i)->Dsn; + (db_Br+i)->UserName = (p_DSN+i)->Usr; + (db_Br+i)->Password = (p_DSN+i)->Pas; + (db_Br+i)->pDoc = this; + (db_Br+i)->i_Which = i; + } + if (SQLFreeEnv(&DbConnectInf.Henv) != SQL_SUCCESS) // BJO20000125 + { + // Error freeing environment handle + } + delete [] s_SortDSN; + delete [] s_SortDsDesc; + //--------------------------------------------------------------------------------------- + if (!i_DSN) + { + wxMessageBox(_("No Dataset names found in ODBC!\n" \ + " Program will exit!\n\n" \ + " Ciao"),"-E-> Fatal situation"); + return FALSE; + } + //--------------------------------------------------------------------------------------- + return TRUE; } //---------------------------------------------------------------------------------------- bool mjDoc::OnChosenDSN(int Which) { - // wxLogMessage("OnChosenDSN(%d) - Begin",Which); - //--------------------------------------------------------------------------- - if (p_DBTree != NULL) - { - p_TabArea->Show(FALSE); // Deactivate the Window - p_TabArea->RemoveTab(p_DBTree->i_ViewNr); - p_TabArea->Show(TRUE); // Activate the Window - OnChosenTbl(77,""); - } - //------------------------- + // wxLogMessage("OnChosenDSN(%d) - Begin",Which); + //--------------------------------------------------------------------------------------- + if (p_DBTree != NULL) + { p_TabArea->Show(FALSE); // Deactivate the Window - p_DBTree = new DBTree(p_TabArea, TREE_CTRL_DB,wxDefaultPosition, wxDefaultSize, - wxTR_HAS_BUTTONS | wxSUNKEN_BORDER); - p_TabArea->AddTab(p_DBTree,(p_DSN+Which)->Dsn," ? "); - p_DBTree->i_ViewNr = p_TabArea->GetTabCount()-1; - p_TabArea->Show(TRUE); // Deactivate the Window - p_DBTree->i_Which = Which; - p_DBTree->s_DSN = (p_DSN+Which)->Dsn; - p_DBTree->i_TabArt = 0; - p_DBTree->pDoc = this; - p_DBTree->OnPopulate(); - p_TabArea->SetActiveTab(p_DBTree->i_ViewNr); - //--------------------------------------------------------------------------- - // wxLogMessage("OnChosenDSN(%d) - End",Which); - return TRUE; + p_TabArea->RemoveTab(p_DBTree->i_ViewNr); + p_TabArea->Show(TRUE); // Activate the Window + OnChosenTbl(77,""); + } + //------------------------- + p_TabArea->Show(FALSE); // Deactivate the Window + p_DBTree = new DBTree(p_TabArea, TREE_CTRL_DB,wxDefaultPosition, wxDefaultSize, + wxTR_HAS_BUTTONS | wxSUNKEN_BORDER); + p_TabArea->AddTab(p_DBTree,(p_DSN+Which)->Dsn," ? "); + p_DBTree->i_ViewNr = p_TabArea->GetTabCount()-1; + p_TabArea->Show(TRUE); // Deactivate the Window + p_DBTree->i_Which = Which; + p_DBTree->s_DSN = (p_DSN+Which)->Dsn; + p_DBTree->i_TabArt = 0; + p_DBTree->pDoc = this; + p_DBTree->OnPopulate(); + p_TabArea->SetActiveTab(p_DBTree->i_ViewNr); + //--------------------------------------------------------------------------------------- + // wxLogMessage("OnChosenDSN(%d) - End",Which); + return TRUE; } //---------------------------------------------------------------------------------------- bool mjDoc::OnChosenTbl(int Tab,wxString Table) { - // wxLogMessage("OnChosenTbl(%d,%s)",Tab,Table.c_str()); - //------------------------- - if (p_DBGrid != NULL) - { - if (p_DBGrid->i_TabArt == 0) - { - p_TabArea->Show(FALSE); // Deactivate the Window - p_TabArea->RemoveTab(p_DBGrid->i_ViewNr); - p_TabArea->Show(TRUE); // Activate the Window - } - if (p_DBGrid->i_TabArt == 1) - { - p_PageArea->Show(FALSE); // Deactivate the Window - p_PageArea->RemoveTab(p_DBGrid->i_ViewNr); - p_PageArea->Show(TRUE); // Activate the Window - } - p_DBGrid = NULL; - delete p_DBGrid; - } - if (Tab == 77) // Delete only - return TRUE; - //------------------------- - if (Tab == 0) // Tabview - { - p_TabArea->Show(FALSE); // Deactivate the Window - p_DBGrid = new DBGrid(p_TabArea,GRID_CTRL_DB,wxDefaultPosition, wxDefaultSize, - wxSUNKEN_BORDER); - p_TabArea->AddTab(p_DBGrid, Table, ""); - p_DBGrid->i_ViewNr = p_TabArea->GetTabCount()-1; - p_DBGrid->pDoc = this; - p_DBGrid->db_Br = db_Br; - p_DBGrid->OnTableView(Table); - p_TabArea->SetActiveTab(p_DBGrid->i_ViewNr); - p_TabArea->Show(TRUE); // Activate the Window - } - if (Tab == 1) // Pageview - { - p_PageArea->Show(FALSE); // Deactivate the Window - p_DBGrid = new DBGrid(p_PageArea,GRID_CTRL_DB,wxDefaultPosition, wxDefaultSize, - wxSUNKEN_BORDER); - p_PageArea->AddTab(p_DBGrid, Table, ""); - p_DBGrid->i_ViewNr = p_PageArea->GetTabCount()-1; - p_DBGrid->pDoc = this; - p_DBGrid->db_Br = db_Br; - p_DBGrid->i_Which = p_DBTree->i_Which; - p_PageArea->Show(TRUE); // Activate the Window - p_DBGrid->OnTableView(Table); - p_PageArea->SetActiveTab(p_DBGrid->i_ViewNr); - } - p_DBGrid->i_TabArt = Tab; - //---*---------------------- - return TRUE;; + // wxLogMessage("OnChosenTbl(%d,%s)",Tab,Table.c_str()); + //------------------------- + if (p_DBGrid != NULL) + { + if (p_DBGrid->i_TabArt == 0) + { + p_TabArea->Show(FALSE); // Deactivate the Window + p_TabArea->RemoveTab(p_DBGrid->i_ViewNr); + p_TabArea->Show(TRUE); // Activate the Window + } + if (p_DBGrid->i_TabArt == 1) + { + p_PageArea->Show(FALSE); // Deactivate the Window + p_PageArea->RemoveTab(p_DBGrid->i_ViewNr); + p_PageArea->Show(TRUE); // Activate the Window + } + p_DBGrid = NULL; + delete p_DBGrid; + } + if (Tab == 77) // Delete only + return TRUE; + //------------------------- + if (Tab == 0) // Tabview + { + p_TabArea->Show(FALSE); // Deactivate the Window + p_DBGrid = new DBGrid(p_TabArea,GRID_CTRL_DB,wxDefaultPosition, wxDefaultSize, + wxSUNKEN_BORDER); + p_TabArea->AddTab(p_DBGrid, Table, ""); + p_DBGrid->i_ViewNr = p_TabArea->GetTabCount()-1; + p_DBGrid->pDoc = this; + p_DBGrid->db_Br = db_Br; + p_DBGrid->OnTableView(Table); + p_TabArea->SetActiveTab(p_DBGrid->i_ViewNr); + p_TabArea->Show(TRUE); // Activate the Window + } + if (Tab == 1) // Pageview + { + p_PageArea->Show(FALSE); // Deactivate the Window + p_DBGrid = new DBGrid(p_PageArea,GRID_CTRL_DB,wxDefaultPosition, wxDefaultSize, + wxSUNKEN_BORDER); + p_PageArea->AddTab(p_DBGrid, Table, ""); + p_DBGrid->i_ViewNr = p_PageArea->GetTabCount()-1; + p_DBGrid->pDoc = this; + p_DBGrid->db_Br = db_Br; + p_DBGrid->i_Which = p_DBTree->i_Which; + p_PageArea->Show(TRUE); // Activate the Window + p_DBGrid->OnTableView(Table); + p_PageArea->SetActiveTab(p_DBGrid->i_ViewNr); + } + p_DBGrid->i_TabArt = Tab; + //-------------------------- + return TRUE;; } //---------------------------------------------------------------------------------------- void mjDoc::OnLeer(wxString Aufrufer) { - // Temp0.Printf(_("\nmjDoc::OnLeer(%s) : auch diese funktion steht eines Tages zur Verfügung !"),Aufrufer.c_str()); - Temp0.Printf(_("\nmjDoc::OnLeer(%s) : even this function will one day be available !"),Aufrufer.c_str()); - wxLogMessage(Temp0); Temp0.Empty(); - return; + // Temp0.Printf(_("\nmjDoc::OnLeer(%s) : auch diese funktion steht eines Tages zur Verfügung !"),Aufrufer.c_str()); + Temp0.Printf(_("\nmjDoc::OnLeer(%s) : even this function will one day be available !"),Aufrufer.c_str()); + wxLogMessage(Temp0); Temp0.Empty(); + return; } //---------------------------------------------------------------------------------------- BEGIN_EVENT_TABLE(DocSplitterWindow, wxSplitterWindow) - END_EVENT_TABLE() - //---------------------------------------------------------------------------------------- - // Define a constructor for my p_Splitter - DocSplitterWindow::DocSplitterWindow(wxWindow *parent, wxWindowID id) : wxSplitterWindow(parent, id) -{ +END_EVENT_TABLE() +//---------------------------------------------------------------------------------------- +DocSplitterWindow::DocSplitterWindow(wxWindow *parent, wxWindowID id) : wxSplitterWindow(parent, id) +{ // Define a constructor for my p_Splitter } //---------------------------------------------------------------------------------------- diff --git a/demos/dbbrowse/doc.h b/demos/dbbrowse/doc.h index 41397ab85e..50a7610716 100644 --- a/demos/dbbrowse/doc.h +++ b/demos/dbbrowse/doc.h @@ -1,15 +1,15 @@ -//--------------------------------------------------------------------------- +//-------------------------------------------------------------------------------------------------- // Name: Doc.h -// Purpose: First attempt to make a MDIProgram with a Tree and ListView +// Purpose: a non-MFC Document (a do-it-yourself document) // Author: Mark Johnson, mj10777@gmx.net // Modified by: 19990808.mj10777 // Created: 19990808 // Copyright: (c) Mark Johnson // Licence: wxWindows license // RCS-ID: $Id$ -//------------------------------------------------------------------------------ -//-- Some Global Vars ------------------------------------------------------ -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- +//-- Some Global Vars -------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- class DSN { public: @@ -18,52 +18,56 @@ class DSN wxString Pas; wxString Usr; }; +//---------------------------------------------------------------------------------------- // Global structure for holding ODBC connection information extern struct DbStuff DbConnectInf; -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- extern wxConfigBase *p_ProgramCfg; // All Config and Path information extern wxLogTextCtrl *p_LogBook; // All Log messages extern wxString LogBuf; // String for all Logs -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- class PgmCtrl; // Declared in PgmCtrl.h file class DocSplitterWindow; // Declared at the end of the file -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- class mjDoc { public: - //--------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- mjDoc(); virtual ~mjDoc(); int Sash; - //--------------------------------------------------------------------------- - //-- declare document Vars here --------------------------------------------- - //--------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- + //-- declare document Vars here --------------------------------------------------------- + //--------------------------------------------------------------------------------------- wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5; BrowserDB *db_Br; // Pointer to wxDB DSN *p_DSN; int i_DSN; // Counter - //--------------------------------------------------------------------------- - DocSplitterWindow *p_Splitter; - wxFrame *p_MainFrame; // SDI Version - PgmCtrl *p_PgmCtrl; - DBTree *p_DBTree; - DBGrid *p_DBGrid; - wxTextCtrl *p_LogWin; - wxTabbedWindow *p_TabArea; - wxPaggedWindow *p_PageArea; - int i_TabNr; // Amount of active Views in Tab - int i_PageNr; // Amount of active Views in Page - //--------------------------------------------------------------------------- - //-- declare document Functions here ---------------------------------------- - //--------------------------------------------------------------------------- + wxString s_BColour; + wxFont *ft_Doc; + //--------------------------------------------------------------------------------------- + DocSplitterWindow *p_Splitter; + wxHtmlHelpController *p_Help; + wxFrame *p_MainFrame; // SDI Version + PgmCtrl *p_PgmCtrl; + DBTree *p_DBTree; + DBGrid *p_DBGrid; + wxTextCtrl *p_LogWin; + wxTabbedWindow *p_TabArea; + wxPaggedWindow *p_PageArea; + int i_TabNr; // Amount of active Views in Tab + int i_PageNr; // Amount of active Views in Page + //--------------------------------------------------------------------------------------- + //-- declare document Functions here ---------------------------------------------------- + //--------------------------------------------------------------------------------------- bool OnNewDocument(); bool OnInitView(); bool OnInitODBC(); bool OnChosenDSN(int Which); bool OnChosenTbl(int Tab,wxString Table); - //--------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- void OnLeer(wxString Aufrufer); // Dummy Funktion - //--------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- }; class DocSplitterWindow: public wxSplitterWindow { @@ -79,4 +83,4 @@ class DocSplitterWindow: public wxSplitterWindow } DECLARE_EVENT_TABLE() }; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- diff --git a/demos/dbbrowse/pgmctrl.cpp b/demos/dbbrowse/pgmctrl.cpp index 5522bd9e8b..4576a7f72a 100644 --- a/demos/dbbrowse/pgmctrl.cpp +++ b/demos/dbbrowse/pgmctrl.cpp @@ -1,4 +1,4 @@ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // Name: pgmctrl.h // Purpose: Programm Control with a Tree // Author: Mark Johnson @@ -7,25 +7,25 @@ // RCS-ID: $Id$ // Copyright: (c) Mark Johnson, Berlin Germany, mj10777@gmx.net // Licence: wxWindows license -//--------------------------------------------------------------------------- -//-- all #ifdefs that the whole Project needs. ------------------------------ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- all #ifdefs that the whole Project needs. ------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __GNUG__ #pragma implementation #pragma interface #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __BORLANDC__ #pragma hdrstop #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifndef WX_PRECOMP #include "wx/wx.h" #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifndef __WXMSW__ #include "bitmaps/d_closed.xpm" #include "bitmaps/d_open.xpm" @@ -35,267 +35,255 @@ #include "bitmaps/dsnclose.xpm" #include "bitmaps/dsnopen.xpm" #endif -//--------------------------------------------------------------------------- -//-- all #includes that every .cpp needs --- 19990807.mj10777 --- -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- all #includes that every .cpp needs --- 19990807.mj10777 ---------------- +//---------------------------------------------------------------------------------------- #include "std.h" // sorgsam Pflegen ! -//--------------------------------------------------------------------------- -//-- Global functions ------------------------------------------------------- -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- Global functions -------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- static inline const char *bool2String(bool b) { return b ? "" : "not "; } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- BEGIN_EVENT_TABLE(PgmCtrl, wxTreeCtrl) EVT_MOTION (PgmCtrl::OnMouseMove) EVT_LEFT_DCLICK(PgmCtrl::OnSelChanged) EVT_TREE_ITEM_RIGHT_CLICK(TREE_CTRL_PGM,PgmCtrl::OnRightSelect) EVT_MENU(PGMCTRL_ODBC_USER,PgmCtrl::OnUserPassword) - END_EVENT_TABLE() - //--------------------------------------------------------------------------- - // PgmCtrl implementation - //--------------------------------------------------------------------------- - IMPLEMENT_DYNAMIC_CLASS(PgmCtrl, wxTreeCtrl) - //--------------------------------------------------------------------------- - PgmCtrl::PgmCtrl(wxWindow *parent) : wxTreeCtrl(parent) +END_EVENT_TABLE() +//---------------------------------------------------------------------------------------- +// PgmCtrl implementation +//---------------------------------------------------------------------------------------- +IMPLEMENT_DYNAMIC_CLASS(PgmCtrl, wxTreeCtrl) +//---------------------------------------------------------------------------------------- +PgmCtrl::PgmCtrl(wxWindow *parent) : wxTreeCtrl(parent) { } +//---------------------------------------------------------------------------------------- PgmCtrl::PgmCtrl(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size, long style) : wxTreeCtrl(parent, id, pos, size, style) { - //wxFont* ft_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS"); - wxFont* ft_Temp = new wxFont(wxSystemSettings::GetSystemFont(wxSYS_SYSTEM_FONT)); - SetFont(* ft_Temp); - - // Make an image list containing small icons - p_imageListNormal = new wxImageList(16, 16, TRUE); - - // should correspond to TreeIc_xxx enum + // Make an image list containing small icons + p_imageListNormal = new wxImageList(16, 16, TRUE); + // should correspond to TreeIc_xxx enum #if defined(__WXMSW__) && defined(__WIN16__) - // This is required in 16-bit Windows mode only because we can't load a specific (16x16) - // icon image, so it comes out stretched - p_imageListNormal->Add(wxBitmap("bitmap1", wxBITMAP_TYPE_BMP_RESOURCE)); - p_imageListNormal->Add(wxBitmap("bitmap2", wxBITMAP_TYPE_BMP_RESOURCE)); + // This is required in 16-bit Windows mode only because we can't load a specific (16x16) + // icon image, so it comes out stretched + p_imageListNormal->Add(wxBitmap("bitmap1", wxBITMAP_TYPE_BMP_RESOURCE)); + p_imageListNormal->Add(wxBitmap("bitmap2", wxBITMAP_TYPE_BMP_RESOURCE)); #else - p_imageListNormal->Add(wxICON(Logo)); - p_imageListNormal->Add(wxICON(DsnClosed)); - p_imageListNormal->Add(wxICON(DsnOpen)); - p_imageListNormal->Add(wxICON(DocClosed)); - p_imageListNormal->Add(wxICON(DocOpen)); - p_imageListNormal->Add(wxICON(FolderClosed)); - p_imageListNormal->Add(wxICON(FolderOpen)); + p_imageListNormal->Add(wxICON(aLogo)); + p_imageListNormal->Add(wxICON(DsnClosed)); + p_imageListNormal->Add(wxICON(DsnOpen)); + p_imageListNormal->Add(wxICON(DocClosed)); + p_imageListNormal->Add(wxICON(DocOpen)); + p_imageListNormal->Add(wxICON(FolderClosed)); + p_imageListNormal->Add(wxICON(FolderOpen)); #endif - - SetImageList(p_imageListNormal); - - // Add some items to the tree - // AddTestItemsToTree(3, 2); + SetImageList(p_imageListNormal); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- PgmCtrl::~PgmCtrl() { - // wxMessageBox("PgmCtrl::~PgmCtrl() - vor DeleteAllItems"); - // DeleteAllItems(); - // wxMessageBox("nach DeleteAllItems"); - delete p_imageListNormal; + delete p_imageListNormal; } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #undef TREE_EVENT_HANDLER -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- int PgmCtrl::OnPopulate() { - wxTreeItemId Root, Folder, Docu; - //---------------------------------------------------------------------------------------------------------------------------- - int i; - double dTmp = 1234567.89; - Temp0.Printf(_("%s Functions"),p_ProgramCfg->GetAppName().c_str()); - Root = AddRoot(Temp0,TreeIc_Logo,TreeIc_Logo, new TreeData("Root")); - //---------------------------------------------------------------------------------------------------------------------------- - Folder = AppendItem(Root, _("Program settings") ,TreeIc_FolderClosed, TreeIc_FolderOpen, new TreeData("Settings")); - p_ProgramCfg->Read("/Local/langid",&Temp0); p_ProgramCfg->Read("/Local/language",&Temp2); - Temp1.Printf(_("locale (%s) ; Language (%s) ; Number(%2.2f)"),Temp0.c_str(), Temp2.c_str(), dTmp); Temp0.Empty(); Temp2.Empty(); - Docu = AppendItem(Folder, Temp1 ,TreeIc_DocClosed, TreeIc_DocOpen, new TreeData("Setting Language")); - p_ProgramCfg->Read("/Paths/Work",&Temp0); Temp1.Printf(_("Work Path : %s"),Temp0.c_str()); Temp0.Empty(); - Docu = AppendItem(Folder, Temp1 ,TreeIc_DocClosed, TreeIc_DocOpen, new TreeData("Path Work")); - Docu = AppendItem(Folder, _("Change the language to English") ,TreeIc_DocClosed, TreeIc_DocOpen, new TreeData("Language English")); - Docu = AppendItem(Folder, _("Change the language to German") ,TreeIc_DocClosed, TreeIc_DocOpen, new TreeData("Language German")); - Docu = AppendItem(Folder, _("Delete all wxConfigBase Entry's"),TreeIc_DocClosed, TreeIc_DocOpen, new TreeData("wxConfigBase Delete")); - Folder = AppendItem(Root, "ODBC DSN" ,TreeIc_FolderClosed, TreeIc_FolderOpen, new TreeData("ODBC-DSN")); - for (i=0;ii_DSN;i++) - { - Temp0.Printf("ODBC-%s",(pDoc->p_DSN+i)->Dsn.c_str()); - Docu = AppendItem(Folder,(pDoc->p_DSN+i)->Dsn ,TreeIc_DsnClosed,TreeIc_DsnOpen, new TreeData(Temp0)); - } - //---------------------------------------------------------------------------------------------------------------------------- - popupMenu1 = NULL; - popupMenu1 = new wxMenu(""); - popupMenu1->Append(PGMCTRL_ODBC_USER, _("Set Username and Password")); - // popupMenu1->AppendSeparator(); - //---------------------------------------------------------------------------------------------------------------------------- - Expand(Root); - Expand(Folder); - //---------------------------------------------------------------------------------------------------------------------------- + SetFont(* pDoc->ft_Doc); + wxTreeItemId Root, Folder, Docu; + //--------------------------------------------------------------------------------------- + int i; + double dTmp = 1234567.89; + Temp0.Printf(_("%s Functions"),p_ProgramCfg->GetAppName().c_str()); + Root = AddRoot(Temp0,TreeIc_Logo,TreeIc_Logo, new TreeData("Root")); + //--------------------------------------------------------------------------------------- + Folder = AppendItem(Root, _("Program settings") ,TreeIc_FolderClosed, TreeIc_FolderOpen, new TreeData("Settings")); + p_ProgramCfg->Read("/Local/langid",&Temp0); p_ProgramCfg->Read("/Local/language",&Temp2); + Temp1.Printf(_("locale (%s) ; Language (%s) ; Number(%2.2f)"),Temp0.c_str(), Temp2.c_str(), dTmp); Temp0.Empty(); Temp2.Empty(); + Docu = AppendItem(Folder, Temp1,TreeIc_DocClosed,TreeIc_DocOpen,new TreeData("Setting Language")); + p_ProgramCfg->Read("/Paths/Work",&Temp0); Temp1.Printf(_("Work Path : %s"),Temp0.c_str()); Temp0.Empty(); + Docu = AppendItem(Folder,Temp1,TreeIc_DocClosed,TreeIc_DocOpen,new TreeData("Path Work")); + Docu = AppendItem(Folder, _("Change the language to English") ,TreeIc_DocClosed,TreeIc_DocOpen,new TreeData("Language English")); + Docu = AppendItem(Folder, _("Change the language to German") ,TreeIc_DocClosed,TreeIc_DocOpen,new TreeData("Language German")); + Docu = AppendItem(Folder, _("Delete all wxConfigBase Entry's"),TreeIc_DocClosed,TreeIc_DocOpen,new TreeData("wxConfigBase Delete")); + Folder = AppendItem(Root, "ODBC DSN",TreeIc_FolderClosed,TreeIc_FolderOpen,new TreeData("ODBC-DSN")); + for (i=0;ii_DSN;i++) + { + Temp0.Printf("ODBC-%s",(pDoc->p_DSN+i)->Dsn.c_str()); + Docu = AppendItem(Folder,(pDoc->p_DSN+i)->Dsn ,TreeIc_DsnClosed,TreeIc_DsnOpen, new TreeData(Temp0)); + } + //--------------------------------------------------------------------------------------- + popupMenu1 = NULL; + popupMenu1 = new wxMenu(""); + popupMenu1->Append(PGMCTRL_ODBC_USER, _("Set Username and Password")); + // popupMenu1->AppendSeparator(); + //--------------------------------------------------------------------------------------- + Expand(Root); + Expand(Folder); + //--------------------------------------------------------------------------------------- return 0; } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void PgmCtrl::OnSelChanged(wxTreeEvent& WXUNUSED(event)) { - int i; - Temp0.Empty(); Temp1.Empty(); - pDoc->p_MainFrame->SetStatusText(Temp0,0); - // Get the Information that we need - wxTreeItemId itemId = GetSelection(); - TreeData *item = (TreeData *)GetItemData(itemId); - if ( item != NULL ) + int i; + Temp0.Empty(); Temp1.Empty(); + pDoc->p_MainFrame->SetStatusText(Temp0,0); + // Get the Information that we need + wxTreeItemId itemId = GetSelection(); + TreeData *item = (TreeData *)GetItemData(itemId); + if (item != NULL ) + { + int Treffer = 0; + Temp1.Printf("%s",item->m_desc.c_str()); + //-------------------------------------------------------------------------------------- + if (Temp1 == "Language English") + { + Temp0 = "std"; + p_ProgramCfg->Write("/Local/langid",Temp0); + Temp0 = _("-I-> After a programm restart, the language will be changed to English."); + wxMessageBox(Temp0); + } + if (Temp1 == "Language German") + { + Temp0 = "de"; + p_ProgramCfg->Write("/Local/langid",Temp0); + Temp0 = _("-I-> After a programm restart, the language will be changed to German."); + wxMessageBox(Temp0); + } + //-------------------------------------------------------------------------------------- + if (Temp1 == "wxConfigBase Delete") + { + if (p_ProgramCfg->DeleteAll()) // Default Diretory for wxFileSelector + Temp0 = _("-I-> wxConfigBase.p_ProgramCfg->DeleteAll() was succesfull."); + else + Temp0 = _("-E-> wxConfigBase.p_ProgramCfg->DeleteAll() was not succesfull !"); + wxBell(); // Ding_a_Ling + Treffer++; + } + //-------------------------------------------------------------------------------------- + if (Temp1.Contains("ODBC-")) + { + Temp1 = Temp1.Mid(5,wxSTRING_MAXLEN); + for (i=0;ii_DSN;i++) + { + if (Temp1 == (pDoc->p_DSN+i)->Dsn) { - int Treffer = 0; - Temp1.Printf("%s",item->m_desc.c_str()); - //----------------------------------------------------------------------------------------- - if (Temp1 == "Language English") - { - Temp0 = "std"; - p_ProgramCfg->Write("/Local/langid",Temp0); - Temp0 = _("-I-> After a programm restart, the language will be changed to English."); - wxMessageBox(Temp0); - } - if (Temp1 == "Language German") - { - Temp0 = "de"; - p_ProgramCfg->Write("/Local/langid",Temp0); - Temp0 = _("-I-> After a programm restart, the language will be changed to German."); - wxMessageBox(Temp0); - } - //----------------------------------------------------------------------------------------- - if (Temp1 == "wxConfigBase Delete") - { - if (p_ProgramCfg->DeleteAll()) // Default Diretory for wxFileSelector - Temp0 = _("-I-> wxConfigBase.p_ProgramCfg->DeleteAll() was succesfull."); - else - Temp0 = _("-E-> wxConfigBase.p_ProgramCfg->DeleteAll() was not succesfull !"); - wxBell(); // Ding_a_Ling - Treffer++; - } - //----------------------------------------------------------------------------------------- - if (Temp1.Contains("ODBC-")) - { - Temp1 = Temp1.Mid(5,wxSTRING_MAXLEN); - for (i=0;ii_DSN;i++) - { - if (Temp1 == (pDoc->p_DSN+i)->Dsn) - { - pDoc->OnChosenDSN(i); - } - } - Treffer++; - } - //----------------------------------------------------------------------------------------- - if (Treffer == 0) - { - //--------------------------------------------------- - Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold," - "%u children (%u immediately under this item)."), - item->m_desc.c_str(), - bool2String(IsSelected(itemId)), - bool2String(IsExpanded(itemId)), - bool2String(IsBold(itemId)), - GetChildrenCount(itemId), - GetChildrenCount(itemId)); - LogBuf.Printf("-I-> PgmCtrl::OnSelChanged - %s",Temp0.c_str()); - wxLogMessage( "%s", LogBuf.c_str() ); - //--------------------------------------------------- - } + pDoc->OnChosenDSN(i); } + } + Treffer++; + } + //-------------------------------------------------------------------------------------- + if (Treffer == 0) + { + //------------------------------------------------------------------------------------- + Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold," + "%u children (%u immediately under this item)."), + item->m_desc.c_str(), + bool2String(IsSelected(itemId)), + bool2String(IsExpanded(itemId)), + bool2String(IsBold(itemId)), + GetChildrenCount(itemId), + GetChildrenCount(itemId)); + LogBuf.Printf("-I-> PgmCtrl::OnSelChanged - %s",Temp0.c_str()); + wxLogMessage( "%s", LogBuf.c_str() ); + //------------------------------------------------------------------------------------- + } + } } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void PgmCtrl::OnRightSelect(wxTreeEvent& WXUNUSED(event)) { - int i; - Temp0.Empty(); - // Get the Information that we need - wxTreeItemId itemId = GetSelection(); - DBTreeData *item = (DBTreeData *)GetItemData(itemId); - SaveDSN.Empty(); - if ( item != NULL ) + int i; + Temp0.Empty(); + // Get the Information that we need + wxTreeItemId itemId = GetSelection(); + DBTreeData *item = (DBTreeData *)GetItemData(itemId); + SaveDSN.Empty(); + if ( item != NULL ) + { + int Treffer = 0; + Temp1.Printf("%s",item->m_desc.c_str()); + //-------------------------------------------------------------------------------------- + if (Temp1.Contains("ODBC-")) + { + Temp1 = Temp1.Mid(5,wxSTRING_MAXLEN); + for (i=0;ii_DSN;i++) + { + if (Temp1 == (pDoc->p_DSN+i)->Dsn) { - int Treffer = 0; - Temp1.Printf("%s",item->m_desc.c_str()); - //----------------------------------------------------------------------------------------- - if (Temp1.Contains("ODBC-")) - { - Temp1 = Temp1.Mid(5,wxSTRING_MAXLEN); - for (i=0;ii_DSN;i++) - { - if (Temp1 == (pDoc->p_DSN+i)->Dsn) - { - SaveDSN = Temp1; - PopupMenu(popupMenu1,TreePos.x,TreePos.y); - } - } - Treffer++; - } - //----------------------------------------------------------------------------------------- - if (Treffer == 0) - { - //--------------------------------------------------- - /* - Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold," - "%u children (%u immediately under this item)."), - item->m_desc.c_str(), - bool2String(IsSelected(itemId)), - bool2String(IsExpanded(itemId)), + SaveDSN = Temp1; + PopupMenu(popupMenu1,TreePos.x,TreePos.y); + } + } + Treffer++; + } + //-------------------------------------------------------------------------------------- + if (Treffer == 0) + { + /* + Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold," + "%u children (%u immediately under this item)."), + item->m_desc.c_str(), + bool2String(IsSelected(itemId)), + bool2String(IsExpanded(itemId)), bool2String(IsBold(itemId)), GetChildrenCount(itemId), GetChildrenCount(itemId)); - LogBuf.Printf("-I-> DBTree::OnSelChanged - %s",Temp0.c_str()); - wxLogMessage( "%s", LogBuf.c_str() ); - */ - //--------------------------------------------------- - } - } + LogBuf.Printf("-I-> DBTree::OnSelChanged - %s",Temp0.c_str()); + wxLogMessage( "%s", LogBuf.c_str() ); + */ + } + //-------------------------------------------------------------------------------------- + } } -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- void PgmCtrl::OnMouseMove(wxMouseEvent &event) { - TreePos = event.GetPosition(); + TreePos = event.GetPosition(); } -//------------------------------------------------------------------------------ +//---------------------------------------------------------------------------------------- void PgmCtrl::OnUserPassword() { - // wxMessageBox(SaveDSN); - int i, rc=0; - //------------------------------------------- - DlgUser *p_Dlg = new DlgUser(this, "Username and Password"); - //------------------------------------------- - for (i=0;ii_DSN;i++) - { - if (SaveDSN == (pDoc->p_DSN+i)->Dsn) - { - p_Dlg->s_DSN = (pDoc->p_DSN+i)->Dsn; - p_Dlg->s_User = (pDoc->p_DSN+i)->Usr; - p_Dlg->s_Password = (pDoc->p_DSN+i)->Pas; - p_Dlg->OnInit(); - p_Dlg->Fit(); - //-------------------- - // Temp0.Printf("i(%d) ; s_DSN(%s) ; s_User(%s) ; s_Password(%s)",i,p_Dlg.s_DSN,p_Dlg.s_User,p_Dlg.s_Password); - // wxMessageBox(Temp0); - bool OK = FALSE; - if (p_Dlg->ShowModal() == wxID_OK) - { - (pDoc->p_DSN+i)->Usr = p_Dlg->s_User; - (pDoc->p_DSN+i)->Pas = p_Dlg->s_Password; - (pDoc->db_Br+i)->UserName = (pDoc->p_DSN+i)->Usr; - (pDoc->db_Br+i)->Password = (pDoc->p_DSN+i)->Pas; - OK = TRUE; - } - delete p_Dlg; - if (!OK) return; - //-------------------- - break; // We have what we want, leave - } - } - - //------------------------------------------- - SaveDSN.Empty(); + // wxMessageBox(SaveDSN); + int i, rc=0; + //------------------------------------------- + DlgUser *p_Dlg = new DlgUser(this, "Username and Password"); + //------------------------------------------- + for (i=0;ii_DSN;i++) + { + if (SaveDSN == (pDoc->p_DSN+i)->Dsn) + { + p_Dlg->s_DSN = (pDoc->p_DSN+i)->Dsn; + p_Dlg->s_User = (pDoc->p_DSN+i)->Usr; + p_Dlg->s_Password = (pDoc->p_DSN+i)->Pas; + p_Dlg->OnInit(); + p_Dlg->Fit(); + //-------------------- + // Temp0.Printf("i(%d) ; s_DSN(%s) ; s_User(%s) ; s_Password(%s)",i,p_Dlg.s_DSN,p_Dlg.s_User,p_Dlg.s_Password); + // wxMessageBox(Temp0); + bool OK = FALSE; + if (p_Dlg->ShowModal() == wxID_OK) + { + (pDoc->p_DSN+i)->Usr = p_Dlg->s_User; + (pDoc->p_DSN+i)->Pas = p_Dlg->s_Password; + (pDoc->db_Br+i)->UserName = (pDoc->p_DSN+i)->Usr; + (pDoc->db_Br+i)->Password = (pDoc->p_DSN+i)->Pas; + OK = TRUE; + } + delete p_Dlg; + if (!OK) return; + //-------------------- + break; // We have what we want, leave + } + } + //------------------------------------------- + SaveDSN.Empty(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- diff --git a/demos/dbbrowse/pgmctrl.h b/demos/dbbrowse/pgmctrl.h index abbe978aa7..b528e26741 100644 --- a/demos/dbbrowse/pgmctrl.h +++ b/demos/dbbrowse/pgmctrl.h @@ -1,4 +1,4 @@ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // Name: pgmctrl.h // Purpose: Programm Control with a Tree // Author: Mark Johnson @@ -7,19 +7,17 @@ // RCS-ID: $Id$ // Copyright: (c) Mark Johnson, Berlin Germany, mj10777@gmx.net // Licence: wxWindows license -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- class mjDoc; // Declared in doc.h file -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- class TreeData : public wxTreeItemData { -public: + public: TreeData(const wxString& desc) : m_desc(desc) { } - void ShowInfo(wxTreeCtrl *tree); - - wxString m_desc; + wxString m_desc; }; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- class PgmCtrl : public wxTreeCtrl { public: @@ -34,21 +32,21 @@ class PgmCtrl : public wxTreeCtrl TreeIc_FolderOpen // f_open.ico }; wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- PgmCtrl() { } PgmCtrl(wxWindow *parent); PgmCtrl(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size,long style); virtual ~PgmCtrl(); mjDoc *pDoc; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- int i_TabArt; // Tab = 0 ; Page = 1; int i_ViewNr; // View Nummer in Tab / Page -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- wxImageList *p_imageListNormal; wxMenu *popupMenu1; // OnDBClass wxPoint TreePos; wxString SaveDSN; // Needed for User and Password -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- public: int OnPopulate(); void OnSelChanged(wxTreeEvent& event); @@ -57,7 +55,7 @@ class PgmCtrl : public wxTreeCtrl void OnUserPassword(); public: -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS() // if you want your overloaded OnCompareItems() to be called. // OTOH, if you don't want it you may omit the next line - this will @@ -65,8 +63,8 @@ class PgmCtrl : public wxTreeCtrl DECLARE_DYNAMIC_CLASS(PgmCtrl) DECLARE_EVENT_TABLE() }; -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #define PGMCTRL_01_BEGIN 1000 #define PGMCTRL_ODBC_USER 1001 #define PGMCTRL_01_END 1010 -//--------------------------------------------------------------------------- +//----------------------------------------------------------------------------------------