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