From: Bart A.M. Jourquin Date: Mon, 31 Jan 2000 10:43:24 +0000 (+0000) Subject: re-indent sources X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/b5ce269b141d0295f7c1d7afce0bda32d3a71d53 re-indent sources git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5746 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/demos/dbbrowse/browsedb.cpp b/demos/dbbrowse/browsedb.cpp index 3ee7463cfc..dd09716aed 100644 --- a/demos/dbbrowse/browsedb.cpp +++ b/demos/dbbrowse/browsedb.cpp @@ -12,19 +12,19 @@ //-- all #ifdefs that the whole Project needs. ------------------------------ //--------------------------------------------------------------------------- #ifdef __GNUG__ - #pragma implementation - #pragma interface +#pragma implementation +#pragma interface #endif //--------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" //--------------------------------------------------------------------------- #ifdef __BORLANDC__ - #pragma hdrstop +#pragma hdrstop #endif //--------------------------------------------------------------------------- #ifndef WX_PRECOMP - #include "wx/wx.h" +#include "wx/wx.h" #endif //--------------------------------------------------------------------------- #include @@ -38,65 +38,65 @@ extern DbList* WXDLLEXPORT PtrBegDbList; /* from db.cpp, used in getting back //--------------------------------------------------------------------------- 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(); + 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"); // msg += "\n"; - } - 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; + /* 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 ////////////////////////////////////////////////////////////////////////////////// // BJO 20000115 : New stuff : dialog to ask for username and password ////////////////////////////////////////////////////////////////////////////////// class UserDialog : public wxDialog { - public: +public: UserDialog(wxWindow* parent); virtual ~UserDialog(); void OnOK(wxCommandEvent& event); wxString s_UserName, s_Password; - - private: + +private: wxButton *m_OK; wxStaticText *m_Label1, *m_Label2; wxTextCtrl *m_UserName, *m_Password; - - + + DECLARE_EVENT_TABLE() -}; + }; //--------------------------------------------------------------------------- BEGIN_EVENT_TABLE(UserDialog, wxDialog) EVT_BUTTON(wxID_OK, UserDialog::OnOK) -END_EVENT_TABLE() -//--------------------------------------------------------------------------- -UserDialog::UserDialog(wxWindow *parent): + END_EVENT_TABLE() + //--------------------------------------------------------------------------- + UserDialog::UserDialog(wxWindow *parent): wxDialog(parent, -1, _("ODBC user"),wxDefaultPosition, wxSize(310, 300),wxDIALOG_MODAL | wxDEFAULT_DIALOG_STYLE) { wxLayoutConstraints* layout; @@ -109,7 +109,7 @@ UserDialog::UserDialog(wxWindow *parent): layout->height.AsIs(); layout->width.Absolute(75); m_OK->SetConstraints(layout); - + m_Label1 = new wxStaticText(this, -1, _("User name:")); layout = new wxLayoutConstraints; layout->left.SameAs(m_OK, wxLeft); @@ -117,7 +117,7 @@ UserDialog::UserDialog(wxWindow *parent): layout->height.AsIs(); layout->width.AsIs(); m_Label1->SetConstraints(layout); - + m_UserName = new wxTextCtrl(this, -1, ""); layout = new wxLayoutConstraints; layout->left.SameAs(m_OK, wxLeft); @@ -125,7 +125,7 @@ UserDialog::UserDialog(wxWindow *parent): layout->width.AsIs(); layout->height.AsIs(); m_UserName->SetConstraints(layout); - + m_Label2 = new wxStaticText(this, -1, _("Password:")); layout = new wxLayoutConstraints; layout->left.SameAs(m_OK, wxLeft); @@ -133,7 +133,7 @@ UserDialog::UserDialog(wxWindow *parent): layout->height.AsIs(); layout->width.AsIs(); m_Label2->SetConstraints(layout); - + m_Password = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD); layout = new wxLayoutConstraints; layout->left.SameAs(m_OK, wxLeft); @@ -141,10 +141,10 @@ UserDialog::UserDialog(wxWindow *parent): layout->top.SameAs(m_Label2, wxBottom, 3); layout->height.AsIs(); m_Password->SetConstraints(layout); - + s_UserName = ""; s_Password = ""; - + Layout(); } //--------------------------------------------------------------------------- @@ -154,9 +154,9 @@ UserDialog::~UserDialog() //--------------------------------------------------------------------------- void UserDialog::OnOK(wxCommandEvent& WXUNUSED(event)) { - strcpy(ConnectInf.Uid, m_UserName->GetValue()); - strcpy(ConnectInf.AuthStr, m_Password->GetValue()); - EndModal(1); + strcpy(ConnectInf.Uid, m_UserName->GetValue()); + strcpy(ConnectInf.AuthStr, m_Password->GetValue()); + EndModal(1); } ////////////////////////////////////////////////////////////////////////////////// // BJO 20000115 : end of new stuff @@ -164,12 +164,12 @@ void UserDialog::OnOK(wxCommandEvent& WXUNUSED(event)) //--------------------------------------------------------------------------- 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() @@ -179,371 +179,377 @@ BrowserDB::~BrowserDB() //-------------------------------------------------------------------------------------------- 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() : 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(pDoc->p_MainFrame, "Username and Password", wxPoint(100, 100), wxSize(340, 170)); - p_Dlg.s_DSN = ODBCSource; - p_Dlg.s_User = UserName; - p_Dlg.s_Password = Password; - p_Dlg.OnInit(); - 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; - } - p_Dlg.Destroy(); - //--------------------------- - 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, ""); + 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(pDoc->p_MainFrame, "Username and Password", wxPoint(100, 100), wxSize(340, 170)); + p_Dlg.s_DSN = ODBCSource; + p_Dlg.s_User = UserName; + p_Dlg.s_Password = Password; + p_Dlg.OnInit(); + 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; + } + p_Dlg.Destroy(); + //--------------------------- + 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) - { - 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; + { + 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; } //-------------------------------------------------------------------------------------------- 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-> ")); - 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 - { - 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, + 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 + { + 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 (!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 (!Quite) - wxLogMessage(Temp0); - else - wxMessageBox("-E-> BrowserDB::OnExecSql - ExecSql()"); - return FALSE; - } - if (!Quite) - { - // wxLogMessage(_("\n-I-> BrowserDB::OnExecSql(%s) - End "),SQLStmt.c_str()); - } - return TRUE; + { + // 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/dbgrid.cpp b/demos/dbbrowse/dbgrid.cpp index 9cbb930891..fedb8b8ee7 100644 --- a/demos/dbbrowse/dbgrid.cpp +++ b/demos/dbbrowse/dbgrid.cpp @@ -31,42 +31,42 @@ #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"); - 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")); + f_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS"); + 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")); } //--------------------------------------------------------------------------- DBGrid::~DBGrid() @@ -75,297 +75,298 @@ DBGrid::~DBGrid() //--------------------------------------------------------------------------- int DBGrid::OnTableView(wxString Table) { - //--------------------------------------------------------------------------- - int i=0,x,y,z, ValidTable=0; - wxString Temp0; - SetLabelFont(* f_Temp); - //--------------------------------------------------------------------------- - 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 - { - if (!wxStrcmp((ct_BrowserDB->pTableInf+x)->tableName,Table)) // is this our Table ? - { // Yes, the Data of this Table shall be put into the Grid - ValidTable = x; // Save the Tablenumber - (db_Br+i_Which)->OnSelect(Table,FALSE); // Select * from "table" - // Set the local Pointer to the Column Information we are going to use - (db_Br+i_Which)->cl_BrowserDB = (ct_BrowserDB->pTableInf+x)->pColInf; - if ((ct_BrowserDB->pTableInf+x)->pColInf) // Valid pointer (!= NULL) ? - { // Pointer is Valid, Column Informationen sind Vorhanden - i = (db_Br+i_Which)->i_Records; // How many Records are there - (db_Br+i_Which)->i_Which = ValidTable; // Still used ???? mj10777 - if (i == 0) // If the Table is empty, then show one empty row - i++; - CreateGrid(i,(ct_BrowserDB->pTableInf+x)->numCols); // Records , Columns - for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++) // Loop through the Fields - { // The Field / Column name is used here as Row Titel - SetColLabelValue(y,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName); - SetColSize(y,95); - } // for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++) - SetColSize(((ct_BrowserDB->pTableInf+x)->numCols-1),120); // Make the last Column Wider - // The Grid has been created, now fill it - for (z=0;z<(db_Br+i_Which)->i_Records;z++) // Loop through the Records - { - Temp0.Printf("%06d",z+1); SetRowLabelValue(z,Temp0); // Set Row Lable Value - (db_Br+i_Which)->OnGetNext((ct_BrowserDB->pTableInf+ValidTable)->numCols,FALSE); - for (y=0;y<(ct_BrowserDB->pTableInf+ValidTable)->numCols;y++) // Loop through the Fields - { // BrowserDB::OnGetNext Formats the field Value into tablename - SetCellValue(z, y,((db_Br+i_Which)->cl_BrowserDB+y)->tableName); - } - if (z % 50 == 0) - { - Temp0.Printf(_("-I-> DBGrid::OnTableView(%s) - Record %6d has been read."),Table.c_str(),z); - pDoc->p_MainFrame->SetStatusText(Temp0, 0); - } - } // for (z=0;z<(db_Br+i_Which)->i_Records;z++) - Temp0.Printf(_("-I-> DBGrid::OnTableView(%s) - %6d Records have been read."),Table.c_str(),z); - pDoc->p_MainFrame->SetStatusText(Temp0, 0); - // The Grid has been filled, now leave - goto Weiter; - } // if ((ct_BrowserDB->pTableInf+x)->pColInf) - else - wxLogMessage(_("\n-E-> DBGrid::OnTableView():: Invalid Column Pointer : Failed")); - } // if ((ct_BrowserDB->pTableInf+x)->tableType == "TABLE") - } // for (x=0;xnumTables;x++) - } // if (ct_BrowserDB) - else - wxLogMessage(_("\n-E-> DBGrid::OnTableView():: Invalid DSN Pointer : Failed")); - //--------------------------------------------------------------------------- + //--------------------------------------------------------------------------- + int i=0,x,y,z, ValidTable=0; + wxString Temp0; + SetLabelFont(* f_Temp); + //--------------------------------------------------------------------------- + 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 + { + if (!wxStrcmp((ct_BrowserDB->pTableInf+x)->tableName,Table)) // is this our Table ? + { // Yes, the Data of this Table shall be put into the Grid + ValidTable = x; // Save the Tablenumber + (db_Br+i_Which)->OnSelect(Table,FALSE); // Select * from "table" + // Set the local Pointer to the Column Information we are going to use + (db_Br+i_Which)->cl_BrowserDB = (ct_BrowserDB->pTableInf+x)->pColInf; + if ((ct_BrowserDB->pTableInf+x)->pColInf) // Valid pointer (!= NULL) ? + { // Pointer is Valid, Column Informationen sind Vorhanden + i = (db_Br+i_Which)->i_Records; // How many Records are there + (db_Br+i_Which)->i_Which = ValidTable; // Still used ???? mj10777 + if (i == 0) // If the Table is empty, then show one empty row + i++; + CreateGrid(i,(ct_BrowserDB->pTableInf+x)->numCols); // Records , Columns + for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++) // Loop through the Fields + { // The Field / Column name is used here as Row Titel + SetColLabelValue(y,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName); + SetColSize(y,95); + } // for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++) + SetColSize(((ct_BrowserDB->pTableInf+x)->numCols-1),120); // Make the last Column Wider + // The Grid has been created, now fill it + for (z=0;z<(db_Br+i_Which)->i_Records;z++) // Loop through the Records + { + Temp0.Printf("%06d",z+1); SetRowLabelValue(z,Temp0); // Set Row Lable Value + (db_Br+i_Which)->OnGetNext((ct_BrowserDB->pTableInf+ValidTable)->numCols,FALSE); + for (y=0;y<(ct_BrowserDB->pTableInf+ValidTable)->numCols;y++) // Loop through the Fields + { // BrowserDB::OnGetNext Formats the field Value into tablename + SetCellValue(z, y,((db_Br+i_Which)->cl_BrowserDB+y)->tableName); + } + if (z % 50 == 0) + { + Temp0.Printf(_("-I-> DBGrid::OnTableView(%s) - Record %6d has been read."),Table.c_str(),z); + pDoc->p_MainFrame->SetStatusText(Temp0, 0); + } + } // for (z=0;z<(db_Br+i_Which)->i_Records;z++) + Temp0.Printf(_("-I-> DBGrid::OnTableView(%s) - %6d Records have been read."),Table.c_str(),z); + pDoc->p_MainFrame->SetStatusText(Temp0, 0); + // The Grid has been filled, now leave + goto Weiter; + } // if ((ct_BrowserDB->pTableInf+x)->pColInf) + else + wxLogMessage(_("\n-E-> DBGrid::OnTableView():: Invalid Column Pointer : Failed")); + } // if ((ct_BrowserDB->pTableInf+x)->tableType == "TABLE") + } // for (x=0;xnumTables;x++) + } // if (ct_BrowserDB) + else + wxLogMessage(_("\n-E-> DBGrid::OnTableView():: Invalid DSN Pointer : Failed")); + //--------------------------------------------------------------------------- Weiter: - SetEditInPlace(b_EditModus); // Activate in-place Editing (FALSE) - //--------------------------------------------------------------------------- - wxLogMessage(_("-I-> DBGrid::OnTableView() - End")); - return 0; + SetEditInPlace(b_EditModus); // Activate in-place Editing (FALSE) + //--------------------------------------------------------------------------- + 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/dbtree.cpp b/demos/dbbrowse/dbtree.cpp index d262e2fae2..8a3e2a4612 100644 --- a/demos/dbbrowse/dbtree.cpp +++ b/demos/dbbrowse/dbtree.cpp @@ -11,19 +11,19 @@ //-- all #ifdefs that the whole Project needs. ------------------------------ //--------------------------------------------------------------------------- #ifdef __GNUG__ - #pragma implementation - #pragma interface +#pragma implementation +#pragma interface #endif //--------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" //--------------------------------------------------------------------------- #ifdef __BORLANDC__ - #pragma hdrstop +#pragma hdrstop #endif //--------------------------------------------------------------------------- #ifndef WX_PRECOMP - #include "wx/wx.h" +#include "wx/wx.h" #endif //--------------------------------------------------------------------------- #ifndef __WXMSW__ @@ -37,341 +37,343 @@ //--------------------------------------------------------------------------- static inline const char *bool2String(bool b) { - return b ? "" : "not "; + 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) + : wxTreeCtrl(parent, id, pos, size, style) { - wxFont* ft_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS"); - SetFont(* ft_Temp); - - // Make an image list containing small icons - p_imageListNormal = new wxImageList(16, 16, TRUE); - - // should correspond to TreeIc_xxx enum + wxFont* ft_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS"); + SetFont(* ft_Temp); + + // Make an image list containing small icons + p_imageListNormal = new wxImageList(16, 16, TRUE); + + // should correspond to TreeIc_xxx enum #if defined(__WXMSW__) - 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)); + 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)); #else - #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/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" #endif - - SetImageList(p_imageListNormal); - ct_BrowserDB = NULL; + + 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; - wxString SQL_TYPE, DB_TYPE; - //---------------------------------------------------------------------------------------------------------------------------- - if((pDoc->db_Br+i_Which)->Initialize(FALSE)) - { - ct_BrowserDB = (pDoc->db_Br+i_Which)->OnGetCatalog(FALSE); - if (ct_BrowserDB) - { // Use the wxDatabase Information - Temp0.Printf("%s - (%s) (%s)", s_DSN.c_str(),ct_BrowserDB->catalog, ct_BrowserDB->schema); - Root = AddRoot(Temp0,TreeIc_DsnOpen,TreeIc_DsnOpen,new DBTreeData("Root")); - for (x=0;xnumTables;x++) - { - if (!wxStrcmp((ct_BrowserDB->pTableInf+x)->tableType,"TABLE")) // only TABLES + wxTreeItemId Root, Folder, Docu, Funkt; + int i,x,y; + wxString SQL_TYPE, DB_TYPE; + //---------------------------------------------------------------------------------------------------------------------------- + if((pDoc->db_Br+i_Which)->Initialize(FALSE)) { - Temp0.Printf(_("Tablename(%s) with (%d)Columns ; Remarks(%s)"), (ct_BrowserDB->pTableInf+x)->tableName, - (ct_BrowserDB->pTableInf+x)->numCols, - (ct_BrowserDB->pTableInf+x)->tableRemarks); - Temp1.Printf("TN(%s",(ct_BrowserDB->pTableInf+x)->tableName); - //---- - (ct_BrowserDB->pTableInf+x)->pColInf = (pDoc->db_Br+i_Which)->OnGetColumns((ct_BrowserDB->pTableInf+x)->tableName,(ct_BrowserDB->pTableInf+x)->numCols,FALSE); - //---- - if ((ct_BrowserDB->pTableInf+x)->pColInf) - { - Temp0.Printf(_("Tablename(%s) with (%d)Columns ; Remarks(%s)"), (ct_BrowserDB->pTableInf+x)->tableName, - (ct_BrowserDB->pTableInf+x)->numCols, - (ct_BrowserDB->pTableInf+x)->tableRemarks); - Folder = AppendItem(Root,Temp0,TreeIc_TAB,TreeIc_TAB, new DBTreeData(Temp1)); - for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++) - { - Temp1.Printf("FN(%s",((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName); - // Here is where we find out if the Column is a Primary / Foreign Key - if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkCol != 0) // Primary Key - { - Docu = AppendItem(Folder,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName,TreeIc_KEY,TreeIc_KEY,new DBTreeData(Temp1)); - Temp2.Printf(_("This Key is used in the following Tables : %s"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkTableName); - Funkt = AppendItem(Docu,Temp2,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData("KEY")); - } + ct_BrowserDB = (pDoc->db_Br+i_Which)->OnGetCatalog(FALSE); + if (ct_BrowserDB) + { // Use the wxDatabase Information + Temp0.Printf("%s - (%s) (%s)", s_DSN.c_str(),ct_BrowserDB->catalog, ct_BrowserDB->schema); + Root = AddRoot(Temp0,TreeIc_DsnOpen,TreeIc_DsnOpen,new DBTreeData("Root")); + for (x=0;xnumTables;x++) + { + if (!wxStrcmp((ct_BrowserDB->pTableInf+x)->tableType,"TABLE")) // only TABLES + { + Temp0.Printf(_("Tablename(%s) with (%d)Columns ; Remarks(%s)"), (ct_BrowserDB->pTableInf+x)->tableName, + (ct_BrowserDB->pTableInf+x)->numCols, + (ct_BrowserDB->pTableInf+x)->tableRemarks); + Temp1.Printf("TN(%s",(ct_BrowserDB->pTableInf+x)->tableName); + //---- + (ct_BrowserDB->pTableInf+x)->pColInf = (pDoc->db_Br+i_Which)->OnGetColumns((ct_BrowserDB->pTableInf+x)->tableName,(ct_BrowserDB->pTableInf+x)->numCols,FALSE); + //---- + if ((ct_BrowserDB->pTableInf+x)->pColInf) + { + Temp0.Printf(_("Tablename(%s) with (%d)Columns ; Remarks(%s)"), (ct_BrowserDB->pTableInf+x)->tableName, + (ct_BrowserDB->pTableInf+x)->numCols, + (ct_BrowserDB->pTableInf+x)->tableRemarks); + Folder = AppendItem(Root,Temp0,TreeIc_TAB,TreeIc_TAB, new DBTreeData(Temp1)); + for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++) + { + Temp1.Printf("FN(%s",((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName); + // Here is where we find out if the Column is a Primary / Foreign Key + if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkCol != 0) // Primary Key + { + Docu = AppendItem(Folder,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName,TreeIc_KEY,TreeIc_KEY,new DBTreeData(Temp1)); + Temp2.Printf(_("This Key is used in the following Tables : %s"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkTableName); + Funkt = AppendItem(Docu,Temp2,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData("KEY")); + } else - if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkCol != 0) // Foreign Key - { - Docu = AppendItem(Folder,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName,TreeIc_KEYF,TreeIc_KEYF,new DBTreeData(Temp1)); - Temp2.Printf(_("This Foreign Key comes from the following Table : %s"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkTableName); - Funkt = AppendItem(Docu,Temp2,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData("KEYF")); - } - else - Docu = AppendItem(Folder,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName,TreeIc_COL,TreeIc_COL,new DBTreeData(Temp1)); - SQL_TYPE.Printf(_("SQL_C_???? (%d)"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->sqlDataType); - DB_TYPE.Printf(_("DB_DATA_TYPE_???? (%d)"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->dbDataType); - for (i=1;i<=(pDoc->db_Br+i_Which)->i_SqlTyp[0];i++) - { - if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->sqlDataType == (pDoc->db_Br+i_Which)->i_SqlTyp[i]) - { - SQL_TYPE.Printf("%s(%d) ; ",(pDoc->db_Br+i_Which)->s_SqlTyp[i].c_str(),(pDoc->db_Br+i_Which)->i_SqlTyp[i]); - } - } // for (i=1;i<=i_SqlTyp[0];i++) - for (i=1;i<=(pDoc->db_Br+i_Which)->i_dbTyp[0];i++) - { - if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->dbDataType == (pDoc->db_Br+i_Which)->i_dbTyp[i]) - { - DB_TYPE.Printf("%s(%d)",(pDoc->db_Br+i_Which)->s_dbTyp[i].c_str(),(pDoc->db_Br+i_Which)->i_dbTyp[i]); - } - } // for (i=1;i<=i_dbTyp[0];i++) - SQL_TYPE += DB_TYPE; - Funkt = AppendItem(Docu,SQL_TYPE,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData(SQL_TYPE)); - SQL_TYPE.Printf("%10s %d,%d",((ct_BrowserDB->pTableInf+x)->pColInf+y)->typeName, - ((ct_BrowserDB->pTableInf+x)->pColInf+y)->columnSize, - ((ct_BrowserDB->pTableInf+x)->pColInf+y)->decimalDigits); - Funkt = AppendItem(Docu,SQL_TYPE,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData(SQL_TYPE)); - } // for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++) - } // if ((ct_BrowserDB->pTableInf+x)->pColInf) - else - Folder = AppendItem(Root,Temp0,TreeIc_FolderClosed,TreeIc_FolderOpen, new DBTreeData(Temp1)); - } // if ((ct_BrowserDB->pTableInf+x)->tableType == "TABLE") - } // for (x=0;xnumTables;x++) - } // if (ct_BrowserDB) + if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkCol != 0) // Foreign Key + { + Docu = AppendItem(Folder,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName,TreeIc_KEYF,TreeIc_KEYF,new DBTreeData(Temp1)); + Temp2.Printf(_("This Foreign Key comes from the following Table : %s"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkTableName); + Funkt = AppendItem(Docu,Temp2,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData("KEYF")); + } + else + Docu = AppendItem(Folder,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName,TreeIc_COL,TreeIc_COL,new DBTreeData(Temp1)); + SQL_TYPE.Printf(_("SQL_C_???? (%d)"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->sqlDataType); + DB_TYPE.Printf(_("DB_DATA_TYPE_???? (%d)"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->dbDataType); + for (i=1;i<=(pDoc->db_Br+i_Which)->i_SqlTyp[0];i++) + { + if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->sqlDataType == (pDoc->db_Br+i_Which)->i_SqlTyp[i]) + { + SQL_TYPE.Printf("%s(%d) ; ",(pDoc->db_Br+i_Which)->s_SqlTyp[i].c_str(),(pDoc->db_Br+i_Which)->i_SqlTyp[i]); + } + } // for (i=1;i<=i_SqlTyp[0];i++) + for (i=1;i<=(pDoc->db_Br+i_Which)->i_dbTyp[0];i++) + { + if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->dbDataType == (pDoc->db_Br+i_Which)->i_dbTyp[i]) + { + DB_TYPE.Printf("%s(%d)",(pDoc->db_Br+i_Which)->s_dbTyp[i].c_str(),(pDoc->db_Br+i_Which)->i_dbTyp[i]); + } + } // for (i=1;i<=i_dbTyp[0];i++) + SQL_TYPE += DB_TYPE; + Funkt = AppendItem(Docu,SQL_TYPE,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData(SQL_TYPE)); + SQL_TYPE.Printf("%10s %d,%d",((ct_BrowserDB->pTableInf+x)->pColInf+y)->typeName, + ((ct_BrowserDB->pTableInf+x)->pColInf+y)->columnSize, + ((ct_BrowserDB->pTableInf+x)->pColInf+y)->decimalDigits); + Funkt = AppendItem(Docu,SQL_TYPE,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData(SQL_TYPE)); + } // for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++) + } // if ((ct_BrowserDB->pTableInf+x)->pColInf) + else + Folder = AppendItem(Root,Temp0,TreeIc_FolderClosed,TreeIc_FolderOpen, new DBTreeData(Temp1)); + } // if ((ct_BrowserDB->pTableInf+x)->tableType == "TABLE") + } // for (x=0;xnumTables;x++) + } // if (ct_BrowserDB) + else + wxLogMessage(_("\n-E-> DBTree::OnPopulate() : Invalid Catalog Pointer : Failed")); + } // if((pDoc->db_Br+i_Which)->Initialize(FALSE)) else - wxLogMessage(_("\n-E-> DBTree::OnPopulate() : Invalid Catalog Pointer : Failed")); - } // if((pDoc->db_Br+i_Which)->Initialize(FALSE)) - else - { - wxLogMessage(_("\n-E-> DBTree::OnPopulate() : A valid Pointer could not be created : Failed")); - } - //---------------------------------------------------------------------------------------------------------------------------- - Expand(Root); - //---------------------------------------------------------------------------------------------------------------------------- - popupMenu1 = NULL; - popupMenu1 = new wxMenu(""); - popupMenu1->Append(DATA_DB, _("Make wxDB.cpp/h ")); - popupMenu1->AppendSeparator(); - popupMenu1->Append(DATA_TABLE_ALL, _("Make all wxTable.cpp/h classes")); - popupMenu2 = NULL; - popupMenu2 = new wxMenu(""); - popupMenu2->Append(DATA_SHOW, _("Show Data")); - popupMenu2->AppendSeparator(); - popupMenu2->Append(DATA_TABLE, _("Make wxTable.cpp/h ")); - //---------------------------------------------------------------------------------------------------------------------------- - return 0; + { + wxLogMessage(_("\n-E-> DBTree::OnPopulate() : A valid Pointer could not be created : Failed")); + } + //---------------------------------------------------------------------------------------------------------------------------- + Expand(Root); + //---------------------------------------------------------------------------------------------------------------------------- + popupMenu1 = NULL; + popupMenu1 = new wxMenu(""); + popupMenu1->Append(DATA_DB, _("Make wxDB.cpp/h ")); + popupMenu1->AppendSeparator(); + popupMenu1->Append(DATA_TABLE_ALL, _("Make all wxTable.cpp/h classes")); + popupMenu2 = NULL; + popupMenu2 = new wxMenu(""); + 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; - Temp0.Empty(); - pDoc->p_MainFrame->SetStatusText(Temp0,0); - // 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 (Temp1.Contains("ODBC-")) - { - Temp1 = Temp1.Mid(5,wxSTRING_MAXLEN); - for (i=0;ii_DSN;i++) - { - if (Temp1 == (pDoc->p_DSN+i)->Dsn) + int i; + Temp0.Empty(); + pDoc->p_MainFrame->SetStatusText(Temp0,0); + // Get the Information that we need + wxTreeItemId itemId = GetSelection(); + DBTreeData *item = (DBTreeData *)GetItemData(itemId); + if ( item != NULL ) { - // pDoc->OnChosenDSN(i); + 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() ); + */ + //--------------------------------------------------- + } } - } - 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/dlguser.cpp b/demos/dbbrowse/dlguser.cpp index d4872af8bd..c3e6dbab17 100644 --- a/demos/dbbrowse/dlguser.cpp +++ b/demos/dbbrowse/dlguser.cpp @@ -10,19 +10,19 @@ //-- all #ifdefs that the whole Project needs. ------------------------------ //--------------------------------------------------------------------------- #ifdef __GNUG__ - #pragma implementation - #pragma interface +#pragma implementation +#pragma interface #endif //--------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" //--------------------------------------------------------------------------- #ifdef __BORLANDC__ - #pragma hdrstop +#pragma hdrstop #endif //--------------------------------------------------------------------------- #ifndef WX_PRECOMP - #include "wx/wx.h" +#include "wx/wx.h" #endif //--------------------------------------------------------------------------- //-- all #includes that every .cpp needs ----19990807.mj10777 --- @@ -30,41 +30,41 @@ #include "dlguser.h" //--------------------------------------------------------------------------- DlgUser::DlgUser(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size, const long WXUNUSED(style) ) : - wxDialog(parent, ID_DIALOG_DSN, title, pos, size, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL) + wxDialog(parent, ID_DIALOG_DSN, title, pos, size, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL) { - SetBackgroundColour("wheat"); - 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(); - but1->SetDefault(); + SetBackgroundColour("wheat"); + 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(); + but1->SetDefault(); } void DlgUser::OnInit() { - wxString Temp; Temp.Printf(_(">>> %s <<< "),s_DSN.c_str()); - (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(); + wxString Temp; Temp.Printf(_(">>> %s <<< "),s_DSN.c_str()); + (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(); } //--------------------------------------------------------------------------- BEGIN_EVENT_TABLE(DlgUser, wxDialog) - EVT_BUTTON(wxID_OK, DlgUser::OnOk) - EVT_BUTTON(wxID_CANCEL, DlgUser::OnCancel) -END_EVENT_TABLE() -//--------------------------------------------------------------------------- -void DlgUser::OnOk(wxCommandEvent& WXUNUSED(event) ) + EVT_BUTTON(wxID_OK, DlgUser::OnOk) + EVT_BUTTON(wxID_CANCEL, DlgUser::OnCancel) + END_EVENT_TABLE() + //--------------------------------------------------------------------------- + void DlgUser::OnOk(wxCommandEvent& WXUNUSED(event) ) { - canceled = FALSE; - s_User = tc_User->GetValue(); - s_Password = tc_Password->GetValue(); - EndModal(wxID_OK); + canceled = FALSE; + s_User = tc_User->GetValue(); + s_Password = tc_Password->GetValue(); + EndModal(wxID_OK); } //--------------------------------------------------------------------------- void DlgUser::OnCancel(wxCommandEvent& WXUNUSED(event) ) { - canceled = TRUE; - EndModal(wxID_CANCEL); + canceled = TRUE; + EndModal(wxID_CANCEL); } //--------------------------------------------------------------------------- diff --git a/demos/dbbrowse/doc.cpp b/demos/dbbrowse/doc.cpp index 806ceaf397..1a34801643 100644 --- a/demos/dbbrowse/doc.cpp +++ b/demos/dbbrowse/doc.cpp @@ -11,19 +11,19 @@ //-- all #ifdefs that the whole Project needs. ------------------------------ //--------------------------------------------------------------------------- #ifdef __GNUG__ - #pragma implementation - #pragma interface +#pragma implementation +#pragma interface #endif //--------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" //--------------------------------------------------------------------------- #ifdef __BORLANDC__ - #pragma hdrstop +#pragma hdrstop #endif //--------------------------------------------------------------------------- #ifndef WX_PRECOMP - #include "wx/wx.h" +#include "wx/wx.h" #endif //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- @@ -33,7 +33,7 @@ //--------------------------------------------------------------------------- //-- Some Global Vars for all Files (extern in ?.h needed) ----------------- // Global structure for holding ODBC connection information - struct DbStuff DbConnectInf; +struct DbStuff DbConnectInf; //--------------------------------------------------------------------------- wxConfigBase *p_ProgramCfg; // All Config and Path information wxLogTextCtrl *p_LogBook; // All Log messages @@ -41,287 +41,287 @@ 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; } //--------------------------------------------------------------------------- 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()) // LogBook is now activ - return FALSE; - p_PgmCtrl->OnPopulate(); - //------------------------------------------------------------------- - return TRUE; + //------------------------------------------------------------------- + if (!OnInitView()) // LogBook is now activ + 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"); - 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"); + 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,(p_DSN+i)->Drv); - 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,(p_DSN+i)->Drv); + 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) - { + // 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,""); + } + //------------------------- p_TabArea->Show(FALSE); // Deactivate the Window - 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; + 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() + //---------------------------------------------------------------------------------------- + // Define a constructor for my p_Splitter + DocSplitterWindow::DocSplitterWindow(wxWindow *parent, wxWindowID id) : wxSplitterWindow(parent, id) { } //---------------------------------------------------------------------------------------- diff --git a/demos/dbbrowse/pgmctrl.cpp b/demos/dbbrowse/pgmctrl.cpp index 2c03f3d3c1..638d483317 100644 --- a/demos/dbbrowse/pgmctrl.cpp +++ b/demos/dbbrowse/pgmctrl.cpp @@ -11,29 +11,29 @@ //-- all #ifdefs that the whole Project needs. ------------------------------ //--------------------------------------------------------------------------- #ifdef __GNUG__ - #pragma implementation - #pragma interface +#pragma implementation +#pragma interface #endif //--------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" //--------------------------------------------------------------------------- #ifdef __BORLANDC__ - #pragma hdrstop +#pragma hdrstop #endif //--------------------------------------------------------------------------- #ifndef WX_PRECOMP - #include "wx/wx.h" +#include "wx/wx.h" #endif //--------------------------------------------------------------------------- #ifndef __WXMSW__ - #include "bitmaps/d_closed.xpm" - #include "bitmaps/d_open.xpm" - #include "bitmaps/f_closed.xpm" - #include "bitmaps/f_open.xpm" - #include "bitmaps/logo.xpm" - #include "bitmaps/dsnclose.xpm" - #include "bitmaps/dsnopen.xpm" +#include "bitmaps/d_closed.xpm" +#include "bitmaps/d_open.xpm" +#include "bitmaps/f_closed.xpm" +#include "bitmaps/f_open.xpm" +#include "bitmaps/logo.xpm" +#include "bitmaps/dsnclose.xpm" +#include "bitmaps/dsnopen.xpm" #endif //--------------------------------------------------------------------------- //-- all #includes that every .cpp needs --- 19990807.mj10777 --- @@ -44,7 +44,7 @@ //--------------------------------------------------------------------------- static inline const char *bool2String(bool b) { - return b ? "" : "not "; + return b ? "" : "not "; } //--------------------------------------------------------------------------- BEGIN_EVENT_TABLE(PgmCtrl, wxTreeCtrl) @@ -52,245 +52,245 @@ BEGIN_EVENT_TABLE(PgmCtrl, wxTreeCtrl) 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) + : wxTreeCtrl(parent, id, pos, size, style) { - wxFont* ft_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS"); - SetFont(* ft_Temp); - - // Make an image list containing small icons - p_imageListNormal = new wxImageList(16, 16, TRUE); - - // should correspond to TreeIc_xxx enum + wxFont* ft_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS"); + SetFont(* ft_Temp); + + // 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(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)); #endif - - SetImageList(p_imageListNormal); - - // Add some items to the tree - // AddTestItemsToTree(3, 2); + + SetImageList(p_imageListNormal); + + // Add some items to the tree + // AddTestItemsToTree(3, 2); } //--------------------------------------------------------------------------- PgmCtrl::~PgmCtrl() { - // wxMessageBox("PgmCtrl::~PgmCtrl() - vor DeleteAllItems"); - // DeleteAllItems(); - // wxMessageBox("nach DeleteAllItems"); - delete p_imageListNormal; + // wxMessageBox("PgmCtrl::~PgmCtrl() - vor DeleteAllItems"); + // DeleteAllItems(); + // wxMessageBox("nach DeleteAllItems"); + 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); - //---------------------------------------------------------------------------------------------------------------------------- - return 0; + 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 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 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 ) { - pDoc->OnChosenDSN(i); - } - } - Treffer++; - } - //----------------------------------------------------------------------------------------- - if (Treffer == 0) - { - //--------------------------------------------------- - Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold," + 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() ); - //--------------------------------------------------- - } - } + 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 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 i; + Temp0.Empty(); + // Get the Information that we need + wxTreeItemId itemId = GetSelection(); + DBTreeData *item = (DBTreeData *)GetItemData(itemId); + SaveDSN.Empty(); + if ( item != NULL ) { - 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)), + 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)), 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(this, "Username and Password", wxPoint(100, 100), wxSize(340, 170)); - //------------------------------------------- - 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(); - //-------------------- - // 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); - 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; - } - p_Dlg.Destroy(); - //-------------------- - goto Weiter; // We have what we want, leave - } - } + // wxMessageBox(SaveDSN); + int i, rc=0; + //------------------------------------------- + DlgUser p_Dlg(this, "Username and Password", wxPoint(100, 100), wxSize(340, 170)); + //------------------------------------------- + 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(); + //-------------------- + // 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); + 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; + } + p_Dlg.Destroy(); + //-------------------- + goto Weiter; // We have what we want, leave + } + } Weiter: - //------------------------------------------- - SaveDSN.Empty(); + //------------------------------------------- + SaveDSN.Empty(); } //--------------------------------------------------------------------------- diff --git a/demos/dbbrowse/tabpgwin.cpp b/demos/dbbrowse/tabpgwin.cpp index 8ee68ecd49..f71d864073 100644 --- a/demos/dbbrowse/tabpgwin.cpp +++ b/demos/dbbrowse/tabpgwin.cpp @@ -43,198 +43,198 @@ // Implementation for class twTabInfo //--------------------------------------------------------------------------- IMPLEMENT_DYNAMIC_CLASS( twTabInfo, wxObject ) -//--------------------------------------------------------------------------- -twTabInfo::twTabInfo() - : mpContent( 0 ) + //--------------------------------------------------------------------------- + twTabInfo::twTabInfo() + : mpContent( 0 ) {} //--------------------------------------------------------------------------- twTabInfo::~twTabInfo() { - // FOR NOW:: nothing + // FOR NOW:: nothing } //--------------------------------------------------------------------------- int twTabInfo::ImgWidth() { - if ( mBitMap.Ok() ) return mBitMap.GetWidth(); + if ( mBitMap.Ok() ) return mBitMap.GetWidth(); else return 0; } //--------------------------------------------------------------------------- int twTabInfo::ImgHeight() { - if ( mBitMap.Ok() ) return mBitMap.GetHeight(); + if ( mBitMap.Ok() ) return mBitMap.GetHeight(); else return 0; } //--------------------------------------------------------------------------- int twTabInfo::ImageToTxtGap( int prefGap ) { - if ( mBitMap.Ok() ) return prefGap; + if ( mBitMap.Ok() ) return prefGap; else return 0; } //--------------------------------------------------------------------------- bool twTabInfo::HasImg() { - return mBitMap.Ok(); + return mBitMap.Ok(); } //--------------------------------------------------------------------------- // bool twTabInfo::HasText(); unsigned int twTabInfo::HasText() { - return mText.Length(); + return mText.Length(); } //--------------------------------------------------------------------------- wxBitmap& twTabInfo::GetImg() { - return mBitMap; + return mBitMap; } //--------------------------------------------------------------------------- wxString& twTabInfo::GetText() { - return mText; + return mText; } //--------------------------------------------------------------------------- wxWindow& twTabInfo::GetContent() { - return *mpContent; + return *mpContent; } //--------------------------------------------------------------------------- // Implementation for class wxTabbedWindow //--------------------------------------------------------------------------- IMPLEMENT_DYNAMIC_CLASS( wxTabbedWindow, wxPanel ) -//--------------------------------------------------------------------------- -BEGIN_EVENT_TABLE( wxTabbedWindow, wxPanel ) - EVT_SIZE ( wxTabbedWindow::OnSize ) - EVT_PAINT( wxTabbedWindow::OnPaint ) - EVT_LEFT_DOWN( wxTabbedWindow::OnLButtonDown ) -// TDB:: filciker reduction -// EVT_ERASE_BACKGROUND( wxTabbedWindow::OnBkErase ) -END_EVENT_TABLE() -//--------------------------------------------------------------------------- -wxTabbedWindow::wxTabbedWindow() - - : mpTabScroll ( NULL ), - mpHorizScroll( NULL ), - mpVertScroll ( NULL ), - - mVertGap ( 0 ), - mHorizGap( 0 ), - - mTitleVertGap ( 3 ), - mTitleHorizGap( 4 ), - mImageTextGap ( 2 ), - mFirstTitleGap( 11 ), - - mBorderOnlyWidth( 8 ), - - mWhitePen( wxColour(255,255,255), 1, wxSOLID ), - mGrayPen ( wxColour(192,192,192), 1, wxSOLID ), - mDarkPen ( wxColour(128,128,128), 1, wxSOLID ), - mBlackPen( wxColour( 0, 0, 0), 1, wxSOLID ), - - // state variables - - mActiveTab ( 0 ), - mTitleHeight( 0 ), - mLayoutType( wxTITLE_IMG_AND_TEXT ) + //--------------------------------------------------------------------------- + BEGIN_EVENT_TABLE( wxTabbedWindow, wxPanel ) + EVT_SIZE ( wxTabbedWindow::OnSize ) + EVT_PAINT( wxTabbedWindow::OnPaint ) + EVT_LEFT_DOWN( wxTabbedWindow::OnLButtonDown ) + // TDB:: filciker reduction + // EVT_ERASE_BACKGROUND( wxTabbedWindow::OnBkErase ) + END_EVENT_TABLE() + //--------------------------------------------------------------------------- + wxTabbedWindow::wxTabbedWindow() + + : mpTabScroll ( NULL ), + mpHorizScroll( NULL ), + mpVertScroll ( NULL ), + + mVertGap ( 0 ), + mHorizGap( 0 ), + + mTitleVertGap ( 3 ), + mTitleHorizGap( 4 ), + mImageTextGap ( 2 ), + mFirstTitleGap( 11 ), + + mBorderOnlyWidth( 8 ), + + mWhitePen( wxColour(255,255,255), 1, wxSOLID ), + mGrayPen ( wxColour(192,192,192), 1, wxSOLID ), + mDarkPen ( wxColour(128,128,128), 1, wxSOLID ), + mBlackPen( wxColour( 0, 0, 0), 1, wxSOLID ), + + // state variables + + mActiveTab ( 0 ), + mTitleHeight( 0 ), + mLayoutType( wxTITLE_IMG_AND_TEXT ) {} //--------------------------------------------------------------------------- wxTabbedWindow::~wxTabbedWindow() { - wxNode* pTab = mTabs.First(); - - while( pTab ) - { - delete ((twTabInfo*)pTab->Data()); - pTab = pTab->Next(); - } + wxNode* pTab = mTabs.First(); + + while( pTab ) + { + delete ((twTabInfo*)pTab->Data()); + pTab = pTab->Next(); + } } //--------------------------------------------------------------------------- void wxTabbedWindow::SizeTabs(int x,int y, int width, int height, bool repant) { - wxNode* pTabNode = mTabs.First(); - int n = 0; - + wxNode* pTabNode = mTabs.First(); + int n = 0; + while( pTabNode ) - { - twTabInfo& info = *((twTabInfo*)pTabNode->Data()); - - if ( n == mActiveTab ) - { - //wxSizeEvent evt; - //info.mpContent->GetEventHandler()->ProcessEvent( evt ); - - info.mpContent->SetSize( x, y, width, height, 0 ); - info.mpContent->Show(TRUE); - info.mpContent->Refresh(); - - } - else - { - info.mpContent->Show(FALSE); - } - - pTabNode = pTabNode->Next(); - ++n; - } + { + twTabInfo& info = *((twTabInfo*)pTabNode->Data()); + + if ( n == mActiveTab ) + { + //wxSizeEvent evt; + //info.mpContent->GetEventHandler()->ProcessEvent( evt ); + + info.mpContent->SetSize( x, y, width, height, 0 ); + info.mpContent->Show(TRUE); + info.mpContent->Refresh(); + + } + else + { + info.mpContent->Show(FALSE); + } + + pTabNode = pTabNode->Next(); + ++n; + } } //--------------------------------------------------------------------------- void wxTabbedWindow::AddTab( wxWindow* pContent, - wxString tabText, - wxString imageFileName, - long imageType ) + wxString tabText, + wxString imageFileName, + long imageType ) { - twTabInfo* pTab = new twTabInfo(); - - pTab->mpContent = pContent; - pTab->mText = tabText; - - if ( wxFileExists( imageFileName ) && - - pTab->mBitMap.LoadFile( imageFileName, imageType ) ) - { - pTab->mImageFile = imageFileName; - pTab->mImageType = imageType; - } - - - if ( pContent->GetParent() == NULL ) - pContent->Create( this, -1 ); - - mTabs.Append( (wxObject*)pTab ); - - RecalcLayout(TRUE); - - OnTabAdded( pTab ); + twTabInfo* pTab = new twTabInfo(); + + pTab->mpContent = pContent; + pTab->mText = tabText; + + if ( wxFileExists( imageFileName ) && + + pTab->mBitMap.LoadFile( imageFileName, imageType ) ) + { + pTab->mImageFile = imageFileName; + pTab->mImageType = imageType; + } + + + if ( pContent->GetParent() == NULL ) + pContent->Create( this, -1 ); + + mTabs.Append( (wxObject*)pTab ); + + RecalcLayout(TRUE); + + OnTabAdded( pTab ); } //--------------------------------------------------------------------------- void wxTabbedWindow::AddTab( wxWindow* pContent, - wxString tabText, wxBitmap* pImage ) + wxString tabText, wxBitmap* pImage ) { - twTabInfo* pTab = new twTabInfo(); - - pTab->mpContent = pContent; - pTab->mText = tabText; - - if ( pImage ) - pTab->mBitMap = *pImage; - - if ( pContent->GetParent() == NULL ) - pContent->Create( this, -1 ); - - mTabs.Append( (wxObject*)pTab ); - RecalcLayout(TRUE); - OnTabAdded( pTab ); + twTabInfo* pTab = new twTabInfo(); + + pTab->mpContent = pContent; + pTab->mText = tabText; + + if ( pImage ) + pTab->mBitMap = *pImage; + + if ( pContent->GetParent() == NULL ) + pContent->Create( this, -1 ); + + mTabs.Append( (wxObject*)pTab ); + RecalcLayout(TRUE); + OnTabAdded( pTab ); } //--------------------------------------------------------------------------- void wxTabbedWindow::RemoveTab( int tabNo ) { - twTabInfo* pTab = ((twTabInfo*)(mTabs.Nth( tabNo )->Data())); - pTab->mpContent->Destroy(); - delete pTab; - mTabs.DeleteNode( mTabs.Nth( tabNo ) ); - // if ( mActiveTab >= mTabs.Number() ); - if ( mActiveTab >= mTabs.Number() ) - mActiveTab = mTabs.Number() - 1; - SetActiveTab( mActiveTab ); + twTabInfo* pTab = ((twTabInfo*)(mTabs.Nth( tabNo )->Data())); + pTab->mpContent->Destroy(); + delete pTab; + mTabs.DeleteNode( mTabs.Nth( tabNo ) ); + // if ( mActiveTab >= mTabs.Number() ); + if ( mActiveTab >= mTabs.Number() ) + mActiveTab = mTabs.Number() - 1; + SetActiveTab( mActiveTab ); } //--------------------------------------------------------------------------- int wxTabbedWindow::GetTabCount() @@ -244,20 +244,20 @@ int wxTabbedWindow::GetTabCount() //--------------------------------------------------------------------------- wxWindow* wxTabbedWindow::GetTab( int tabNo ) { - return ((twTabInfo*)(mTabs.Nth( tabNo )->Data()))->mpContent; + return ((twTabInfo*)(mTabs.Nth( tabNo )->Data()))->mpContent; } //--------------------------------------------------------------------------- wxWindow* wxTabbedWindow::GetActiveTab() { - // FIMXE:: this is lame - return GetTab( mActiveTab ); + // FIMXE:: this is lame + return GetTab( mActiveTab ); } //--------------------------------------------------------------------------- void wxTabbedWindow::SetActiveTab( int tabNo ) { - mActiveTab = tabNo; - RecalcLayout(TRUE); - Refresh(); + mActiveTab = tabNo; + RecalcLayout(TRUE); + Refresh(); } //--------------------------------------------------------------------------- // width of the decorations border (4 shade-lines), should not be changed @@ -265,879 +265,880 @@ void wxTabbedWindow::SetActiveTab( int tabNo ) #define BORDER_SZ 4 //--------------------------------------------------------------------------- void wxTabbedWindow::DrawShadedRect( int x, int y, int width, int height, - wxPen& upperPen, wxPen& lowerPen, wxDC& dc - ) + wxPen& upperPen, wxPen& lowerPen, wxDC& dc + ) { - // darw the lightened upper-left sides of the rectangle - - dc.SetPen( upperPen ); - dc.DrawLine( x,y, x, y + height - 1 ); // vert - dc.DrawLine( x,y, x + width - 1, y ); // horiz - - // draw the unenlightened lower-right sides of the rectangle - - dc.SetPen( lowerPen ); - dc.DrawLine( x + width - 1, y, x + width - 1, y + height - 1 ); // vert - dc.DrawLine( x, y + height - 1, x + width, y + height - 1 ); // horiz + // darw the lightened upper-left sides of the rectangle + + dc.SetPen( upperPen ); + dc.DrawLine( x,y, x, y + height - 1 ); // vert + dc.DrawLine( x,y, x + width - 1, y ); // horiz + + // draw the unenlightened lower-right sides of the rectangle + + dc.SetPen( lowerPen ); + dc.DrawLine( x + width - 1, y, x + width - 1, y + height - 1 ); // vert + dc.DrawLine( x, y + height - 1, x + width, y + height - 1 ); // horiz } //--------------------------------------------------------------------------- void wxTabbedWindow::DrawDecorations( wxDC& dc ) { - // Protability NOTE::: DrawLine(..) draws a line from the first position, - // but not including the point specified by last position. - // This way Windows draws lines, not sure how Motif and Gtk - // prots behave... - - int width, height; + // Protability NOTE::: DrawLine(..) draws a line from the first position, + // but not including the point specified by last position. + // This way Windows draws lines, not sure how Motif and Gtk + // prots behave... + + int width, height; GetClientSize( &width, &height ); - - // check if there's at least a bit of space to draw things - - if ( width < mHorizGap*2 + BORDER_SZ*2+1 || - height < mVertGap*2 + BORDER_SZ*2+1 + mTitleHeight - ) - return; - - // step #1 - draw border around the tab content area - - // setup position for kind of "pencil" - int curX = mHorizGap; - int curY = mVertGap; - - int xSize = width - mHorizGap*2; - int ySize = height - mVertGap *2 - mTitleHeight; - - // layer 1 (upper white) - DrawShadedRect( curX+0, curY+0, xSize-0, ySize-0, - mWhitePen, mBlackPen, dc ); - - // layer 2 (upper gray) - DrawShadedRect( curX+1, curY+1, xSize-2-1, ySize-2-1, - mGrayPen, mGrayPen, dc ); - - // layer 3 (upper darkGray) - DrawShadedRect( curX+2, curY+2, xSize-3-2, ySize-3-2, - mDarkPen, mWhitePen, dc ); - - // layer 4 (upper black) - DrawShadedRect( curX+3, curY+3, xSize-4-3, ySize-4-3, - mBlackPen, mGrayPen, dc ); - - // add non-siemtric layer from the lower-right side (confroming to MFC-look) - - dc.SetPen( mDarkPen ); - dc.DrawLine( curX+1, curY + ySize - 2, curX + xSize - 1, curY + ySize - 2 ); // horiz - dc.DrawLine( curX + xSize - 2, curY + 1, curX + xSize - 2, curY + ySize - 2 ); // vert - - // step #2 - draw tab title bars - - curX = mFirstTitleGap; - curY = height - mVertGap - mTitleHeight; - - int tabNo = 0; - wxNode* pNode = mTabs.First(); - - while( pNode ) - { - // "hard-coded metafile" for decorations - - twTabInfo& tab = *((twTabInfo*)(pNode->Data())); - - xSize = tab.mDims.x; - ySize = mTitleHeight; - - if ( tabNo == mActiveTab ) - { - dc.SetPen( mGrayPen ); - dc.DrawLine( curX+1, curY-2, curX+xSize-2, curY-2 ); - dc.DrawLine( curX+1, curY-1, curX+xSize-2, curY-1 ); - } - - dc.SetPen( mWhitePen ); - + + // check if there's at least a bit of space to draw things + + if ( width < mHorizGap*2 + BORDER_SZ*2+1 || + height < mVertGap*2 + BORDER_SZ*2+1 + mTitleHeight + ) + return; + + // step #1 - draw border around the tab content area + + // setup position for kind of "pencil" + int curX = mHorizGap; + int curY = mVertGap; + + int xSize = width - mHorizGap*2; + int ySize = height - mVertGap *2 - mTitleHeight; + + // layer 1 (upper white) + DrawShadedRect( curX+0, curY+0, xSize-0, ySize-0, + mWhitePen, mBlackPen, dc ); + + // layer 2 (upper gray) + DrawShadedRect( curX+1, curY+1, xSize-2-1, ySize-2-1, + mGrayPen, mGrayPen, dc ); + + // layer 3 (upper darkGray) + DrawShadedRect( curX+2, curY+2, xSize-3-2, ySize-3-2, + mDarkPen, mWhitePen, dc ); + + // layer 4 (upper black) + DrawShadedRect( curX+3, curY+3, xSize-4-3, ySize-4-3, + mBlackPen, mGrayPen, dc ); + + // add non-siemtric layer from the lower-right side (confroming to MFC-look) + + dc.SetPen( mDarkPen ); + dc.DrawLine( curX+1, curY + ySize - 2, curX + xSize - 1, curY + ySize - 2 ); // horiz + dc.DrawLine( curX + xSize - 2, curY + 1, curX + xSize - 2, curY + ySize - 2 ); // vert + + // step #2 - draw tab title bars + + curX = mFirstTitleGap; + curY = height - mVertGap - mTitleHeight; + + int tabNo = 0; + wxNode* pNode = mTabs.First(); + + while( pNode ) + { + // "hard-coded metafile" for decorations + + twTabInfo& tab = *((twTabInfo*)(pNode->Data())); + + xSize = tab.mDims.x; + ySize = mTitleHeight; + + if ( tabNo == mActiveTab ) + { + dc.SetPen( mGrayPen ); + dc.DrawLine( curX+1, curY-2, curX+xSize-2, curY-2 ); + dc.DrawLine( curX+1, curY-1, curX+xSize-2, curY-1 ); + } + + dc.SetPen( mWhitePen ); + if ( tabNo == mActiveTab ) - dc.DrawLine( curX, curY-2, curX, curY+ySize-2 ); + dc.DrawLine( curX, curY-2, curX, curY+ySize-2 ); else - dc.DrawLine( curX, curY, curX, curY+ySize-2 ); - + dc.DrawLine( curX, curY, curX, curY+ySize-2 ); + dc.SetPen( mDarkPen ); dc.DrawLine( curX+1, curY+ySize-3, curX+1, curY+ySize-1 ); // to pix down dc.DrawLine( curX+2, curY+ySize-2, curX+xSize-2, curY+ySize-2 ); dc.DrawLine( curX+xSize-3, curY+ySize-3, curX+xSize-2, curY+ySize-3 ); if ( tabNo == mActiveTab ) - dc.DrawLine( curX+xSize-2, curY+ySize-3, curX+xSize-2, curY-3 ); + dc.DrawLine( curX+xSize-2, curY+ySize-3, curX+xSize-2, curY-3 ); else - dc.DrawLine( curX+xSize-2, curY+ySize-3, curX+xSize-2, curY-1 ); - + dc.DrawLine( curX+xSize-2, curY+ySize-3, curX+xSize-2, curY-1 ); + dc.SetPen( mBlackPen ); dc.DrawLine( curX+xSize-1, curY, curX+xSize-1, curY+ySize-2 ); dc.DrawLine( curX+xSize-2, curY+ySize-2, curX+xSize-3, curY+ySize-2 ); dc.DrawLine( curX+xSize-3, curY+ySize-1, curX+1, curY+ySize-1 ); - + pNode = pNode->Next(); ++tabNo; - + // darw image and (or without) text centered within the // title bar rectangle - + if ( mLayoutType != wxTITLE_BORDER_ONLY && tab.HasImg() ) - { - wxMemoryDC tmpDc; + { + wxMemoryDC tmpDc; tmpDc.SelectObject( tab.GetImg() ); - + dc.Blit( curX + mTitleHorizGap, - curY + ( ySize - tab.ImgHeight() ) / 2, - tab.ImgWidth(), - tab.ImgHeight(), - &tmpDc, 0, 0, wxCOPY - ); - } - + curY + ( ySize - tab.ImgHeight() ) / 2, + tab.ImgWidth(), + tab.ImgHeight(), + &tmpDc, 0, 0, wxCOPY + ); + } + if ( mLayoutType == wxTITLE_IMG_AND_TEXT && tab.HasText() ) - { - long x,w,h; - - // set select default font of the window into it's device context - dc.SetFont( GetLabelingFont() ); - - dc.SetTextBackground( GetBackgroundColour() ); - - dc.GetTextExtent(tab.mText, &w, &h ); - - x = curX + mTitleHorizGap + - tab.ImgWidth() + tab.ImageToTxtGap(mImageTextGap); - - dc.DrawText( tab.GetText(), x, curY + ( ySize - h ) / 2 ); - } + { + long x,w,h; + + // set select default font of the window into it's device context + dc.SetFont( GetLabelingFont() ); + + dc.SetTextBackground( GetBackgroundColour() ); + + dc.GetTextExtent(tab.mText, &w, &h ); + + x = curX + mTitleHorizGap + + tab.ImgWidth() + tab.ImageToTxtGap(mImageTextGap); + + dc.DrawText( tab.GetText(), x, curY + ( ySize - h ) / 2 ); + } curX += xSize; - - } // end of `while (pNode)' + + } // end of `while (pNode)' } //--------------------------------------------------------------------------- int wxTabbedWindow::HitTest( const wxPoint& pos ) { - int width, height; + int width, height; GetClientSize( &width, &height ); - - int curX = mFirstTitleGap; - int curY = height - mVertGap - mTitleHeight; - - int tabNo = 0; - wxNode* pNode = mTabs.First(); - - while( pNode ) - { - twTabInfo& tab = *((twTabInfo*)(pNode->Data())); - - int w,h; - w = tab.mDims.x; - h = tab.mDims.y; - // hit test rectangle of the currnet tab title bar - if ( pos.x >= curX && pos.x < curX + tab.mDims.x && - pos.y >= curY && pos.y < curY + tab.mDims.y - ) - { - return tabNo; - } - - curX += tab.mDims.x; - - pNode = pNode->Next(); - ++tabNo; - } - - return -1; + + int curX = mFirstTitleGap; + int curY = height - mVertGap - mTitleHeight; + + int tabNo = 0; + wxNode* pNode = mTabs.First(); + + while( pNode ) + { + twTabInfo& tab = *((twTabInfo*)(pNode->Data())); + + int w,h; + w = tab.mDims.x; + h = tab.mDims.y; + // hit test rectangle of the currnet tab title bar + if ( pos.x >= curX && pos.x < curX + tab.mDims.x && + pos.y >= curY && pos.y < curY + tab.mDims.y + ) + { + return tabNo; + } + + curX += tab.mDims.x; + + pNode = pNode->Next(); + ++tabNo; + } + + return -1; } //--------------------------------------------------------------------------- void wxTabbedWindow::HideInactiveTabs( bool andRepaint ) { - if ( !andRepaint ) - return; - - wxNode* pNode = mTabs.First(); - int tabNo = 0; - - while( pNode ) - { - if ( tabNo != mActiveTab ) + if ( !andRepaint ) + return; + + wxNode* pNode = mTabs.First(); + int tabNo = 0; + + while( pNode ) + { + if ( tabNo != mActiveTab ) { - twTabInfo& tab = *((twTabInfo*)(pNode->Data())); - tab.mpContent->Show(FALSE); + twTabInfo& tab = *((twTabInfo*)(pNode->Data())); + tab.mpContent->Show(FALSE); } - - pNode = pNode->Next(); - ++tabNo; - } + + pNode = pNode->Next(); + ++tabNo; + } } //--------------------------------------------------------------------------- wxFont wxTabbedWindow::GetLabelingFont() { - wxFont font; + wxFont font; #ifdef __WINDOWS__ - font.SetFaceName("MS Sans Serif"); + font.SetFaceName("MS Sans Serif"); #else - font.SetFamily( wxSWISS ); + font.SetFamily( wxSWISS ); #endif - - font.SetStyle(40); - font.SetWeight(40); - font.SetPointSize( 8 ); - + + font.SetStyle(40); + font.SetWeight(40); + font.SetPointSize( 8 ); + #ifdef __WINDOWS__ - font.RealizeResource(); + font.RealizeResource(); #endif - - return font; + + return font; } //--------------------------------------------------------------------------- void wxTabbedWindow::RecalcLayout(bool andRepaint) { - HideInactiveTabs(andRepaint); - - // resetup position of the active tab - - int width, height; + HideInactiveTabs(andRepaint); + + // resetup position of the active tab + + int width, height; GetClientSize( &width, &height ); - - int curX = mHorizGap + BORDER_SZ; - int curY = mVertGap + BORDER_SZ; - - int xSize = width - mHorizGap*2 - BORDER_SZ*2-1; - int ySize = height - mVertGap*2 - BORDER_SZ*2-1 - mTitleHeight; - - SizeTabs( curX, curY, xSize, ySize, andRepaint ); - - // pass #1 - try to layout assuming it's wxTITLE_IMG_AND_TEXT - - mLayoutType = wxTITLE_IMG_AND_TEXT; - - wxNode* pNode = mTabs.First(); - - curX = mFirstTitleGap; // the left-side gap - mTitleHeight = 0; - - while( pNode ) - { - twTabInfo& tab = *((twTabInfo*)(pNode->Data())); - - wxWindowDC dc(this); - - long w,h; - - // set select default font of the window into it's device context + + int curX = mHorizGap + BORDER_SZ; + int curY = mVertGap + BORDER_SZ; + + int xSize = width - mHorizGap*2 - BORDER_SZ*2-1; + int ySize = height - mVertGap*2 - BORDER_SZ*2-1 - mTitleHeight; + + SizeTabs( curX, curY, xSize, ySize, andRepaint ); + + // pass #1 - try to layout assuming it's wxTITLE_IMG_AND_TEXT + + mLayoutType = wxTITLE_IMG_AND_TEXT; + + wxNode* pNode = mTabs.First(); + + curX = mFirstTitleGap; // the left-side gap + mTitleHeight = 0; + + while( pNode ) + { + twTabInfo& tab = *((twTabInfo*)(pNode->Data())); + + wxWindowDC dc(this); + + long w,h; + + // set select default font of the window into it's device context dc.SetFont( GetLabelingFont() ); - + dc.GetTextExtent(tab.mText, &w, &h ); - + tab.mDims.x = w + tab.ImageToTxtGap(mImageTextGap) + - tab.ImgWidth() + mTitleHorizGap*2; - + tab.ImgWidth() + mTitleHorizGap*2; + tab.mDims.y = wxMax( h, tab.ImgHeight() ) + mTitleVertGap*2; mTitleHeight = wxMax( mTitleHeight, tab.mDims.y ); - - curX += tab.mDims.x; - - pNode = pNode->Next(); - } - - curX += mHorizGap; // the right-side gap - - // make all title bars of equel height - - pNode = mTabs.First(); - - while( pNode ) - { - ((twTabInfo*)(pNode->Data()))->mDims.y = mTitleHeight;; - pNode = pNode->Next(); - } - - // if curX has'nt ran out of bounds, leave TITLE_IMG layout and return - if ( curX < width - mHorizGap ) - return; - - // pass #2 - try to layout assuming wxTITLE_IMG_ONLY - - mLayoutType = wxTITLE_IMG_ONLY; - - pNode = mTabs.First(); - - curX = mFirstTitleGap; // the left-side gap - - int denomiator = mTabs.Number(); - if ( denomiator == 0 ) ++denomiator; - - mBorderOnlyWidth = (width - mFirstTitleGap - mHorizGap) / denomiator; - - while( pNode ) - { - twTabInfo& tab = *((twTabInfo*)(pNode->Data())); - - if ( tab.HasImg() ) - { - tab.mDims.x = tab.ImgWidth() + mTitleHorizGap*2; - tab.mDims.y = tab.ImgHeight() + mTitleVertGap*2; - } - else - { - tab.mDims.x = mBorderOnlyWidth; - tab.mDims.y = mTitleHeight; - } - + curX += tab.mDims.x; - + pNode = pNode->Next(); - } - - curX += mHorizGap; // the right-side gap - + } + + curX += mHorizGap; // the right-side gap + + // make all title bars of equel height + + pNode = mTabs.First(); + + while( pNode ) + { + ((twTabInfo*)(pNode->Data()))->mDims.y = mTitleHeight;; + pNode = pNode->Next(); + } + + // if curX has'nt ran out of bounds, leave TITLE_IMG layout and return + if ( curX < width - mHorizGap ) + return; + + // pass #2 - try to layout assuming wxTITLE_IMG_ONLY + + mLayoutType = wxTITLE_IMG_ONLY; + + pNode = mTabs.First(); + + curX = mFirstTitleGap; // the left-side gap + + int denomiator = mTabs.Number(); + if ( denomiator == 0 ) ++denomiator; + + mBorderOnlyWidth = (width - mFirstTitleGap - mHorizGap) / denomiator; + + while( pNode ) + { + twTabInfo& tab = *((twTabInfo*)(pNode->Data())); + + if ( tab.HasImg() ) + { + tab.mDims.x = tab.ImgWidth() + mTitleHorizGap*2; + tab.mDims.y = tab.ImgHeight() + mTitleVertGap*2; + } + else + { + tab.mDims.x = mBorderOnlyWidth; + tab.mDims.y = mTitleHeight; + } + + curX += tab.mDims.x; + + pNode = pNode->Next(); + } + + curX += mHorizGap; // the right-side gap + // if curX has'nt ran out of bounds, leave IMG_ONLY layout and return - if ( curX < width - mHorizGap ) - return; - - // pass #3 - set the narrowest layout wxTITLE_BORDER_ONLY - - mLayoutType = wxTITLE_BORDER_ONLY; - - pNode = mTabs.First(); - - while( pNode ) - { - twTabInfo& tab = *((twTabInfo*)(pNode->Data())); - - tab.mDims.x = mBorderOnlyWidth; - tab.mDims.y = mTitleHeight; - - pNode = pNode->Next(); - } + if ( curX < width - mHorizGap ) + return; + + // pass #3 - set the narrowest layout wxTITLE_BORDER_ONLY + + mLayoutType = wxTITLE_BORDER_ONLY; + + pNode = mTabs.First(); + + while( pNode ) + { + twTabInfo& tab = *((twTabInfo*)(pNode->Data())); + + tab.mDims.x = mBorderOnlyWidth; + tab.mDims.y = mTitleHeight; + + pNode = pNode->Next(); + } } //--------------------------------------------------------------------------- // wx event handlers //--------------------------------------------------------------------------- void wxTabbedWindow::OnPaint( wxPaintEvent& event ) { - wxPaintDC dc(this); - DrawDecorations( dc ); + wxPaintDC dc(this); + DrawDecorations( dc ); } //--------------------------------------------------------------------------- void wxTabbedWindow::OnSize ( wxSizeEvent& event ) { - SetBackgroundColour( wxColour( 192,192,192 ) ); - RecalcLayout(TRUE); + SetBackgroundColour( wxColour( 192,192,192 ) ); + RecalcLayout(TRUE); } //--------------------------------------------------------------------------- void wxTabbedWindow::OnBkErase( wxEraseEvent& event ) { - // do nothing + // do nothing } //--------------------------------------------------------------------------- void wxTabbedWindow::OnLButtonDown( wxMouseEvent& event ) { - // floats, why? - int x = (int)event.m_x; - int y = (int)event.m_y; - - int tabNo = HitTest( wxPoint(x,y) ); - - if ( tabNo != -1 ) - { - SetActiveTab( tabNo ); - } + // floats, why? + int x = (int)event.m_x; + int y = (int)event.m_y; + + int tabNo = HitTest( wxPoint(x,y) ); + + if ( tabNo != -1 ) + { + SetActiveTab( tabNo ); + } } //--------------------------------------------------------------------------- // Implementation for class wxPaggedWindow //--------------------------------------------------------------------------- IMPLEMENT_DYNAMIC_CLASS( wxPaggedWindow, wxTabbedWindow ) -//--------------------------------------------------------------------------- -BEGIN_EVENT_TABLE( wxPaggedWindow, wxTabbedWindow ) - EVT_SIZE ( wxPaggedWindow::OnSize ) - EVT_PAINT ( wxPaggedWindow::OnPaint ) - EVT_LEFT_DOWN( wxPaggedWindow::OnLButtonDown ) - EVT_LEFT_UP ( wxPaggedWindow::OnLButtonUp ) - EVT_MOTION ( wxPaggedWindow::OnMouseMove ) - EVT_SCROLL ( wxPaggedWindow::OnScroll ) -END_EVENT_TABLE() -//--------------------------------------------------------------------------- -// border for pagged-window is 2 shaded-lines -//--------------------------------------------------------------------------- + //--------------------------------------------------------------------------- + BEGIN_EVENT_TABLE( wxPaggedWindow, wxTabbedWindow ) + EVT_SIZE ( wxPaggedWindow::OnSize ) + EVT_PAINT ( wxPaggedWindow::OnPaint ) + EVT_LEFT_DOWN( wxPaggedWindow::OnLButtonDown ) + EVT_LEFT_UP ( wxPaggedWindow::OnLButtonUp ) + EVT_MOTION ( wxPaggedWindow::OnMouseMove ) + EVT_SCROLL ( wxPaggedWindow::OnScroll ) + END_EVENT_TABLE() + //--------------------------------------------------------------------------- + // border for pagged-window is 2 shaded-lines + //--------------------------------------------------------------------------- #undef BORDER_SZ #define BORDER_SZ 2 -//--------------------------------------------------------------------------- -wxPaggedWindow::wxPaggedWindow() - + //--------------------------------------------------------------------------- + wxPaggedWindow::wxPaggedWindow() + : mScrollEventInProgress( FALSE ), - - mTabTrianGap(4), - - mWhiteBrush( wxColour(255,255,255), wxSOLID ), - mGrayBrush ( wxColour(192,192,192), wxSOLID ), - - mCurentRowOfs( 0 ), - mAdjustableTitleRowLen( 300 ), - - mIsDragged ( FALSE ), - mDagOrigin ( 0 ), - mCursorChanged( FALSE ), - mResizeCursor ( wxCURSOR_SIZEWE ), - mNormalCursor ( wxCURSOR_ARROW ) + + mTabTrianGap(4), + + mWhiteBrush( wxColour(255,255,255), wxSOLID ), + mGrayBrush ( wxColour(192,192,192), wxSOLID ), + + mCurentRowOfs( 0 ), + mAdjustableTitleRowLen( 300 ), + + mIsDragged ( FALSE ), + mDagOrigin ( 0 ), + mCursorChanged( FALSE ), + mResizeCursor ( wxCURSOR_SIZEWE ), + mNormalCursor ( wxCURSOR_ARROW ) { - mTitleVertGap = 2; - mTitleHorizGap = 10; + mTitleVertGap = 2; + mTitleHorizGap = 10; mNoVertScroll = TRUE; // Horizontale Scroll abschalten } //--------------------------------------------------------------------------- wxPaggedWindow::~wxPaggedWindow() { - // nothing (base class handles destruction) + // nothing (base class handles destruction) } //--------------------------------------------------------------------------- wxFont wxPaggedWindow::GetLabelingFont() { - wxFont font; - + wxFont font; + #ifdef __WINDOWS__ - font.SetFaceName("Comic Sans MS"); + font.SetFaceName("Comic Sans MS"); #else - font.SetFamily( wxSWISS ); + font.SetFamily( wxSWISS ); #endif - + font.SetStyle(40); font.SetWeight(40); font.SetPointSize( 8 ); - + return font; } //--------------------------------------------------------------------------- void wxPaggedWindow::OnTabAdded( twTabInfo* pInfo ) { - int units = GetWholeTabRowLen() / 20; + int units = GetWholeTabRowLen() / 20; - mpTabScroll->SetScrollbar( 0, 1, units, 1, FALSE ); + mpTabScroll->SetScrollbar( 0, 1, units, 1, FALSE ); } //--------------------------------------------------------------------------- wxScrollBar& wxPaggedWindow::GetVerticalScrollBar() { - return *mpVertScroll; + return *mpVertScroll; } //--------------------------------------------------------------------------- wxScrollBar& wxPaggedWindow::GetHorizontalScrollBar() { - return *mpHorizScroll; + return *mpHorizScroll; } //--------------------------------------------------------------------------- int wxPaggedWindow::GetWholeTabRowLen() { - wxNode* pNode = mTabs.First(); - - int len = 0; - - while( pNode ) - { - twTabInfo& tab = *((twTabInfo*)(pNode->Data())); - - len += tab.mDims.x; - pNode = pNode->Next(); - } - - return len; + wxNode* pNode = mTabs.First(); + + int len = 0; + + while( pNode ) + { + twTabInfo& tab = *((twTabInfo*)(pNode->Data())); + + len += tab.mDims.x; + pNode = pNode->Next(); + } + + return len; } //--------------------------------------------------------------------------- void wxPaggedWindow::DrawPaperBar( twTabInfo& tab, int x, int y, - wxBrush& brush, wxPen& pen, wxDC& dc ) + wxBrush& brush, wxPen& pen, wxDC& dc ) { - wxPoint poly[4]; - - // draw organizer-style paper outlet - - poly[0].x = x - mTabTrianGap; - poly[0].y = y; - - poly[1].x = x + mTabTrianGap; - poly[1].y = y + tab.mDims.y-1; - - poly[2].x = x + tab.mDims.x - mTabTrianGap; - poly[2].y = y + tab.mDims.y-1; - - poly[3].x = x + tab.mDims.x + mTabTrianGap; - poly[3].y = y; - - dc.SetPen( pen ); - dc.SetBrush( brush ); - - dc.DrawPolygon( 4, poly ); - - long w,h; - - // set select default font of the window into it's device context - dc.SetFont( GetLabelingFont() ); - - dc.SetTextBackground( brush.GetColour() ); - - dc.GetTextExtent(tab.mText, &w, &h ); - - if ( tab.HasImg() ) - { - wxMemoryDC tmpDc; + wxPoint poly[4]; + + // draw organizer-style paper outlet + + poly[0].x = x - mTabTrianGap; + poly[0].y = y; + + poly[1].x = x + mTabTrianGap; + poly[1].y = y + tab.mDims.y-1; + + poly[2].x = x + tab.mDims.x - mTabTrianGap; + poly[2].y = y + tab.mDims.y-1; + + poly[3].x = x + tab.mDims.x + mTabTrianGap; + poly[3].y = y; + + dc.SetPen( pen ); + dc.SetBrush( brush ); + + dc.DrawPolygon( 4, poly ); + + long w,h; + + // set select default font of the window into it's device context + dc.SetFont( GetLabelingFont() ); + + dc.SetTextBackground( brush.GetColour() ); + + dc.GetTextExtent(tab.mText, &w, &h ); + + if ( tab.HasImg() ) + { + wxMemoryDC tmpDc; tmpDc.SelectObject( tab.GetImg() ); - + dc.Blit( x + mTitleHorizGap, - y + ( tab.mDims.y - tab.ImgHeight() ) / 2, - tab.ImgWidth(), - tab.ImgHeight(), - &tmpDc, 0, 0, wxCOPY - ); - } - - if ( tab.HasText() ) - { - int tx = x + mTitleHorizGap + - tab.ImgWidth() + tab.ImageToTxtGap(mImageTextGap); - - dc.DrawText( tab.GetText(), tx, y + ( tab.mDims.y - h ) / 2 ); - } + y + ( tab.mDims.y - tab.ImgHeight() ) / 2, + tab.ImgWidth(), + tab.ImgHeight(), + &tmpDc, 0, 0, wxCOPY + ); + } + + if ( tab.HasText() ) + { + int tx = x + mTitleHorizGap + + tab.ImgWidth() + tab.ImageToTxtGap(mImageTextGap); + + dc.DrawText( tab.GetText(), tx, y + ( tab.mDims.y - h ) / 2 ); + } } //--------------------------------------------------------------------------- void wxPaggedWindow::DrawDecorations( wxDC& dc ) { - // FIXME:: the is big body have to be split! - - int width, height; + // FIXME:: the is big body have to be split! + + int width, height; GetClientSize( &width, &height ); - int curX = mHorizGap; - int curY = mVertGap; - - int xSize = width - mHorizGap*2; - int ySize = height - mVertGap*2; - - DrawShadedRect( curX, curY, xSize, ySize, - mDarkPen, mWhitePen, dc ); - - DrawShadedRect( curX+1, curY+1, xSize-2, ySize-2, - mBlackPen, mGrayPen, dc ); - - // draw inactive tab title bars frist (left-to-right) - - wxNode* pNode = mTabs.First(); - int tabNo = 0; - - /* OLD STUFF:: - curX = mTitleRowStart; - curY = height - mVertGap - BORDER_SZ - mTitleHeight; - */ - - curX = mTabTrianGap; - curY = 0; - - // FOR NOW:: avoid creating bitmap with invalid dimensions - - if ( mTitleRowLen < 1 || mTitleHeight < 1 ) return; - - wxMemoryDC tmpDc; - wxBitmap tmpBmp( mTitleRowLen, mTitleHeight ); - - tmpDc.SelectObject( tmpBmp ); - tmpDc.SetPen( mGrayPen ); - tmpDc.SetBrush( mGrayBrush ); - tmpDc.DrawRectangle( 0,0, mTitleRowLen, mTitleHeight ); - - tmpDc.SetDeviceOrigin( mCurentRowOfs, 0 ); - - while( pNode ) - { - twTabInfo& tab = *((twTabInfo*)(pNode->Data())); - - if ( tabNo != mActiveTab ) - - DrawPaperBar( tab, curX, curY, mGrayBrush, mBlackPen, tmpDc ); - - curX += tab.mDims.x; - - pNode = pNode->Next(); - ++tabNo; - } - - // finally, draw the active tab (white-filled) - - pNode = mTabs.First(); - tabNo = 0; - - curX = mTabTrianGap; - - while( pNode ) - { - twTabInfo& tab = *((twTabInfo*)(pNode->Data())); - - if ( tabNo == mActiveTab ) - { - DrawPaperBar( tab, curX, curY, mWhiteBrush, mBlackPen, tmpDc ); - - tmpDc.SetPen( mWhitePen ); - - tmpDc.DrawLine( curX - mTabTrianGap+1, curY, - curX + tab.mDims.x + mTabTrianGap, curY ); - break; - } - curX += tab.mDims.x; - - pNode = pNode->Next(); - ++tabNo; - } - - // back to initial device origin - - tmpDc.SetDeviceOrigin( 0, 0 ); - - // draw resize-hint-stick - - curX = mTitleRowLen - 6; - - DrawShadedRect( curX+0, 0+0, 6, mTitleHeight, mGrayPen, mBlackPen, tmpDc ); - DrawShadedRect( curX+1, 0+1, 6-2, mTitleHeight-2, mWhitePen, mDarkPen, tmpDc ); - DrawShadedRect( curX+2, 0+2, 6-4, mTitleHeight-4, mGrayPen, mGrayPen, tmpDc ); - - - - dc.Blit( mTitleRowStart, - height - mVertGap - BORDER_SZ - mTitleHeight, - mTitleRowLen, mTitleHeight, - &tmpDc, 0,0, wxCOPY ); + int curX = mHorizGap; + int curY = mVertGap; + + int xSize = width - mHorizGap*2; + int ySize = height - mVertGap*2; + + DrawShadedRect( curX, curY, xSize, ySize, + mDarkPen, mWhitePen, dc ); + + DrawShadedRect( curX+1, curY+1, xSize-2, ySize-2, + mBlackPen, mGrayPen, dc ); + + // draw inactive tab title bars frist (left-to-right) + + wxNode* pNode = mTabs.First(); + int tabNo = 0; + + /* OLD STUFF:: + curX = mTitleRowStart; + curY = height - mVertGap - BORDER_SZ - mTitleHeight; + */ + + curX = mTabTrianGap; + curY = 0; + + // FOR NOW:: avoid creating bitmap with invalid dimensions + + if ( mTitleRowLen < 1 || mTitleHeight < 1 ) return; + + wxMemoryDC tmpDc; + wxBitmap tmpBmp( mTitleRowLen, mTitleHeight ); + + tmpDc.SelectObject( tmpBmp ); + tmpDc.SetPen( mGrayPen ); + tmpDc.SetBrush( mGrayBrush ); + tmpDc.DrawRectangle( 0,0, mTitleRowLen, mTitleHeight ); + + tmpDc.SetDeviceOrigin( mCurentRowOfs, 0 ); + + while( pNode ) + { + twTabInfo& tab = *((twTabInfo*)(pNode->Data())); + + if ( tabNo != mActiveTab ) + + DrawPaperBar( tab, curX, curY, mGrayBrush, mBlackPen, tmpDc ); + + curX += tab.mDims.x; + + pNode = pNode->Next(); + ++tabNo; + } + + // finally, draw the active tab (white-filled) + + pNode = mTabs.First(); + tabNo = 0; + + curX = mTabTrianGap; + + while( pNode ) + { + twTabInfo& tab = *((twTabInfo*)(pNode->Data())); + + if ( tabNo == mActiveTab ) + { + DrawPaperBar( tab, curX, curY, mWhiteBrush, mBlackPen, tmpDc ); + + tmpDc.SetPen( mWhitePen ); + + tmpDc.DrawLine( curX - mTabTrianGap+1, curY, + curX + tab.mDims.x + mTabTrianGap, curY ); + break; + } + curX += tab.mDims.x; + + pNode = pNode->Next(); + ++tabNo; + } + + // back to initial device origin + + tmpDc.SetDeviceOrigin( 0, 0 ); + + // draw resize-hint-stick + + curX = mTitleRowLen - 6; + + DrawShadedRect( curX+0, 0+0, 6, mTitleHeight, mGrayPen, mBlackPen, tmpDc ); + DrawShadedRect( curX+1, 0+1, 6-2, mTitleHeight-2, mWhitePen, mDarkPen, tmpDc ); + DrawShadedRect( curX+2, 0+2, 6-4, mTitleHeight-4, mGrayPen, mGrayPen, tmpDc ); + + + + dc.Blit( mTitleRowStart, + height - mVertGap - BORDER_SZ - mTitleHeight, + mTitleRowLen, mTitleHeight, + &tmpDc, 0,0, wxCOPY ); } //--------------------------------------------------------------------------- int wxPaggedWindow::HitTest( const wxPoint& pos ) { - return wxTabbedWindow::HitTest( pos ); + return wxTabbedWindow::HitTest( pos ); } //--------------------------------------------------------------------------- void wxPaggedWindow::RecalcLayout(bool andRepaint) { - mTitleRowLen = mAdjustableTitleRowLen; - - if ( int(mpTabScroll) == -1 ) return; - - // scroll bars should be created after Create() for this window is called - if ( !mpTabScroll ) - { - mpTabScroll = - new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_HORIZONTAL ); - - mpHorizScroll = - new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_HORIZONTAL ); + mTitleRowLen = mAdjustableTitleRowLen; + + if ( int(mpTabScroll) == -1 ) return; + + // scroll bars should be created after Create() for this window is called + if ( !mpTabScroll ) + { + mpTabScroll = + new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_HORIZONTAL ); + + mpHorizScroll = + new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_HORIZONTAL ); + if (!mNoVertScroll) // Vertical Scroll (Original) + mpVertScroll = new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_VERTICAL ); + } + + { + int units = GetWholeTabRowLen() / 20; + + mpTabScroll->SetScrollbar( 0, 1, units, 1, FALSE ); + } + + // resetup position of the active tab + + int thumbLen = 16; // FOR NOW:: hardcoded + + int width, height; + GetClientSize( &width, &height ); + + mTitleHeight = thumbLen; + + int curX = mHorizGap + BORDER_SZ; + int curY = mVertGap + BORDER_SZ; + + int xSize; if (!mNoVertScroll) // Vertical Scroll (Original) - mpVertScroll = new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_VERTICAL ); - } - - { - int units = GetWholeTabRowLen() / 20; - - mpTabScroll->SetScrollbar( 0, 1, units, 1, FALSE ); - } - - // resetup position of the active tab - - int thumbLen = 16; // FOR NOW:: hardcoded - - int width, height; - GetClientSize( &width, &height ); - - mTitleHeight = thumbLen; - - int curX = mHorizGap + BORDER_SZ; - int curY = mVertGap + BORDER_SZ; - - int xSize; - if (!mNoVertScroll) // Vertical Scroll (Original) - xSize = width - mHorizGap*2 - BORDER_SZ*2 - thumbLen; - else - xSize = width - mHorizGap*2 - BORDER_SZ*2; - - int ySize = height - mVertGap*2 - BORDER_SZ*2 - mTitleHeight; - - SizeTabs( curX, curY, xSize, ySize, andRepaint ); - - // setup title bar LINES's horizontal scroll bar - - curY = height - mVertGap - BORDER_SZ - thumbLen; - - mpTabScroll->SetSize( curX, curY, thumbLen*2, thumbLen ); - - // setup view's HORIZONTAL scroll bar - curX += thumbLen*2; - - mTitleRowStart = curX; - mFirstTitleGap = curX + mCurentRowOfs + mTabTrianGap; - - mTitleRowLen = wxMin( mAdjustableTitleRowLen, + xSize = width - mHorizGap*2 - BORDER_SZ*2 - thumbLen; + else + xSize = width - mHorizGap*2 - BORDER_SZ*2; + + int ySize = height - mVertGap*2 - BORDER_SZ*2 - mTitleHeight; + + SizeTabs( curX, curY, xSize, ySize, andRepaint ); + + // setup title bar LINES's horizontal scroll bar + + curY = height - mVertGap - BORDER_SZ - thumbLen; + + mpTabScroll->SetSize( curX, curY, thumbLen*2, thumbLen ); + + // setup view's HORIZONTAL scroll bar + curX += thumbLen*2; + + mTitleRowStart = curX; + mFirstTitleGap = curX + mCurentRowOfs + mTabTrianGap; + + mTitleRowLen = wxMin( mAdjustableTitleRowLen, width - mHorizGap - BORDER_SZ - thumbLen*4 - curX ); - - curX += mTitleRowLen; - - if (!mNoVertScroll) // Vertical Scroll (Original) - mpHorizScroll->SetSize( curX, curY,width - curX - mHorizGap - BORDER_SZ - thumbLen, thumbLen ); - else - mpHorizScroll->SetSize( curX, curY,width - curX - mHorizGap - BORDER_SZ-4, thumbLen ); - - // setup view's VERTICAL scroll bar - if (!mNoVertScroll) // Vertical Scroll (Original) - { - curX = width - mHorizGap - BORDER_SZ - thumbLen; - curY = mVertGap + BORDER_SZ; - mpVertScroll->SetSize( curX, curY, thumbLen,height - curY - mVertGap - BORDER_SZ - thumbLen); - } - // layout tab title bars - - mLayoutType = wxTITLE_IMG_AND_TEXT; - - wxNode* pNode = mTabs.First(); - - while( pNode ) - { - twTabInfo& tab = *((twTabInfo*)(pNode->Data())); - - wxWindowDC dc(this); - - long w,h; - - // set select default font of the window into it's device context - dc.SetFont( GetLabelingFont() ); - dc.GetTextExtent(tab.mText, &w, &h ); - - tab.mDims.x = w + tab.ImageToTxtGap(mImageTextGap) + - tab.ImgWidth() + mTitleHorizGap*2; - - tab.mDims.y = mTitleHeight; - - pNode = pNode->Next(); - } - - // disable title-bar scroller if there's nowhere to scroll to - - mpTabScroll->Enable( mTitleRowLen < GetWholeTabRowLen() || mCurentRowOfs < 0 ); + + curX += mTitleRowLen; + + if (!mNoVertScroll) // Vertical Scroll (Original) + mpHorizScroll->SetSize( curX, curY,width - curX - mHorizGap - BORDER_SZ - thumbLen, thumbLen ); + else + mpHorizScroll->SetSize( curX, curY,width - curX - mHorizGap - BORDER_SZ-4, thumbLen ); + + // setup view's VERTICAL scroll bar + if (!mNoVertScroll) // Vertical Scroll (Original) + { + curX = width - mHorizGap - BORDER_SZ - thumbLen; + curY = mVertGap + BORDER_SZ; + mpVertScroll->SetSize( curX, curY, thumbLen,height - curY - mVertGap - BORDER_SZ - thumbLen); + } + // layout tab title bars + + mLayoutType = wxTITLE_IMG_AND_TEXT; + + wxNode* pNode = mTabs.First(); + + while( pNode ) + { + twTabInfo& tab = *((twTabInfo*)(pNode->Data())); + + wxWindowDC dc(this); + + long w,h; + + // set select default font of the window into it's device context + dc.SetFont( GetLabelingFont() ); + dc.GetTextExtent(tab.mText, &w, &h ); + + tab.mDims.x = w + tab.ImageToTxtGap(mImageTextGap) + + tab.ImgWidth() + mTitleHorizGap*2; + + tab.mDims.y = mTitleHeight; + + pNode = pNode->Next(); + } + + // disable title-bar scroller if there's nowhere to scroll to + + mpTabScroll->Enable( mTitleRowLen < GetWholeTabRowLen() || mCurentRowOfs < 0 ); } //--------------------------------------------------------------------------- // event handlers //--------------------------------------------------------------------------- void wxPaggedWindow::OnPaint( wxPaintEvent& event ) { - wxPaintDC dc(this); - DrawDecorations( dc ); + wxPaintDC dc(this); + DrawDecorations( dc ); } //--------------------------------------------------------------------------- void wxPaggedWindow::OnSize ( wxSizeEvent& event ) { - wxTabbedWindow::OnSize(event); + wxTabbedWindow::OnSize(event); } //--------------------------------------------------------------------------- void wxPaggedWindow::OnLButtonDown( wxMouseEvent& event ) { - if ( mCursorChanged ) - { - mIsDragged = TRUE; - mDagOrigin = event.m_x; - - mOriginalTitleRowLen = mAdjustableTitleRowLen; - - CaptureMouse(); - } - else - { - wxTabbedWindow::OnLButtonDown( event ); - } + if ( mCursorChanged ) + { + mIsDragged = TRUE; + mDagOrigin = event.m_x; + + mOriginalTitleRowLen = mAdjustableTitleRowLen; + + CaptureMouse(); + } + else + { + wxTabbedWindow::OnLButtonDown( event ); + } } //--------------------------------------------------------------------------- void wxPaggedWindow::OnLButtonUp( wxMouseEvent& event ) { - if ( mIsDragged ) - { - mIsDragged = FALSE; - mCursorChanged = FALSE; - SetCursor( mNormalCursor ); - - ReleaseMouse(); - } + if ( mIsDragged ) + { + mIsDragged = FALSE; + mCursorChanged = FALSE; + SetCursor( mNormalCursor ); + + ReleaseMouse(); + } } //--------------------------------------------------------------------------- void wxPaggedWindow::OnMouseMove( wxMouseEvent& event ) { - int width, height; + int width, height; GetClientSize( &width, &height ); - - if ( !mIsDragged ) - { - int y = height - mVertGap - BORDER_SZ - mTitleHeight; - int x = mTitleRowStart + mTitleRowLen - 6; - - if ( event.m_x >= x && event.m_y >= y && - event.m_x < x + 6 && - event.m_y < y + mTitleHeight - ) - { - if ( !mCursorChanged ) - { - SetCursor( mResizeCursor ); - - mCursorChanged = TRUE; - } - } + + if ( !mIsDragged ) + { + int y = height - mVertGap - BORDER_SZ - mTitleHeight; + int x = mTitleRowStart + mTitleRowLen - 6; + + if ( event.m_x >= x && event.m_y >= y && + event.m_x < x + 6 && + event.m_y < y + mTitleHeight + ) + { + if ( !mCursorChanged ) + { + SetCursor( mResizeCursor ); + + mCursorChanged = TRUE; + } + } + else + if ( mCursorChanged ) + { + SetCursor( mNormalCursor ); + + mCursorChanged = FALSE; + } + } else - if ( mCursorChanged ) - { - SetCursor( mNormalCursor ); - - mCursorChanged = FALSE; - } - } - else - if ( mIsDragged ) - { - mAdjustableTitleRowLen = mOriginalTitleRowLen + ( event.m_x - mDagOrigin ); - - // FOR NOW:: fixed - if ( mAdjustableTitleRowLen < 6 ) mAdjustableTitleRowLen = 6; - - wxWindowDC dc(this); - DrawDecorations( dc ); - - RecalcLayout(FALSE); - - //Refresh(); - } + if ( mIsDragged ) + { + mAdjustableTitleRowLen = mOriginalTitleRowLen + ( event.m_x - mDagOrigin ); + + // FOR NOW:: fixed + if ( mAdjustableTitleRowLen < 6 ) mAdjustableTitleRowLen = 6; + + wxWindowDC dc(this); + DrawDecorations( dc ); + + RecalcLayout(FALSE); + + //Refresh(); + } } //--------------------------------------------------------------------------- void wxPaggedWindow::OnScroll( wxScrollEvent& event ) { - - wxScrollBar* pSender = (wxScrollBar*)event.GetEventObject(); - // wxMessageBox("wxPaggedWindow::OnScroll","-I->"); - if ( pSender == mpTabScroll ) - { - - int maxUnits = GetWholeTabRowLen() / 20; - - mCurentRowOfs = -event.GetPosition()*maxUnits; - - mFirstTitleGap = mTitleRowStart + mCurentRowOfs + mTabTrianGap; - - // let' it automatically disable itself if it's time - mpTabScroll->Enable( mTitleRowLen < GetWholeTabRowLen() || mCurentRowOfs < 0 ); - - // repaint title bars - wxWindowDC dc(this); - DrawDecorations( dc ); - } - else - if ( !mScrollEventInProgress ) - { - mScrollEventInProgress = TRUE; - - GetActiveTab()->GetEventHandler()->ProcessEvent( event ); - } - else - { - // event bounced back to us, from here we - // know that it has traveled the loop - thus it's processed! - - mScrollEventInProgress = FALSE; - } + + wxScrollBar* pSender = (wxScrollBar*)event.GetEventObject(); + // wxMessageBox("wxPaggedWindow::OnScroll","-I->"); + if ( pSender == mpTabScroll ) + { + + int maxUnits = GetWholeTabRowLen() / 20; + + mCurentRowOfs = -event.GetPosition()*maxUnits; + + mFirstTitleGap = mTitleRowStart + mCurentRowOfs + mTabTrianGap; + + // let' it automatically disable itself if it's time + mpTabScroll->Enable( mTitleRowLen < GetWholeTabRowLen() || mCurentRowOfs < 0 ); + + // repaint title bars + wxWindowDC dc(this); + DrawDecorations( dc ); + } + else + if ( !mScrollEventInProgress ) + { + mScrollEventInProgress = TRUE; + + GetActiveTab()->GetEventHandler()->ProcessEvent( event ); + } + else + { + // event bounced back to us, from here we + // know that it has traveled the loop - thus it's processed! + + mScrollEventInProgress = FALSE; + } } //--------------------------------------------------------------------------- +