Huge cleanup of the code. Reformatting, spelling fixes, standardizing on wxWindows conventions, etc.
Changed the couple lines of code required to work with checkins of the new ODBC classes that use wxStrings. Fixed a ton of memory leaks Demo still crashes on exit though - this problem has exited for nearly a year though. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9256 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// Name: BrowserDB.h,cpp
|
// Name: BrowserDB.h,cpp
|
||||||
// Purpose: a wxDB class
|
// Purpose: a wxDB class
|
||||||
// Author: Mark Johnson, mj10777@gmx.net
|
// Author: Mark Johnson, mj10777@gmx.net
|
||||||
// Modified by:
|
// Modified by:
|
||||||
// Created: 19991127.mj10777
|
// Created: 19991127.mj10777
|
||||||
// Copyright: (c) Mark Johnson
|
// Copyright: (c) Mark Johnson
|
||||||
// Licence: wxWindows license
|
// Licence: wxWindows license
|
||||||
// RCS-ID: $Id$
|
// RCS-ID: $Id$
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
//-- 1)
|
//-- 1)
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
@@ -32,441 +32,458 @@
|
|||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// Global structure for holding ODBC connection information
|
// Global structure for holding ODBC connection information
|
||||||
// - darf nur einmal im Projekte definiert werden ?? Extra Databasse Klasse ?
|
// - darf nur einmal im Projekte definiert werden ?? Extra Databasse Klasse ?
|
||||||
wxDbConnectInf ConnectInf; // F<>r DBase
|
wxDbConnectInf ConnectInf; // F<>r DBase
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
extern WXDLLEXPORT_DATA(wxDbList*) PtrBegDbList; /* from db.cpp, used in getting back error results from db connections */
|
extern WXDLLEXPORT_DATA(wxDbList*) PtrBegDbList; /* from db.cpp, used in getting back error results from db connections */
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
char *GetExtendedDBErrorMsg(char *ErrFile, int ErrLine)
|
char *GetExtendedDBErrorMsg(char *ErrFile, int ErrLine)
|
||||||
{
|
{
|
||||||
static wxString msg;
|
static wxString msg;
|
||||||
wxString tStr;
|
wxString tStr;
|
||||||
if (ErrFile || ErrLine)
|
if (ErrFile || ErrLine)
|
||||||
{
|
{
|
||||||
msg += "File: ";
|
msg += "File: ";
|
||||||
msg += ErrFile;
|
msg += ErrFile;
|
||||||
msg += " Line: ";
|
msg += " Line: ";
|
||||||
tStr.Printf("%d",ErrLine);
|
tStr.Printf("%d",ErrLine);
|
||||||
msg += tStr.GetData();
|
msg += tStr.GetData();
|
||||||
// msg += "\n";
|
// msg += "\n";
|
||||||
}
|
}
|
||||||
msg.Append ("\nODBC errors:\n");
|
msg.Append ("\nODBC errors:\n");
|
||||||
// msg += "\n";
|
// msg += "\n";
|
||||||
/* Scan through each database connection displaying
|
/* Scan through each database connection displaying
|
||||||
* any ODBC errors that have occured. */
|
* any ODBC errors that have occured. */
|
||||||
wxDbList *pDbList;
|
wxDbList *pDbList;
|
||||||
for (pDbList = PtrBegDbList; pDbList; pDbList = pDbList->PtrNext)
|
for (pDbList = PtrBegDbList; pDbList; pDbList = pDbList->PtrNext)
|
||||||
{
|
{
|
||||||
// Skip over any free connections
|
// Skip over any free connections
|
||||||
if (pDbList->Free)
|
if (pDbList->Free)
|
||||||
continue;
|
continue;
|
||||||
// Display errors for this connection
|
// Display errors for this connection
|
||||||
for (int i = 0; i < DB_MAX_ERROR_HISTORY; i++)
|
for (int i = 0; i < DB_MAX_ERROR_HISTORY; i++)
|
||||||
{
|
{
|
||||||
if (pDbList->PtrDb->errorList[i])
|
if (pDbList->PtrDb->errorList[i])
|
||||||
{
|
{
|
||||||
msg.Append(pDbList->PtrDb->errorList[i]);
|
msg.Append(pDbList->PtrDb->errorList[i]);
|
||||||
if (strcmp(pDbList->PtrDb->errorList[i],"") != 0)
|
if (strcmp(pDbList->PtrDb->errorList[i],"") != 0)
|
||||||
msg.Append("\n");
|
msg.Append("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
msg += "\n";
|
msg += "\n";
|
||||||
return (char*) (const char*) msg;
|
return (char*) (const char*) msg;
|
||||||
} // GetExtendedDBErrorMsg
|
} // GetExtendedDBErrorMsg
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
BrowserDB::BrowserDB()
|
BrowserDB::BrowserDB()
|
||||||
{
|
{
|
||||||
Zeiger_auf_NULL(0);
|
Zeiger_auf_NULL(0);
|
||||||
ODBCSource = ""; // ODBC data source name (created with ODBC Administrator under Win95/NT)
|
ODBCSource = ""; // ODBC data source name (created with ODBC Administrator under Win95/NT)
|
||||||
UserName = ""; // database username - must already exist in the data source
|
UserName = ""; // database username - must already exist in the data source
|
||||||
Password = ""; // password database username
|
Password = ""; // password database username
|
||||||
OnFillSqlTyp();
|
OnFillSqlTyp();
|
||||||
OnFilldbTyp();
|
OnFilldbTyp();
|
||||||
} // BrowserDB Constructor
|
} // BrowserDB Constructor
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
BrowserDB::~BrowserDB()
|
BrowserDB::~BrowserDB()
|
||||||
{
|
{
|
||||||
Zeiger_auf_NULL(1); // Clean up Tables and Databases (Commit, Close und delete)
|
Zeiger_auf_NULL(1); // Clean up Tables and Databases (Commit, Close und delete)
|
||||||
} // BrowserDB destructor
|
} // BrowserDB destructor
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
bool BrowserDB::Initialize(int Quiet)
|
bool BrowserDB::Initialize(int Quiet)
|
||||||
{
|
{
|
||||||
if (!OnStartDB(Quiet))
|
if (!OnStartDB(Quiet))
|
||||||
{
|
{
|
||||||
wxLogMessage(_("\n\n-E-> BrowserDB::OnStartDB(%s) : Failed ! "),ODBCSource.c_str());
|
wxLogMessage(_("\n\n-E-> BrowserDB::OnStartDB(%s) : Failed ! "),ODBCSource.c_str());
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} // BrowserDB:Initialize
|
} // BrowserDB:Initialize
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
bool BrowserDB::OnStartDB(int Quiet)
|
bool BrowserDB::OnStartDB(int Quiet)
|
||||||
{
|
{
|
||||||
wxStopWatch sw;
|
wxStopWatch sw;
|
||||||
if (!Quiet)
|
if (!Quiet)
|
||||||
wxLogMessage(_("\n-I-> BrowserDB::OnStartDB(%s) : Begin "),ODBCSource.c_str());
|
wxLogMessage(_("\n-I-> BrowserDB::OnStartDB(%s) : Begin "),ODBCSource.c_str());
|
||||||
if (db_BrowserDB != NULL)
|
if (db_BrowserDB != NULL)
|
||||||
{
|
{
|
||||||
if (!Quiet)
|
if (!Quiet)
|
||||||
wxLogMessage(_("\n-I-> BrowserDB::OnStartDB() : DB is allready open."));
|
wxLogMessage(_("\n-I-> BrowserDB::OnStartDB() : DB is allready open."));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
// Initialize the ODBC Environment for Database Operations
|
// Initialize the ODBC Environment for Database Operations
|
||||||
if (SQLAllocEnv(&ConnectInf.Henv) != SQL_SUCCESS)
|
if (SQLAllocEnv(&ConnectInf.Henv) != SQL_SUCCESS)
|
||||||
{
|
{
|
||||||
if (!Quiet)
|
if (!Quiet)
|
||||||
wxLogMessage(_("\n-E-> BrowserDB::OnStartDB() : DB CONNECTION ERROR : A problem occured while trying to get a connection to the data source"));
|
wxLogMessage(_("\n-E-> BrowserDB::OnStartDB() : DB CONNECTION ERROR : A problem occured while trying to get a connection to the data source"));
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// Connect to datasource
|
// Connect to datasource
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
DlgUser *p_Dlg;
|
DlgUser *p_Dlg;
|
||||||
p_Dlg = new DlgUser(pDoc->p_MainFrame,pDoc,"");
|
p_Dlg = new DlgUser(pDoc->p_MainFrame,pDoc,"");
|
||||||
p_Dlg->s_DSN = ODBCSource;
|
p_Dlg->s_DSN = ODBCSource;
|
||||||
p_Dlg->s_User = UserName;
|
p_Dlg->s_User = UserName;
|
||||||
p_Dlg->s_Password = Password;
|
p_Dlg->s_Password = Password;
|
||||||
p_Dlg->OnInit();
|
p_Dlg->OnInit();
|
||||||
p_Dlg->Fit();
|
p_Dlg->Fit();
|
||||||
|
|
||||||
bool OK = FALSE;
|
bool OK = FALSE;
|
||||||
if (p_Dlg->ShowModal() == wxID_OK)
|
if (p_Dlg->ShowModal() == wxID_OK)
|
||||||
{
|
{
|
||||||
(pDoc->p_DSN+i_Which)->Usr = p_Dlg->s_User;
|
(pDoc->p_DSN+i_Which)->Usr = p_Dlg->s_User;
|
||||||
(pDoc->p_DSN+i_Which)->Pas = p_Dlg->s_Password;
|
(pDoc->p_DSN+i_Which)->Pas = p_Dlg->s_Password;
|
||||||
UserName = p_Dlg->s_User;
|
UserName = p_Dlg->s_User;
|
||||||
Password = p_Dlg->s_Password;
|
Password = p_Dlg->s_Password;
|
||||||
OK = TRUE;
|
OK = TRUE;
|
||||||
}
|
}
|
||||||
delete p_Dlg;
|
delete p_Dlg;
|
||||||
if (OK)
|
if (OK)
|
||||||
{
|
{
|
||||||
//--------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------
|
||||||
strcpy(ConnectInf.Dsn, ODBCSource); // ODBC data source name (created with ODBC Administrator under Win95/NT)
|
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
|
ConnectInf.Uid = UserName; // database username - must already exist in the data source
|
||||||
strcpy(ConnectInf.AuthStr, Password); // password database username
|
ConnectInf.AuthStr= Password; // password database username
|
||||||
db_BrowserDB = wxDbGetConnection(&ConnectInf);
|
db_BrowserDB = wxDbGetConnection(&ConnectInf);
|
||||||
// wxLogMessage(">>>%s<<<>>>%s<<<",UserName.c_str(),Password.c_str());
|
// wxLogMessage(">>>%s<<<>>>%s<<<",UserName.c_str(),Password.c_str());
|
||||||
if (db_BrowserDB == NULL)
|
if (db_BrowserDB == NULL)
|
||||||
{
|
{
|
||||||
strcpy(ConnectInf.Dsn, "");
|
ConnectInf.Dsn = "";
|
||||||
strcpy(ConnectInf.Uid, "");
|
ConnectInf.Uid = "";
|
||||||
strcpy(ConnectInf.AuthStr, "");
|
ConnectInf.AuthStr = "";
|
||||||
if (!Quiet)
|
if (!Quiet)
|
||||||
{
|
{
|
||||||
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(_("\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 - Time needed : %ld ms"),ODBCSource.c_str(),sw.Time());
|
wxLogMessage(_("-I-> BrowserDB::OnStartDB(%s) : End - Time needed : %ld ms"),ODBCSource.c_str(),sw.Time());
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
//--------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------
|
||||||
if (!Quiet)
|
if (!Quiet)
|
||||||
{
|
{
|
||||||
Temp1 = db_BrowserDB->GetDatabaseName();
|
Temp1 = db_BrowserDB->GetDatabaseName();
|
||||||
Temp2 = db_BrowserDB->GetDataSource();
|
Temp2 = db_BrowserDB->GetDataSource();
|
||||||
wxLogMessage(_("-I-> BrowserDB::OnGetDataSourceODBC() - DatabaseName(%s) ; DataSource(%s)"),Temp1.c_str(),Temp2.c_str());
|
wxLogMessage(_("-I-> BrowserDB::OnGetDataSourceODBC() - DatabaseName(%s) ; DataSource(%s)"),Temp1.c_str(),Temp2.c_str());
|
||||||
wxLogMessage(_("-I-> BrowserDB::OnStartDB(%s) : End - Time needed : %ld ms"),ODBCSource.c_str(),sw.Time());
|
wxLogMessage(_("-I-> BrowserDB::OnStartDB(%s) : End - Time needed : %ld ms"),ODBCSource.c_str(),sw.Time());
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} else return FALSE;
|
}
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
bool BrowserDB::OnCloseDB(int Quiet)
|
bool BrowserDB::OnCloseDB(int Quiet)
|
||||||
{
|
{
|
||||||
if (!Quiet)
|
if (!Quiet)
|
||||||
wxLogMessage(_("-I-> BrowserDB::OnCloseDB() : Begin "));
|
wxLogMessage(_("-I-> BrowserDB::OnCloseDB() : Begin "));
|
||||||
if (db_BrowserDB)
|
if (db_BrowserDB)
|
||||||
{
|
{
|
||||||
db_BrowserDB->Close();
|
// db_BrowserDB->Close();
|
||||||
wxDbFreeConnection(db_BrowserDB);
|
wxDbFreeConnection(db_BrowserDB);
|
||||||
|
/*
|
||||||
// Free Environment Handle that ODBC uses
|
// Free Environment Handle that ODBC uses
|
||||||
if (SQLFreeEnv(&ConnectInf.Henv) != SQL_SUCCESS)
|
if (SQLFreeEnv(&ConnectInf.Henv) != SQL_SUCCESS)
|
||||||
{
|
{
|
||||||
// Error freeing environment handle
|
// Error freeing environment handle
|
||||||
}
|
}
|
||||||
db_BrowserDB = NULL;
|
*/
|
||||||
}
|
db_BrowserDB = NULL;
|
||||||
if (!Quiet)
|
}
|
||||||
wxLogMessage(_("\n-I-> BrowserDB::OnCloseDB() : End "));
|
if (!Quiet)
|
||||||
return TRUE;
|
wxLogMessage(_("\n-I-> BrowserDB::OnCloseDB() : End "));
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
bool BrowserDB::OnGetNext(int Cols,int Quiet)
|
bool BrowserDB::OnGetNext(int Cols,int Quiet)
|
||||||
{
|
{
|
||||||
SDWORD cb;
|
SDWORD cb;
|
||||||
int i_dbDataType;
|
int i_dbDataType;
|
||||||
int i=0;
|
int i=0;
|
||||||
char s_temp[1024+1];
|
char s_temp[1024+1];
|
||||||
long l_temp;
|
long l_temp;
|
||||||
double f_temp;
|
double f_temp;
|
||||||
int AnzError=0;
|
int AnzError=0;
|
||||||
TIMESTAMP_STRUCT t_temp;
|
TIMESTAMP_STRUCT t_temp;
|
||||||
wxString Temp0;
|
wxString Temp0;
|
||||||
//-----------------------------
|
//-----------------------------
|
||||||
if (!db_BrowserDB->GetNext())
|
if (!db_BrowserDB->GetNext())
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
Temp0.Printf(_("\n-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext \n-E-> "));
|
Temp0.Printf(_("\n-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext \n-E-> "));
|
||||||
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
||||||
wxLogMessage(Temp0);
|
wxLogMessage(Temp0);
|
||||||
wxMessageBox(Temp0);
|
wxMessageBox(Temp0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (i=0;i<Cols;i++)
|
for (i=0;i<Cols;i++)
|
||||||
{
|
{
|
||||||
strcpy((cl_BrowserDB+i)->tableName,"-E->");
|
strcpy((cl_BrowserDB+i)->tableName,"-E->");
|
||||||
i_dbDataType = (cl_BrowserDB->pColFor+i)->i_dbDataType;
|
i_dbDataType = (cl_BrowserDB->pColFor+i)->i_dbDataType;
|
||||||
if (i_dbDataType == 0) // Filter unsupported dbDataTypes
|
if (i_dbDataType == 0) // Filter unsupported dbDataTypes
|
||||||
{
|
{
|
||||||
if (((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_VARCHAR) || ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_LONGVARCHAR))
|
if (((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_VARCHAR) || ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_LONGVARCHAR))
|
||||||
i_dbDataType = DB_DATA_TYPE_VARCHAR;
|
i_dbDataType = DB_DATA_TYPE_VARCHAR;
|
||||||
if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_DATE)
|
if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_DATE)
|
||||||
i_dbDataType = DB_DATA_TYPE_DATE;
|
i_dbDataType = DB_DATA_TYPE_DATE;
|
||||||
if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_BIT)
|
if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_BIT)
|
||||||
i_dbDataType = DB_DATA_TYPE_INTEGER;
|
i_dbDataType = DB_DATA_TYPE_INTEGER;
|
||||||
if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_NUMERIC)
|
if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_NUMERIC)
|
||||||
i_dbDataType = DB_DATA_TYPE_VARCHAR;
|
i_dbDataType = DB_DATA_TYPE_VARCHAR;
|
||||||
if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_REAL)
|
if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_REAL)
|
||||||
i_dbDataType = DB_DATA_TYPE_FLOAT;
|
i_dbDataType = DB_DATA_TYPE_FLOAT;
|
||||||
}
|
}
|
||||||
if ((i_dbDataType == DB_DATA_TYPE_INTEGER) && ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_DOUBLE))
|
if ((i_dbDataType == DB_DATA_TYPE_INTEGER) && ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_DOUBLE))
|
||||||
{ // DBASE Numeric
|
{ // DBASE Numeric
|
||||||
i_dbDataType = DB_DATA_TYPE_FLOAT;
|
i_dbDataType = DB_DATA_TYPE_FLOAT;
|
||||||
}
|
}
|
||||||
switch(i_dbDataType)
|
switch(i_dbDataType)
|
||||||
{
|
{
|
||||||
case DB_DATA_TYPE_VARCHAR:
|
case DB_DATA_TYPE_VARCHAR:
|
||||||
strcpy(s_temp,"");
|
strcpy(s_temp,"");
|
||||||
if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_dbDataType,&s_temp,sizeof(s_temp), &cb))
|
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.Printf(_("\n-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext of >%s<.\n-E-> "),(cl_BrowserDB+i)->tableName);
|
||||||
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
||||||
wxLogMessage(Temp0);
|
wxLogMessage(Temp0);
|
||||||
}
|
}
|
||||||
Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,s_temp);
|
Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,s_temp);
|
||||||
strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
|
strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
|
||||||
break;
|
break;
|
||||||
case DB_DATA_TYPE_INTEGER:
|
case DB_DATA_TYPE_INTEGER:
|
||||||
l_temp = 0;
|
l_temp = 0;
|
||||||
if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&l_temp,sizeof(l_temp), &cb))
|
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.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> "));
|
||||||
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,l_temp);
|
Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,l_temp);
|
||||||
strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
|
strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DB_DATA_TYPE_FLOAT:
|
case DB_DATA_TYPE_FLOAT:
|
||||||
f_temp = 0;
|
f_temp = 0;
|
||||||
if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&f_temp,sizeof(f_temp), &cb))
|
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.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> "));
|
||||||
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
||||||
wxMessageBox(Temp0);
|
wxMessageBox(Temp0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,f_temp);
|
Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,f_temp);
|
||||||
strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
|
strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DB_DATA_TYPE_DATE:
|
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;
|
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))
|
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.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> "));
|
||||||
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// i_Nation = 0 = timestamp , 1=EU, 2=UK, 3=International, 4=US
|
// i_Nation = 0 = timestamp , 1=EU, 2=UK, 3=International, 4=US
|
||||||
if (((cl_BrowserDB->pColFor+i)->i_Nation == 0) || // TS YYYY-MM-DD
|
if (((cl_BrowserDB->pColFor+i)->i_Nation == 0) || // TS YYYY-MM-DD
|
||||||
((cl_BrowserDB->pColFor+i)->i_Nation == 3)) // IT 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,
|
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);
|
t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction);
|
||||||
strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
|
strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
|
||||||
}
|
}
|
||||||
if (((cl_BrowserDB->pColFor+i)->i_Nation == 1) || // EU DD.MM.YYYY
|
if (((cl_BrowserDB->pColFor+i)->i_Nation == 1) || // EU DD.MM.YYYY
|
||||||
((cl_BrowserDB->pColFor+i)->i_Nation == 2)) // UK 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,
|
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);
|
t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction);
|
||||||
strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
|
strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
|
||||||
}
|
}
|
||||||
if ((cl_BrowserDB->pColFor+i)->i_Nation == 3) // US MM/DD/YYYY
|
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,
|
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);
|
t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction);
|
||||||
strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
|
strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
AnzError++;
|
AnzError++;
|
||||||
if (AnzError <= 100)
|
if (AnzError <= 100)
|
||||||
{
|
{
|
||||||
Temp0 = (cl_BrowserDB+i)->colName;
|
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());
|
wxLogMessage(_("-E-> BrowserDB::OnGetNext - DB_DATA_TYPE_?? (%d) in Col(%s)"),(cl_BrowserDB->pColFor+i)->i_dbDataType,Temp0.c_str());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return TRUE;
|
return TRUE;
|
||||||
Temp0.Printf(_("-E-> unknown Format(%d) - sql(%d)"),(cl_BrowserDB->pColFor+i)->i_dbDataType,(cl_BrowserDB->pColFor+i)->i_sqlDataType);
|
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());
|
strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
|
||||||
break;
|
break;
|
||||||
};
|
}; // switch
|
||||||
}
|
} // for
|
||||||
}
|
} // else
|
||||||
// wxLogMessage("-E-> BrowserDB::OnGetNext - End");
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
bool BrowserDB::OnSelect(wxString tb_Name, int Quiet)
|
bool BrowserDB::OnSelect(wxString tb_Name, int Quiet)
|
||||||
{
|
{
|
||||||
wxStopWatch sw;
|
wxStopWatch sw;
|
||||||
wxString SQLStmt;
|
wxString SQLStmt;
|
||||||
i_Records = 0;
|
i_Records = 0;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
SQLStmt.sprintf("SELECT * FROM %s",tb_Name.c_str());
|
SQLStmt.sprintf("SELECT * FROM %s",tb_Name.c_str());
|
||||||
if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData())))
|
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.Printf(_("\n-E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of >%s<.\n-E-> "),tb_Name.c_str());
|
||||||
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
||||||
wxLogMessage(Temp0);
|
wxLogMessage(Temp0);
|
||||||
wxMessageBox("-E-> BrowserDB::OnSelect - GetData()");
|
wxMessageBox("-E-> BrowserDB::OnSelect - GetData()");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
while (db_BrowserDB->GetNext())
|
while (db_BrowserDB->GetNext())
|
||||||
{
|
{
|
||||||
i_Records++;
|
i_Records++;
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData())))
|
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.Printf(_("\n-E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of >%s<.\n-E-> "),tb_Name.c_str());
|
||||||
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
||||||
wxLogMessage(Temp0);
|
wxLogMessage(Temp0);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// SetColDefs ( 0,"NAME", DB_DATA_TYPE_VARCHAR, Name, SQL_C_CHAR, sizeof(Name), TRUE, TRUE); // Primary index
|
// SetColDefs ( 0,"NAME", DB_DATA_TYPE_VARCHAR, Name, SQL_C_CHAR, sizeof(Name), TRUE, TRUE); // Primary index
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
if (!Quiet)
|
if (!Quiet)
|
||||||
{
|
{
|
||||||
wxLogMessage(_("\n-I-> BrowserDB::OnSelect(%s) Records(%d): End - Time needed : %ld ms"),tb_Name.c_str(),i_Records,sw.Time());
|
wxLogMessage(_("\n-I-> BrowserDB::OnSelect(%s) Records(%d): End - Time needed : %ld ms"),tb_Name.c_str(),i_Records,sw.Time());
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
bool BrowserDB::OnExecSql(wxString SQLStmt, int Quiet)
|
bool BrowserDB::OnExecSql(wxString SQLStmt, int Quiet)
|
||||||
{
|
{
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData())))
|
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.Printf(_("\n-E-> BrowserDB::OnExecSQL - ODBC-Error with ExecSql of >%s<.\n-E-> "),SQLStmt.c_str());
|
||||||
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
|
||||||
if (!Quiet)
|
if (!Quiet)
|
||||||
wxLogMessage(Temp0);
|
wxLogMessage(Temp0);
|
||||||
else
|
else
|
||||||
wxMessageBox("-E-> BrowserDB::OnExecSql - ExecSql()");
|
wxMessageBox("-E-> BrowserDB::OnExecSql - ExecSql()");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if (!Quiet)
|
if (!Quiet)
|
||||||
{
|
{
|
||||||
// wxLogMessage(_("\n-I-> BrowserDB::OnExecSql(%s) - End - Time needed : %ld ms"),SQLStmt.c_str(),sw.Time());
|
// wxLogMessage(_("\n-I-> BrowserDB::OnExecSql(%s) - End - Time needed : %ld ms"),SQLStmt.c_str(),sw.Time());
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
wxDbInf* BrowserDB::OnGetCatalog(int Quiet)
|
wxDbInf* BrowserDB::OnGetCatalog(int Quiet)
|
||||||
{
|
{
|
||||||
char UName[255];
|
char UName[255];
|
||||||
strcpy(UName,UserName);
|
strcpy(UName,UserName);
|
||||||
ct_BrowserDB = db_BrowserDB->GetCatalog(UName);
|
ct_BrowserDB = db_BrowserDB->GetCatalog(UName);
|
||||||
return ct_BrowserDB;
|
return ct_BrowserDB;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
wxDbColInf* BrowserDB::OnGetColumns(char *tableName, int numCols, int Quiet)
|
wxDbColInf* BrowserDB::OnGetColumns(char *tableName, int numCols, int Quiet)
|
||||||
{
|
{
|
||||||
char UName[255];
|
char UName[255];
|
||||||
int i;
|
int i;
|
||||||
strcpy(UName,UserName);
|
strcpy(UName,UserName);
|
||||||
cl_BrowserDB = db_BrowserDB->GetColumns(tableName,&numCols,UName);
|
cl_BrowserDB = db_BrowserDB->GetColumns(tableName,&numCols,UName);
|
||||||
cl_BrowserDB->pColFor = new wxDbColFor[numCols];
|
cl_BrowserDB->pColFor = new wxDbColFor[numCols];
|
||||||
for (i=0;i<numCols;i++)
|
for (i=0;i<numCols;i++)
|
||||||
{
|
{
|
||||||
(cl_BrowserDB->pColFor+i)->Format(1,(cl_BrowserDB+i)->dbDataType,(cl_BrowserDB+i)->sqlDataType,
|
(cl_BrowserDB->pColFor+i)->Format(1,(cl_BrowserDB+i)->dbDataType,(cl_BrowserDB+i)->sqlDataType,
|
||||||
(cl_BrowserDB+i)->columnSize, (cl_BrowserDB+i)->decimalDigits);
|
(cl_BrowserDB+i)->columnSize, (cl_BrowserDB+i)->decimalDigits);
|
||||||
}
|
}
|
||||||
return cl_BrowserDB;
|
return cl_BrowserDB;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void BrowserDB::Zeiger_auf_NULL(int Art)
|
void BrowserDB::Zeiger_auf_NULL(int Art)
|
||||||
{
|
{
|
||||||
if (Art == 1) // L<>schen
|
if (Art == 1) // L<>schen
|
||||||
{
|
{
|
||||||
if (cl_BrowserDB != NULL)
|
if (cl_BrowserDB != NULL)
|
||||||
{ // Destroy the memory
|
{ // Destroy the memory
|
||||||
delete [] cl_BrowserDB;
|
delete [] cl_BrowserDB;
|
||||||
}
|
}
|
||||||
if (ct_BrowserDB != NULL)
|
if (ct_BrowserDB != NULL)
|
||||||
{ // Destroy the memory
|
{ // Destroy the memory
|
||||||
delete [] ct_BrowserDB;
|
delete [] ct_BrowserDB;
|
||||||
}
|
}
|
||||||
if (db_BrowserDB != NULL)
|
if (db_BrowserDB != NULL)
|
||||||
{
|
{
|
||||||
db_BrowserDB->CommitTrans();
|
db_BrowserDB->CommitTrans();
|
||||||
db_BrowserDB->Close();
|
db_BrowserDB->Close();
|
||||||
wxDbCloseConnections();
|
wxDbCloseConnections();
|
||||||
delete db_BrowserDB;
|
delete db_BrowserDB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cl_BrowserDB = NULL;
|
cl_BrowserDB = NULL;
|
||||||
ct_BrowserDB = NULL;
|
ct_BrowserDB = NULL;
|
||||||
db_BrowserDB = NULL;
|
db_BrowserDB = NULL;
|
||||||
p_LogWindow = NULL;
|
p_LogWindow = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void BrowserDB::OnFillSqlTyp()
|
void BrowserDB::OnFillSqlTyp()
|
||||||
{
|
{
|
||||||
i_SqlTyp[1] = SQL_C_BINARY; s_SqlTyp[1] = "SQL_C_BINARY";
|
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[2] = SQL_C_BIT; s_SqlTyp[2] = "SQL_C_BIT";
|
||||||
i_SqlTyp[3] = SQL_C_BOOKMARK; s_SqlTyp[3] = "SQL_C_BOOKMARK";
|
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[4] = SQL_C_CHAR; s_SqlTyp[4] = "SQL_C_CHAR";
|
||||||
i_SqlTyp[5] = SQL_C_DATE; s_SqlTyp[5] = "SQL_C_DATE";
|
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[6] = SQL_C_DEFAULT; s_SqlTyp[6] = "SQL_C_DEFAULT";
|
||||||
i_SqlTyp[7] = SQL_C_DOUBLE; s_SqlTyp[7] = "SQL_C_DOUBLE";
|
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[8] = SQL_C_FLOAT; s_SqlTyp[8] = "SQL_C_FLOAT";
|
||||||
i_SqlTyp[9] = SQL_C_LONG; s_SqlTyp[9] = "SQL_C_LONG";
|
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[10] = SQL_C_SHORT; s_SqlTyp[10] = "SQL_C_SHORT";
|
||||||
i_SqlTyp[11] = SQL_C_SLONG; s_SqlTyp[11] = "SQL_C_SLONG";
|
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[12] = SQL_C_SSHORT; s_SqlTyp[12] = "SQL_C_SSHORT";
|
||||||
i_SqlTyp[13] = SQL_C_STINYINT; s_SqlTyp[13] = "SQL_C_STINYINT";
|
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[14] = SQL_C_TIME; s_SqlTyp[14] = "SQL_C_TIME";
|
||||||
i_SqlTyp[15] = SQL_C_TIMESTAMP; s_SqlTyp[15] = "SQL_C_TIMESTAMP";
|
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[16] = SQL_C_TINYINT; s_SqlTyp[16] = "SQL_C_TINYINT";
|
||||||
i_SqlTyp[17] = SQL_C_ULONG; s_SqlTyp[17] = "SQL_C_ULONG";
|
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[18] = SQL_C_USHORT; s_SqlTyp[18] = "SQL_C_USHORT";
|
||||||
i_SqlTyp[19] = SQL_C_UTINYINT; s_SqlTyp[19] = "SQL_C_UTINYINT";
|
i_SqlTyp[19] = SQL_C_UTINYINT; s_SqlTyp[19] = "SQL_C_UTINYINT";
|
||||||
i_SqlTyp[20] = SQL_VARCHAR; s_SqlTyp[20] = "SQL_VARCHAR";
|
i_SqlTyp[20] = SQL_VARCHAR; s_SqlTyp[20] = "SQL_VARCHAR";
|
||||||
i_SqlTyp[21] = SQL_NUMERIC; s_SqlTyp[21] = "SQL_NUMERIC";
|
i_SqlTyp[21] = SQL_NUMERIC; s_SqlTyp[21] = "SQL_NUMERIC";
|
||||||
i_SqlTyp[22] = SQL_LONGVARCHAR; s_SqlTyp[22] = "SQL_LONGVARCHAR";
|
i_SqlTyp[22] = SQL_LONGVARCHAR; s_SqlTyp[22] = "SQL_LONGVARCHAR";
|
||||||
i_SqlTyp[23] = SQL_REAL; s_SqlTyp[23] = "SQL_REAL";
|
i_SqlTyp[23] = SQL_REAL; s_SqlTyp[23] = "SQL_REAL";
|
||||||
i_SqlTyp[0] = 23; s_SqlTyp[0] = "";
|
i_SqlTyp[0] = 23; s_SqlTyp[0] = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void BrowserDB::OnFilldbTyp()
|
void BrowserDB::OnFilldbTyp()
|
||||||
{
|
{
|
||||||
i_dbTyp[1] = DB_DATA_TYPE_VARCHAR; s_dbTyp[1] = "DB_DATA_TYPE_VARCHAR";
|
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[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[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[4] = DB_DATA_TYPE_DATE; s_dbTyp[4] = "DB_DATA_TYPE_DATE";
|
||||||
i_dbTyp[0] = 4; s_dbTyp[0] = "";
|
i_dbTyp[0] = 4; s_dbTyp[0] = "";
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
|
@@ -16,62 +16,63 @@
|
|||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
extern wxDbConnectInf DbConnectInf;
|
extern wxDbConnectInf DbConnectInf;
|
||||||
class MainDoc;
|
class MainDoc;
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class BrowserDB
|
class BrowserDB
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// Pointer to the main database connection used in the program. This
|
// Pointer to the main database connection used in the program. This
|
||||||
// pointer would normally be used for doing things as database lookups
|
// pointer would normally be used for doing things as database lookups
|
||||||
// for user login names and passwords, getting workstation settings, etc.
|
// for user login names and passwords, getting workstation settings, etc.
|
||||||
// ---> IMPORTANT <---
|
// ---> IMPORTANT <---
|
||||||
//
|
//
|
||||||
// For each database object created which uses this wxDb pointer
|
// For each database object created which uses this wxDb pointer
|
||||||
// connection to the database, when a CommitTrans() or RollBackTrans()
|
// connection to the database, when a CommitTrans() or RollBackTrans()
|
||||||
// will commit or rollback EVERY object which uses this wxDb pointer.
|
// will commit or rollback EVERY object which uses this wxDb pointer.
|
||||||
//
|
//
|
||||||
// To allow each table object (those derived from wxDbTable) to be
|
// To allow each table object (those derived from wxDbTable) to be
|
||||||
// individually committed or rolled back, you MUST use a different
|
// individually committed or rolled back, you MUST use a different
|
||||||
// instance of wxDb in the constructor of the table. Doing so creates
|
// instance of wxDb in the constructor of the table. Doing so creates
|
||||||
// more overhead, and will use more database connections (some DBs have
|
// more overhead, and will use more database connections (some DBs have
|
||||||
// connection limits...), so use connections sparringly.
|
// connection limits...), so use connections sparringly.
|
||||||
//
|
//
|
||||||
// It is recommended that one "main" database connection be created for
|
// It is recommended that one "main" database connection be created for
|
||||||
// the entire program to use for READ-ONLY database accesses, but for each
|
// the entire program to use for READ-ONLY database accesses, but for each
|
||||||
// table object which will do a CommitTrans() or RollbackTrans() that a
|
// table object which will do a CommitTrans() or RollbackTrans() that a
|
||||||
// new wxDb object be created and used for it.
|
// new wxDb object be created and used for it.
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
wxDb* db_BrowserDB;
|
wxDb* db_BrowserDB;
|
||||||
wxDbInf* ct_BrowserDB;
|
wxDbInf* ct_BrowserDB;
|
||||||
wxDbColInf* cl_BrowserDB;
|
wxDbColInf* cl_BrowserDB;
|
||||||
wxString ODBCSource, UserName, Password;
|
wxString ODBCSource, UserName, Password;
|
||||||
MainDoc *pDoc;
|
MainDoc *pDoc;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5;
|
wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5;
|
||||||
wxString ODBCText;
|
wxString ODBCText;
|
||||||
wxTextCtrl* p_LogWindow;
|
wxTextCtrl* p_LogWindow;
|
||||||
wxString s_SqlTyp[25];
|
wxString s_SqlTyp[25];
|
||||||
int i_SqlTyp[25];
|
int i_SqlTyp[25];
|
||||||
wxString s_dbTyp[5];
|
wxString s_dbTyp[5];
|
||||||
int i_dbTyp[5];
|
int i_dbTyp[5];
|
||||||
int i_Which;
|
int i_Which;
|
||||||
int i_Records;
|
int i_Records;
|
||||||
int i_Cols;
|
int i_Cols;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
BrowserDB();
|
BrowserDB();
|
||||||
~BrowserDB();
|
~BrowserDB();
|
||||||
void Zeiger_auf_NULL(int Art);
|
void Zeiger_auf_NULL(int Art);
|
||||||
bool Initialize(int Quiet);
|
bool Initialize(int Quiet);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
bool OnStartDB(int Quiet);
|
bool OnStartDB(int Quiet);
|
||||||
bool OnCloseDB(int Quiet);
|
bool OnCloseDB(int Quiet);
|
||||||
bool OnSelect(wxString tb_Name,int Quiet);
|
bool OnSelect(wxString tb_Name,int Quiet);
|
||||||
bool OnExecSql(wxString SQLStmt,int Quiet);
|
bool OnExecSql(wxString SQLStmt,int Quiet);
|
||||||
bool OnGetNext(int Cols,int Quiet);
|
bool OnGetNext(int Cols,int Quiet);
|
||||||
wxDbInf* OnGetCatalog(int Quiet);
|
wxDbInf* OnGetCatalog(int Quiet);
|
||||||
wxDbColInf* OnGetColumns(char *tableName, int numCols,int Quiet);
|
wxDbColInf* OnGetColumns(char *tableName, int numCols,int Quiet);
|
||||||
void OnFillSqlTyp();
|
void OnFillSqlTyp();
|
||||||
void OnFilldbTyp();
|
void OnFilldbTyp();
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
}; // BrowserDB class definition
|
}; // BrowserDB class definition
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
|
@@ -12,23 +12,23 @@
|
|||||||
//-- all #ifdefs that the whole Project needs. -------------------------------------------
|
//-- all #ifdefs that the whole Project needs. -------------------------------------------
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
#ifdef __GNUG__
|
#ifdef __GNUG__
|
||||||
#pragma implementation
|
#pragma implementation
|
||||||
#pragma interface
|
#pragma interface
|
||||||
#endif
|
#endif
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// For compilers that support precompilation, includes "wx/wx.h".
|
// For compilers that support precompilation, includes "wx/wx.h".
|
||||||
#include "wx/wxprec.h"
|
#include "wx/wxprec.h"
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
#ifdef __BORLANDC__
|
#ifdef __BORLANDC__
|
||||||
#pragma hdrstop
|
#pragma hdrstop
|
||||||
#endif
|
#endif
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
#ifndef WX_PRECOMP
|
#ifndef WX_PRECOMP
|
||||||
#include "wx/wx.h"
|
#include "wx/wx.h"
|
||||||
#endif
|
#endif
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
#ifndef __WXMSW__
|
#ifndef __WXMSW__
|
||||||
#include "bitmaps/logo.xpm"
|
#include "bitmaps/logo.xpm"
|
||||||
#endif
|
#endif
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
//-- all #includes that every .cpp needs --- 19990807.mj10777 ----------------
|
//-- all #includes that every .cpp needs --- 19990807.mj10777 ----------------
|
||||||
@@ -39,278 +39,285 @@
|
|||||||
//-- Some Global Vars for this file ------------------------------------------------------
|
//-- Some Global Vars for this file ------------------------------------------------------
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
BEGIN_EVENT_TABLE(MainFrame, wxFrame)
|
BEGIN_EVENT_TABLE(MainFrame, wxFrame)
|
||||||
EVT_MENU(QUIT, MainFrame::OnQuit) // Program End
|
EVT_MENU(QUIT, MainFrame::OnQuit) // Program End
|
||||||
EVT_MENU(ABOUT, MainFrame::OnAbout) // Program Discription
|
EVT_MENU(ABOUT, MainFrame::OnAbout) // Program Discription
|
||||||
EVT_MENU(HELP, MainFrame::OnHelp) // Program Help
|
EVT_MENU(HELP, MainFrame::OnHelp) // Program Help
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
IMPLEMENT_APP(MainApp) // This declares wxApp::MainApp as "the" Application
|
IMPLEMENT_APP(MainApp) // This declares wxApp::MainApp as "the" Application
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// 'Main program' equivalent, creating windows and returning main app frame
|
// 'Main program' equivalent, creating windows and returning main app frame
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
bool MainApp::OnInit(void) // Does everything needed for a program start
|
bool MainApp::OnInit(void) // Does everything needed for a program start
|
||||||
{
|
{
|
||||||
wxString Temp0; // Use as needed
|
wxString Temp0; // Use as needed
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// set the language to use // Help.?? (.std = english, .de = german etc.)
|
// set the language to use // Help.?? (.std = english, .de = german etc.)
|
||||||
const char *language = NULL; // czech, german, french, polish
|
const char *language = NULL; // czech, german, french, polish
|
||||||
const char *langid = NULL; // std = english , cz, de = german, fr = french, pl = polish
|
const char *langid = NULL; // std = english , cz, de = german, fr = french, pl = polish
|
||||||
wxString s_LangHelp; // Directory/Filename.hhp of the Help-Project file
|
wxString s_LangHelp; // Directory/Filename.hhp of the Help-Project file
|
||||||
wxString s_LangId, s_Language;
|
wxString s_LangId, s_Language;
|
||||||
s_Language.Empty(); s_LangId.Empty(); s_LangHelp.Empty();
|
s_Language.Empty(); s_LangId.Empty(); s_LangHelp.Empty();
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
//-- Graphic File suport - use only when needed, otherwise big .exe's
|
//-- Graphic File suport - use only when needed, otherwise big .exe's
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
#if wxUSE_LIBPNG
|
#if wxUSE_LIBPNG
|
||||||
wxImage::AddHandler( new wxPNGHandler ); // needed for help System
|
wxImage::AddHandler( new wxPNGHandler ); // needed for help System
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
#if wxUSE_LIBJPEG
|
#if wxUSE_LIBJPEG
|
||||||
wxImage::AddHandler(new wxJPEGHandler ); // use only when needed, otherwise big .exe's
|
wxImage::AddHandler(new wxJPEGHandler ); // use only when needed, otherwise big .exe's
|
||||||
#endif
|
#endif
|
||||||
wxImage::AddHandler( new wxGIFHandler ); // use only when needed, otherwise big .exe's
|
wxImage::AddHandler( new wxGIFHandler ); // use only when needed, otherwise big .exe's
|
||||||
wxImage::AddHandler( new wxPCXHandler ); // use only when needed, otherwise big .exe's
|
wxImage::AddHandler( new wxPCXHandler ); // use only when needed, otherwise big .exe's
|
||||||
wxImage::AddHandler( new wxPNMHandler ); // use only when needed, otherwise big .exe's
|
wxImage::AddHandler( new wxPNMHandler ); // use only when needed, otherwise big .exe's
|
||||||
*/
|
*/
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
// wxBitmap::AddHandler( new wxXPMFileHandler ); // Attempt to use XPS instead of ico
|
// wxBitmap::AddHandler( new wxXPMFileHandler ); // Attempt to use XPS instead of ico
|
||||||
// wxBitmap::AddHandler( new wxXPMDataHandler ); // - Attempt failed
|
// wxBitmap::AddHandler( new wxXPMDataHandler ); // - Attempt failed
|
||||||
#endif
|
#endif
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
switch ( argc )
|
switch ( argc )
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
// ignore the other args, fall through
|
// ignore the other args, fall through
|
||||||
case 3:
|
case 3:
|
||||||
language = argv[2]; // czech, english, french, german , polish
|
language = argv[2]; // czech, english, french, german , polish
|
||||||
langid = argv[1]; // cz, std, fr, de , pl
|
langid = argv[1]; // cz, std, fr, de , pl
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
langid = argv[1]; // cz, std, fr, de , pl
|
langid = argv[1]; // cz, std, fr, de , pl
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// Win-Registry : Workplace\HKEY_CURRENT_USERS\Software\%GetVendorName()\%GetAppName()
|
// Win-Registry : Workplace\HKEY_CURRENT_USERS\Software\%GetVendorName()\%GetAppName()
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
SetVendorName("mj10777"); // Needed to get Configuration Information
|
SetVendorName("mj10777"); // Needed to get Configuration Information
|
||||||
SetAppName("DBBrowse"); // "" , also needed for s_LangHelp
|
SetAppName("DBBrowse"); // "" , also needed for s_LangHelp
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// we're using wxConfig's "create-on-demand" feature: it will create the
|
// we're using wxConfig's "create-on-demand" feature: it will create the
|
||||||
// config object when it's used for the first time. It has a number of
|
// config object when it's used for the first time. It has a number of
|
||||||
// advantages compared with explicitly creating our wxConfig:
|
// advantages compared with explicitly creating our wxConfig:
|
||||||
// 1) we don't pay for it if we don't use it
|
// 1) we don't pay for it if we don't use it
|
||||||
// 2) there is no danger to create it twice
|
// 2) there is no danger to create it twice
|
||||||
|
|
||||||
// application and vendor name are used by wxConfig to construct the name
|
// application and vendor name are used by wxConfig to construct the name
|
||||||
// of the config file/registry key and must be set before the first call
|
// of the config file/registry key and must be set before the first call
|
||||||
// to Get() if you want to override the default values (the application
|
// to Get() if you want to override the default values (the application
|
||||||
// name is the name of the executable and the vendor name is the same)
|
// name is the name of the executable and the vendor name is the same)
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
p_ProgramCfg = wxConfigBase::Get(); // Get Program Configuration from Registry
|
p_ProgramCfg = wxConfigBase::Get(); // Get Program Configuration from Registry
|
||||||
// p_ProgramCfg->DeleteAll(); // This is how the Config can be erased
|
// p_ProgramCfg->DeleteAll(); // This is how the Config can be erased
|
||||||
p_ProgramCfg->SetPath("/"); // Start at root
|
p_ProgramCfg->SetPath("/"); // Start at root
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
//-- Set the Language and remember it for the next time. --------------------------------
|
//-- Set the Language and remember it for the next time. --------------------------------
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
if (langid == NULL) // No Parameter was given
|
if (langid == NULL) // No Parameter was given
|
||||||
{
|
{
|
||||||
Temp0.Empty();
|
Temp0.Empty();
|
||||||
p_ProgramCfg->Read("/Local/langid",&Temp0); // >const char *langid< can't be used here
|
p_ProgramCfg->Read("/Local/langid",&Temp0); // >const char *langid< can't be used here
|
||||||
if (Temp0 == "")
|
if (Temp0 == "")
|
||||||
langid = "std"; // Standard language is "std" = english
|
langid = "std"; // Standard language is "std" = english
|
||||||
else
|
else
|
||||||
langid = Temp0;
|
langid = Temp0;
|
||||||
}
|
}
|
||||||
Temp0.Printf("%s",langid);
|
Temp0.Printf("%s",langid);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// Support the following languages (std = english)
|
// Support the following languages (std = english)
|
||||||
if ((Temp0 == "a") || (Temp0 == "cz") || (Temp0 == "de") ||
|
if ((Temp0 == "a") || (Temp0 == "cz") || (Temp0 == "de") ||
|
||||||
(Temp0 == "fr") || (Temp0 == "pl"))
|
(Temp0 == "fr") || (Temp0 == "pl"))
|
||||||
{ // The three-letter language-string codes are only valid in Windows NT and Windows 95.
|
{ // The three-letter language-string codes are only valid in Windows NT and Windows 95.
|
||||||
if (Temp0 == "cz")
|
if (Temp0 == "cz")
|
||||||
language = "czech"; // csy or czech
|
language = "czech"; // csy or czech
|
||||||
if ((Temp0 == "de") || (Temp0 == "a"))
|
if ((Temp0 == "de") || (Temp0 == "a"))
|
||||||
{
|
{
|
||||||
language = "german"; // deu or german
|
language = "german"; // deu or german
|
||||||
if (Temp0 == "a")
|
if (Temp0 == "a")
|
||||||
{ langid = Temp0 = "de"; } // Austrian = german
|
{ langid = Temp0 = "de"; } // Austrian = german
|
||||||
} // german / austrian
|
} // german / austrian
|
||||||
if (Temp0 == "fr")
|
if (Temp0 == "fr")
|
||||||
language = "french"; // fra or french
|
language = "french"; // fra or french
|
||||||
if (Temp0 == "pl")
|
if (Temp0 == "pl")
|
||||||
language = "polish"; // plk or polish
|
language = "polish"; // plk or polish
|
||||||
if (!m_locale.Init(language, langid, language)) // Don't do this for english (std)
|
if (!m_locale.Init(language, langid, language)) // Don't do this for english (std)
|
||||||
{ // You should recieve errors here for cz and pl since there is no cz/ and pl/ directory
|
{ // You should recieve errors here for cz and pl since there is no cz/ and pl/ directory
|
||||||
wxLogMessage("-E-> %s : SetLocale error : langid(%s) ; language(%s)",GetAppName().c_str(),langid,language);
|
wxLogMessage("-E-> %s : SetLocale error : langid(%s) ; language(%s)",GetAppName().c_str(),langid,language);
|
||||||
langid = "std";
|
langid = "std";
|
||||||
language = "C"; // english, english-aus , -can , -nz , -uk , -usa
|
language = "C"; // english, english-aus , -can , -nz , -uk , -usa
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // Read in Foreign language's text for GetAppName() and Help
|
{ // Read in Foreign language's text for GetAppName() and Help
|
||||||
Temp0 = GetAppName();
|
Temp0 = GetAppName();
|
||||||
Temp0 = Temp0.Lower();
|
Temp0 = Temp0.Lower();
|
||||||
m_locale.AddCatalog(Temp0.c_str());
|
m_locale.AddCatalog(Temp0.c_str());
|
||||||
m_locale.AddCatalog("help");
|
m_locale.AddCatalog("help");
|
||||||
}
|
}
|
||||||
} // Support the following languages (std = english)
|
} // Support the following languages (std = english)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
langid = "std";
|
langid = "std";
|
||||||
language = "C"; // english, english-aus , -can , -nz , -uk , -usa
|
language = "C"; // english, english-aus , -can , -nz , -uk , -usa
|
||||||
}
|
}
|
||||||
s_Language.Printf("%s",language); // language is a pointer
|
s_Language.Printf("%s",language); // language is a pointer
|
||||||
s_LangId.Printf("%s",langid); // langid is a pointer
|
s_LangId.Printf("%s",langid); // langid is a pointer
|
||||||
p_ProgramCfg->Write("/Local/language",s_Language);
|
p_ProgramCfg->Write("/Local/language",s_Language);
|
||||||
p_ProgramCfg->Write("/Local/langid",s_LangId);
|
p_ProgramCfg->Write("/Local/langid",s_LangId);
|
||||||
s_LangHelp.Printf("help.%s/%s.hhp",s_LangId.c_str(),GetAppName().c_str()); // "help.std/Garantie.hhp";
|
s_LangHelp.Printf("help.%s/%s.hhp",s_LangId.c_str(),GetAppName().c_str()); // "help.std/Garantie.hhp";
|
||||||
s_LangHelp = s_LangHelp.Lower(); // A must for Linux
|
s_LangHelp = s_LangHelp.Lower(); // A must for Linux
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
Temp0 = "NONE"; // I don't remember why I did this
|
Temp0 = "NONE"; // I don't remember why I did this
|
||||||
p_ProgramCfg->Write("/NONE",Temp0); // I don't remember why I did this
|
p_ProgramCfg->Write("/NONE",Temp0); // I don't remember why I did this
|
||||||
p_ProgramCfg->Write("/Paths/NONE",Temp0); // I don't remember why I did this
|
p_ProgramCfg->Write("/Paths/NONE",Temp0); // I don't remember why I did this
|
||||||
p_ProgramCfg->Write("/MainFrame/NONE",Temp0); // I don't remember why I did this
|
p_ProgramCfg->Write("/MainFrame/NONE",Temp0); // I don't remember why I did this
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
p_ProgramCfg->Write("/Paths/Work",wxGetCwd()); // Get current Working Path
|
p_ProgramCfg->Write("/Paths/Work",wxGetCwd()); // Get current Working Path
|
||||||
p_ProgramCfg->SetPath("/");
|
p_ProgramCfg->SetPath("/");
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// restore frame position and size, if empty start Values (1,1) and (750,600)
|
// 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),
|
int x = p_ProgramCfg->Read("/MainFrame/x", 1), y = p_ProgramCfg->Read("/MainFrame/y", 1),
|
||||||
w = p_ProgramCfg->Read("/MainFrame/w", 750), h = p_ProgramCfg->Read("/MainFrame/h", 600);
|
w = p_ProgramCfg->Read("/MainFrame/w", 750), h = p_ProgramCfg->Read("/MainFrame/h", 600);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// Create the main frame window
|
// Create the main frame window
|
||||||
Temp0.Printf("%s - %s",GetAppName().c_str(),GetVendorName().c_str());
|
Temp0.Printf("%s - %s",GetAppName().c_str(),GetVendorName().c_str());
|
||||||
frame = new MainFrame((wxFrame *) NULL,(char *) Temp0.c_str(),wxPoint(x,y),wxSize(w,h));
|
frame = new MainFrame((wxFrame *) NULL,(char *) Temp0.c_str(),wxPoint(x,y),wxSize(w,h));
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// Set the Backgroundcolour (only need if your are NOT using wxSYS_COLOUR_BACKGROUND)
|
// Set the Backgroundcolour (only need if your are NOT using wxSYS_COLOUR_BACKGROUND)
|
||||||
frame->SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BACKGROUND));
|
frame->SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BACKGROUND));
|
||||||
// frame->SetBackgroundColour(wxColour(255, 255, 255));
|
// frame->SetBackgroundColour(wxColour(255, 255, 255));
|
||||||
// frame->SetBackgroundColour(* wxWHITE);
|
// frame->SetBackgroundColour(* wxWHITE);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// Give it an icon
|
// Give it an icon
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// 12.02.2000 - Guillermo Rodriguez Garcia :
|
// 12.02.2000 - Guillermo Rodriguez Garcia :
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// This is different for Win9x and WinNT; one of them takes the first ico
|
// This is different for Win9x and WinNT; one of them takes the first ico
|
||||||
// in the .rc file, while the other takes the icon with the lowest name,
|
// in the .rc file, while the other takes the icon with the lowest name,
|
||||||
// so to be sure that it always work, put your icon the first *and* give
|
// so to be sure that it always work, put your icon the first *and* give
|
||||||
// it a name such a 'appicon' or something.
|
// it a name such a 'appicon' or something.
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// mj10777 : any special rule in Linux ?
|
// mj10777 : any special rule in Linux ?
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
frame->SetIcon(wxICON(aLogo)); // lowest name and first entry in RC File
|
frame->SetIcon(wxICON(aLogo)); // lowest name and first entry in RC File
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// Make a menubar
|
// Make a menubar
|
||||||
wxMenu *file_menu = new wxMenu;
|
wxMenu *file_menu = new wxMenu;
|
||||||
wxMenu *help_menu = new wxMenu;
|
wxMenu *help_menu = new wxMenu;
|
||||||
|
|
||||||
help_menu->Append(HELP, _("&Help"));
|
help_menu->Append(HELP, _("&Help"));
|
||||||
help_menu->AppendSeparator();
|
help_menu->AppendSeparator();
|
||||||
help_menu->Append(ABOUT, _("&About"));
|
help_menu->Append(ABOUT, _("&About"));
|
||||||
file_menu->Append(QUIT, _("E&xit"));
|
file_menu->Append(QUIT, _("E&xit"));
|
||||||
|
|
||||||
wxMenuBar *menu_bar = new wxMenuBar;
|
wxMenuBar *menu_bar = new wxMenuBar;
|
||||||
menu_bar->Append(file_menu, _("&File"));
|
menu_bar->Append(file_menu, _("&File"));
|
||||||
menu_bar->Append(help_menu, _("&Help"));
|
menu_bar->Append(help_menu, _("&Help"));
|
||||||
frame->SetMenuBar(menu_bar);
|
frame->SetMenuBar(menu_bar);
|
||||||
frame->CreateStatusBar(1);
|
frame->CreateStatusBar(1);
|
||||||
Temp0.Printf(_("%s has started !"),p_ProgramCfg->GetAppName().c_str());
|
Temp0.Printf(_("%s has started !"),p_ProgramCfg->GetAppName().c_str());
|
||||||
frame->SetStatusText(Temp0, 0);
|
frame->SetStatusText(Temp0, 0);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
int width, height;
|
int width, height;
|
||||||
frame->GetClientSize(&width, &height);
|
frame->GetClientSize(&width, &height);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
frame->p_Splitter = new DocSplitterWindow(frame,-1);
|
frame->p_Splitter = new DocSplitterWindow(frame,-1);
|
||||||
// p_Splitter->SetCursor(wxCursor(wxCURSOR_PENCIL));
|
// p_Splitter->SetCursor(wxCursor(wxCURSOR_PENCIL));
|
||||||
frame->pDoc = new MainDoc();
|
frame->pDoc = new MainDoc();
|
||||||
frame->pDoc->p_MainFrame = frame;
|
frame->pDoc->p_MainFrame = frame;
|
||||||
frame->pDoc->p_Splitter = frame->p_Splitter;
|
frame->pDoc->p_Splitter = frame->p_Splitter;
|
||||||
frame->pDoc->p_Splitter->pDoc = frame->pDoc; // ControlBase: saving the Sash
|
frame->pDoc->p_Splitter->pDoc = frame->pDoc; // ControlBase: saving the Sash
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
//-- Problem : GetClientSize(Width,Hight) are not the same as the values given in the ---
|
//-- Problem : GetClientSize(Width,Hight) are not the same as the values given in the ---
|
||||||
//-- construction of the Frame. ---
|
//-- construction of the Frame. ---
|
||||||
//-- Solved : GetClientSize is called here and the difference is noted. When the ---
|
//-- Solved : GetClientSize is called here and the difference is noted. When the ---
|
||||||
//-- Window is closed the diff. is added to the result of GetClientSize. ---
|
//-- Window is closed the diff. is added to the result of GetClientSize. ---
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
frame->GetClientSize(&frame->DiffW, &frame->DiffH); frame->DiffW-=w; frame->DiffH-=h;
|
frame->GetClientSize(&frame->DiffW, &frame->DiffH); frame->DiffW-=w; frame->DiffH-=h;
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
//-- Help : Load the help.%langid/%GetAppName().hhp (help.std/dbbrowse.hhp) file ---
|
//-- Help : Load the help.%langid/%GetAppName().hhp (help.std/dbbrowse.hhp) file ---
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
frame->p_Help = new wxHtmlHelpController(); // construct the Help System
|
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->UseConfig(p_ProgramCfg); // Don't rember what this was for
|
||||||
// You should recieve errors here for fr since there is no help.fr/ directory
|
// You should recieve errors here for fr since there is no help.fr/ directory
|
||||||
if (!frame->p_Help->AddBook(s_LangHelp)) // Use the language set
|
if (!frame->p_Help->AddBook(s_LangHelp)) // Use the language set
|
||||||
{ // You should recieve errors here for fr since there is no help.fr/ but a fr/ directory
|
{ // You should recieve errors here for fr since there is no help.fr/ but a fr/ directory
|
||||||
wxLogMessage("-E-> %s : AddBook error : s_LangHelp(%s)",GetAppName().c_str(),s_LangHelp.c_str());
|
wxLogMessage("-E-> %s : AddBook error : s_LangHelp(%s)",GetAppName().c_str(),s_LangHelp.c_str());
|
||||||
}
|
}
|
||||||
frame->pDoc->p_Help = frame->p_Help; // Save the information to the document
|
frame->pDoc->p_Help = frame->p_Help; // Save the information to the document
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
frame->Show(TRUE); // Show the frame
|
frame->Show(TRUE); // Show the frame
|
||||||
SetTopWindow(frame); // At this point the frame can be seen
|
SetTopWindow(frame); // At this point the frame can be seen
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// If you need a "Splash Screen" because of a long OnNewDocument, do it here
|
// If you need a "Splash Screen" because of a long OnNewDocument, do it here
|
||||||
if (!frame->pDoc->OnNewDocument())
|
if (!frame->pDoc->OnNewDocument())
|
||||||
frame->Close(TRUE);
|
frame->Close(TRUE);
|
||||||
// Kill a "Splash Screen" because OnNewDocument, if you have one
|
// Kill a "Splash Screen" because OnNewDocument, if you have one
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
p_ProgramCfg->Flush(TRUE); // save the configuration
|
p_ProgramCfg->Flush(TRUE); // save the configuration
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} // bool MainApp::OnInit(void)
|
} // bool MainApp::OnInit(void)
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// My frame constructor
|
// My frame constructor
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
MainFrame::MainFrame(wxFrame *frame, char *title, const wxPoint& pos, const wxSize& size):
|
MainFrame::MainFrame(wxFrame *frame, char *title, const wxPoint& pos, const wxSize& size):
|
||||||
wxFrame(frame, -1, title, pos, size)
|
wxFrame(frame, -1, title, pos, size)
|
||||||
{
|
{
|
||||||
p_Splitter = NULL; pDoc = NULL; p_Help = NULL; // Keep the Pointers clean !
|
p_Splitter = NULL; pDoc = NULL; p_Help = NULL; // Keep the Pointers clean !
|
||||||
//--- Everything else is done in MainApp::OnInit() --------------------------------------
|
//--- Everything else is done in MainApp::OnInit() --------------------------------------
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
MainFrame::~MainFrame(void)
|
MainFrame::~MainFrame(void)
|
||||||
{
|
{
|
||||||
// Close the help frame; this will cause the config data to get written.
|
// Close the help frame; this will cause the config data to get written.
|
||||||
if (p_Help->GetFrame()) // returns NULL if no help frame active
|
if (p_Help->GetFrame()) // returns NULL if no help frame active
|
||||||
p_Help->GetFrame()->Close(TRUE);
|
p_Help->GetFrame()->Close(TRUE);
|
||||||
delete p_Help; // Memory Leak
|
delete p_Help; // Memory Leak
|
||||||
p_Help = NULL;
|
p_Help = NULL;
|
||||||
// save the control's values to the config
|
// save the control's values to the config
|
||||||
if (p_ProgramCfg == NULL)
|
if (p_ProgramCfg == NULL)
|
||||||
return;
|
return;
|
||||||
// save the frame position before it is destroyed
|
// save the frame position before it is destroyed
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
GetPosition(&x, &y);
|
GetPosition(&x, &y);
|
||||||
GetClientSize(&w, &h); w -= DiffW; h -= DiffH;
|
GetClientSize(&w, &h); w -= DiffW; h -= DiffH;
|
||||||
p_ProgramCfg->Write("/MainFrame/x", (long) x);
|
p_ProgramCfg->Write("/MainFrame/x", (long) x);
|
||||||
p_ProgramCfg->Write("/MainFrame/y", (long) y);
|
p_ProgramCfg->Write("/MainFrame/y", (long) y);
|
||||||
p_ProgramCfg->Write("/MainFrame/w", (long) w);
|
p_ProgramCfg->Write("/MainFrame/w", (long) w);
|
||||||
p_ProgramCfg->Write("/MainFrame/h", (long) h);
|
p_ProgramCfg->Write("/MainFrame/h", (long) h);
|
||||||
p_ProgramCfg->Write("/MainFrame/Sash", (long) pDoc->Sash);
|
p_ProgramCfg->Write("/MainFrame/Sash", (long) pDoc->Sash);
|
||||||
// clean up: Set() returns the active config object as Get() does, but unlike
|
// clean up: Set() returns the active config object as Get() does, but unlike
|
||||||
// Get() it doesn't try to create one if there is none (definitely not what
|
// Get() it doesn't try to create one if there is none (definitely not what
|
||||||
// we want here!)
|
// we want here!)
|
||||||
// delete wxConfigBase::Set((wxConfigBase *) NULL);
|
// delete wxConfigBase::Set((wxConfigBase *) NULL);
|
||||||
p_ProgramCfg->Flush(TRUE); // saves Objekt
|
p_ProgramCfg->Flush(TRUE); // saves Objekt
|
||||||
if (pDoc) // If we have a Valid Document
|
if (pDoc) // If we have a Valid Document
|
||||||
delete pDoc; // Cleanup (MainDoc::~MainDoc)
|
delete pDoc; // Cleanup (MainDoc::~MainDoc)
|
||||||
} // MainFrame::~MainFrame(void)
|
} // MainFrame::~MainFrame(void)
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void MainFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
|
void MainFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
Close(TRUE);
|
Close(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void MainFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
|
void MainFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
wxString Temp0, Temp1;
|
wxString Temp0, Temp1;
|
||||||
Temp0.Printf(_("%s\nMark Johnson\nBerlin, Germany\nmj10777@gmx.net\n (c) 2000"),p_ProgramCfg->GetAppName().c_str());
|
Temp0.Printf(_("%s\nMark Johnson\nBerlin, Germany\nmj10777@gmx.net\n (c) 2000"),p_ProgramCfg->GetAppName().c_str());
|
||||||
Temp1.Printf(_("About %s"),p_ProgramCfg->GetAppName().c_str());
|
Temp1.Printf(_("About %s"),p_ProgramCfg->GetAppName().c_str());
|
||||||
wxMessageDialog dialog(this, Temp0,Temp1,wxOK|wxCANCEL);
|
wxMessageDialog dialog(this, Temp0,Temp1,wxOK|wxCANCEL);
|
||||||
dialog.ShowModal();
|
dialog.ShowModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void MainFrame::OnHelp(wxCommandEvent& WXUNUSED(event))
|
void MainFrame::OnHelp(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
p_Help->Display("Main page");
|
p_Help->Display("Main page");
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
|
@@ -12,34 +12,37 @@
|
|||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class MainFrame: public wxFrame
|
class MainFrame: public wxFrame
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MainFrame(wxFrame *frame, char *title, const wxPoint& pos, const wxSize& size);
|
MainFrame(wxFrame *frame, char *title, const wxPoint& pos, const wxSize& size);
|
||||||
~MainFrame(void);
|
~MainFrame(void);
|
||||||
|
|
||||||
|
public:
|
||||||
|
// menu callbacks
|
||||||
|
void OnAbout(wxCommandEvent& event);
|
||||||
|
void OnHelp(wxCommandEvent& event);
|
||||||
|
void OnQuit(wxCommandEvent& event);
|
||||||
|
//--------------------------------------------------------------------------------------
|
||||||
|
int DiffW, DiffH; // Needed the saving of Frame size
|
||||||
|
//--------------------------------------------------------------------------------------
|
||||||
|
DocSplitterWindow *p_Splitter; // for Document Views
|
||||||
|
MainDoc *pDoc; // Self made Document
|
||||||
|
wxHtmlHelpController *p_Help; // Help System
|
||||||
|
|
||||||
public:
|
//--------------------------------------------------------------------------------------
|
||||||
// menu callbacks
|
DECLARE_EVENT_TABLE()
|
||||||
void OnAbout(wxCommandEvent& event);
|
|
||||||
void OnHelp(wxCommandEvent& event);
|
|
||||||
void OnQuit(wxCommandEvent& event);
|
|
||||||
//--------------------------------------------------------------------------------------
|
|
||||||
int DiffW, DiffH; // Needed the saving of Frame size
|
|
||||||
//--------------------------------------------------------------------------------------
|
|
||||||
DocSplitterWindow *p_Splitter; // for Document Views
|
|
||||||
MainDoc *pDoc; // Self made Document
|
|
||||||
wxHtmlHelpController *p_Help; // Help System
|
|
||||||
//--------------------------------------------------------------------------------------
|
|
||||||
DECLARE_EVENT_TABLE()
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// Define a new application type
|
// Define a new application type
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class MainApp: public wxApp
|
class MainApp: public wxApp
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MainFrame *frame; // The one and only MainFrame
|
MainFrame *frame; // The one and only MainFrame
|
||||||
bool OnInit(void); // Programmstart
|
bool OnInit(void); // Programmstart
|
||||||
wxLocale m_locale; // locale we'll be using and language support - MUST be here !
|
wxLocale m_locale; // locale we'll be using and language support - MUST be here !
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// ID for the menu quit command
|
// ID for the menu quit command
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
|
@@ -31,28 +31,29 @@
|
|||||||
#include "std.h" // sorgsam Pflegen !
|
#include "std.h" // sorgsam Pflegen !
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
BEGIN_EVENT_TABLE(DBGrid, wxGrid)
|
BEGIN_EVENT_TABLE(DBGrid, wxGrid)
|
||||||
EVT_MOTION (DBGrid::OnMouseMove)
|
EVT_MOTION (DBGrid::OnMouseMove)
|
||||||
// DBGrid
|
// DBGrid
|
||||||
// ------------
|
// ------------
|
||||||
EVT_GRID_CELL_CHANGE( DBGrid::OnCellChange )
|
EVT_GRID_CELL_CHANGE( DBGrid::OnCellChange )
|
||||||
EVT_GRID_CELL_LEFT_CLICK( DBGrid::OnCellLeftClick )
|
EVT_GRID_CELL_LEFT_CLICK( DBGrid::OnCellLeftClick )
|
||||||
EVT_GRID_CELL_LEFT_DCLICK( DBGrid::OnCellLeftDClick )
|
EVT_GRID_CELL_LEFT_DCLICK( DBGrid::OnCellLeftDClick )
|
||||||
EVT_GRID_CELL_RIGHT_CLICK( DBGrid::OnCellRightClick )
|
EVT_GRID_CELL_RIGHT_CLICK( DBGrid::OnCellRightClick )
|
||||||
EVT_GRID_CELL_RIGHT_DCLICK( DBGrid::OnCellRightDClick )
|
EVT_GRID_CELL_RIGHT_DCLICK( DBGrid::OnCellRightDClick )
|
||||||
// EVT_GRID_COL_SIZE( DBGrid::OnColSize )
|
// EVT_GRID_COL_SIZE( DBGrid::OnColSize )
|
||||||
// EVT_GRID_ROW_SIZE( DBGrid::OnRowSize )
|
// EVT_GRID_ROW_SIZE( DBGrid::OnRowSize )
|
||||||
EVT_GRID_EDITOR_SHOWN( DBGrid::OnEditorShown )
|
EVT_GRID_EDITOR_SHOWN( DBGrid::OnEditorShown )
|
||||||
EVT_GRID_EDITOR_HIDDEN( DBGrid::OnEditorHidden )
|
EVT_GRID_EDITOR_HIDDEN( DBGrid::OnEditorHidden )
|
||||||
EVT_GRID_LABEL_LEFT_CLICK( DBGrid::OnLabelLeftClick )
|
EVT_GRID_LABEL_LEFT_CLICK( DBGrid::OnLabelLeftClick )
|
||||||
EVT_GRID_LABEL_LEFT_DCLICK( DBGrid::OnLabelLeftDClick )
|
EVT_GRID_LABEL_LEFT_DCLICK( DBGrid::OnLabelLeftDClick )
|
||||||
EVT_GRID_LABEL_RIGHT_CLICK( DBGrid::OnLabelRightClick )
|
EVT_GRID_LABEL_RIGHT_CLICK( DBGrid::OnLabelRightClick )
|
||||||
EVT_GRID_LABEL_RIGHT_DCLICK( DBGrid::OnLabelRightDClick )
|
EVT_GRID_LABEL_RIGHT_DCLICK( DBGrid::OnLabelRightDClick )
|
||||||
EVT_GRID_RANGE_SELECT( DBGrid::OnRangeSelected )
|
EVT_GRID_RANGE_SELECT( DBGrid::OnRangeSelected )
|
||||||
EVT_GRID_ROW_SIZE( DBGrid::OnRowSize )
|
EVT_GRID_ROW_SIZE( DBGrid::OnRowSize )
|
||||||
EVT_GRID_SELECT_CELL( DBGrid::OnSelectCell )
|
EVT_GRID_SELECT_CELL( DBGrid::OnSelectCell )
|
||||||
EVT_MENU(GRID_EDIT,DBGrid::OnModusEdit)
|
EVT_MENU(GRID_EDIT,DBGrid::OnModusEdit)
|
||||||
EVT_MENU(GRID_BROWSE,DBGrid::OnModusBrowse)
|
EVT_MENU(GRID_BROWSE,DBGrid::OnModusBrowse)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// wxListCtrl(parent, id, pos, size, style)
|
// wxListCtrl(parent, id, pos, size, style)
|
||||||
// wxGrid(parent,-1,wxPoint( 0, 0 ), wxSize( 400, 300 ) );
|
// wxGrid(parent,-1,wxPoint( 0, 0 ), wxSize( 400, 300 ) );
|
||||||
@@ -62,340 +63,364 @@ END_EVENT_TABLE()
|
|||||||
// DBGrid::DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size):
|
// DBGrid::DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size):
|
||||||
// wxGrid(parent, id, pos, size)
|
// wxGrid(parent, id, pos, size)
|
||||||
DBGrid::DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size, long style):
|
DBGrid::DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size, long style):
|
||||||
wxGrid(parent, id, pos, size, style)
|
wxGrid(parent, id, pos, size, style)
|
||||||
{
|
{
|
||||||
b_EditModus = FALSE;
|
b_EditModus = FALSE;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
popupMenu1 = new wxMenu("");
|
popupMenu1 = new wxMenu("");
|
||||||
popupMenu1->Append(GRID_EDIT, _("Edit Modus"));
|
popupMenu1->Append(GRID_EDIT, _("Edit Modus"));
|
||||||
popupMenu2 = new wxMenu("");
|
popupMenu2 = new wxMenu("");
|
||||||
popupMenu2->Append(GRID_BROWSE, _("Browse Modus"));
|
popupMenu2->Append(GRID_BROWSE, _("Browse Modus"));
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
DBGrid::~DBGrid()
|
DBGrid::~DBGrid()
|
||||||
{
|
{
|
||||||
delete popupMenu1;
|
delete popupMenu1;
|
||||||
delete popupMenu2;
|
delete popupMenu2;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
int DBGrid::OnTableView(wxString Table)
|
int DBGrid::OnTableView(wxString Table)
|
||||||
{
|
{
|
||||||
wxStopWatch sw;
|
wxStopWatch sw;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
int i=0,x,y,z, ValidTable=0;
|
int i=0,x,y,z, ValidTable=0;
|
||||||
wxString Temp0;
|
wxString Temp0;
|
||||||
wxBeginBusyCursor();
|
wxBeginBusyCursor();
|
||||||
SetDefaultCellFont(* pDoc->ft_Doc);
|
SetDefaultCellFont(* pDoc->ft_Doc);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
ct_BrowserDB = (db_Br+i_Which)->ct_BrowserDB; // Get the DSN Pointer
|
ct_BrowserDB = (db_Br+i_Which)->ct_BrowserDB; // Get the DSN Pointer
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
if (ct_BrowserDB) // Valid pointer (!= NULL) ?
|
if (ct_BrowserDB) // Valid pointer (!= NULL) ?
|
||||||
{ // Pointer is Valid, use the wxDatabase Information
|
{ // Pointer is Valid, use the wxDatabase Information
|
||||||
for (x=0;x<ct_BrowserDB->numTables;x++) // go through the Tables
|
for (x=0;x<ct_BrowserDB->numTables;x++) // go through the Tables
|
||||||
{
|
{
|
||||||
if (!wxStrcmp((ct_BrowserDB->pTableInf+x)->tableName,Table)) // is this our Table ?
|
if (!wxStrcmp((ct_BrowserDB->pTableInf+x)->tableName,Table)) // is this our Table ?
|
||||||
{ // Yes, the Data of this Table shall be put into the Grid
|
{ // Yes, the Data of this Table shall be put into the Grid
|
||||||
ValidTable = x; // Save the Tablenumber
|
ValidTable = x; // Save the Tablenumber
|
||||||
(db_Br+i_Which)->OnSelect(Table,FALSE); // Select * from "table"
|
(db_Br+i_Which)->OnSelect(Table,FALSE); // Select * from "table"
|
||||||
// Set the local Pointer to the Column Information we are going to use
|
// Set the local Pointer to the Column Information we are going to use
|
||||||
(db_Br+i_Which)->cl_BrowserDB = (ct_BrowserDB->pTableInf+x)->pColInf;
|
(db_Br+i_Which)->cl_BrowserDB = (ct_BrowserDB->pTableInf+x)->pColInf;
|
||||||
if ((ct_BrowserDB->pTableInf+x)->pColInf) // Valid pointer (!= NULL) ?
|
if ((ct_BrowserDB->pTableInf+x)->pColInf) // Valid pointer (!= NULL) ?
|
||||||
{ // Pointer is Valid, Column Informationen sind Vorhanden
|
{ // Pointer is Valid, Column Informationen sind Vorhanden
|
||||||
i = (db_Br+i_Which)->i_Records; // How many Records are there
|
i = (db_Br+i_Which)->i_Records; // How many Records are there
|
||||||
(db_Br+i_Which)->i_Which = ValidTable; // Still used ???? mj10777
|
(db_Br+i_Which)->i_Which = ValidTable; // Still used ???? mj10777
|
||||||
if (i == 0) // If the Table is empty, then show one empty row
|
if (i == 0) // If the Table is empty, then show one empty row
|
||||||
i++;
|
i++;
|
||||||
// wxLogMessage(_("\n-I-> DBGrid::OnTableView() : Vor CreateGrid"));
|
// wxLogMessage(_("\n-I-> DBGrid::OnTableView() : Vor CreateGrid"));
|
||||||
CreateGrid(i,(ct_BrowserDB->pTableInf+x)->numCols); // Records , Columns
|
CreateGrid(i,(ct_BrowserDB->pTableInf+x)->numCols); // Records , Columns
|
||||||
for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++) // Loop through the Fields
|
for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++) // Loop through the Fields
|
||||||
{ // The Field / Column name is used here as Row Titel
|
{ // The Field / Column name is used here as Row Titel
|
||||||
SetColLabelValue(y,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName);
|
SetColLabelValue(y,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName);
|
||||||
SetColSize(y,95);
|
SetColSize(y,95);
|
||||||
} // for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++)
|
} // for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++)
|
||||||
SetColSize(((ct_BrowserDB->pTableInf+x)->numCols-1),120); // Make the last Column Wider
|
SetColSize(((ct_BrowserDB->pTableInf+x)->numCols-1),120); // Make the last Column Wider
|
||||||
// The Grid has been created, now fill it
|
// The Grid has been created, now fill it
|
||||||
for (z=0;z<(db_Br+i_Which)->i_Records;z++) // Loop through the Records
|
for (z=0;z<(db_Br+i_Which)->i_Records;z++) // Loop through the Records
|
||||||
{
|
{
|
||||||
Temp0.Printf("%06d",z+1); SetRowLabelValue(z,Temp0); // Set Row Lable Value
|
Temp0.Printf("%06d",z+1); SetRowLabelValue(z,Temp0); // Set Row Lable Value
|
||||||
(db_Br+i_Which)->OnGetNext((ct_BrowserDB->pTableInf+ValidTable)->numCols,FALSE);
|
(db_Br+i_Which)->OnGetNext((ct_BrowserDB->pTableInf+ValidTable)->numCols,FALSE);
|
||||||
for (y=0;y<(ct_BrowserDB->pTableInf+ValidTable)->numCols;y++) // Loop through the Fields
|
for (y=0;y<(ct_BrowserDB->pTableInf+ValidTable)->numCols;y++) // Loop through the Fields
|
||||||
{ // BrowserDB::OnGetNext Formats the field Value into tablename
|
{ // BrowserDB::OnGetNext Formats the field Value into tablename
|
||||||
SetCellValue(z, y,((db_Br+i_Which)->cl_BrowserDB+y)->tableName);
|
SetCellValue(z, y,((db_Br+i_Which)->cl_BrowserDB+y)->tableName);
|
||||||
}
|
}
|
||||||
if (z % 50 == 0)
|
if (z % 50 == 0)
|
||||||
{
|
{
|
||||||
Temp0.Printf(_("-I-> DBGrid::OnTableView(%s) - Record %6d (from %d) has been read."),Table.c_str(),z,(db_Br+i_Which)->i_Records);
|
Temp0.Printf(_("-I-> DBGrid::OnTableView(%s) - Record %6d (from %d) has been read."),Table.c_str(),z,(db_Br+i_Which)->i_Records);
|
||||||
pDoc->p_MainFrame->SetStatusText(Temp0, 0);
|
pDoc->p_MainFrame->SetStatusText(Temp0, 0);
|
||||||
}
|
}
|
||||||
} // for (z=0;z<(db_Br+i_Which)->i_Records;z++)
|
} // for (z=0;z<(db_Br+i_Which)->i_Records;z++)
|
||||||
Temp0.Printf(_("-I-> DBGrid::OnTableView(%s) - %6d Records have been read. - Time needed : %ld ms"),Table.c_str(),z,sw.Time());
|
Temp0.Printf(_("-I-> DBGrid::OnTableView(%s) - %6d Records have been read. - Time needed : %ld ms"),Table.c_str(),z,sw.Time());
|
||||||
wxLogMessage(Temp0);
|
wxLogMessage(Temp0);
|
||||||
pDoc->p_MainFrame->SetStatusText(Temp0, 0);
|
pDoc->p_MainFrame->SetStatusText(Temp0, 0);
|
||||||
// The Grid has been filled, now leave
|
// The Grid has been filled, now leave
|
||||||
goto Weiter;
|
goto Weiter;
|
||||||
} // if ((ct_BrowserDB->pTableInf+x)->pColInf)
|
} // if ((ct_BrowserDB->pTableInf+x)->pColInf)
|
||||||
|
else
|
||||||
|
wxLogMessage(_("\n-E-> DBGrid::OnTableView() : Invalid Column Pointer : Failed"));
|
||||||
|
} // if ((ct_BrowserDB->pTableInf+x)->tableType == "TABLE")
|
||||||
|
} // for (x=0;x<ct_BrowserDB->numTables;x++)
|
||||||
|
} // if (ct_BrowserDB)
|
||||||
else
|
else
|
||||||
wxLogMessage(_("\n-E-> DBGrid::OnTableView() : Invalid Column Pointer : Failed"));
|
wxLogMessage(_("\n-E-> DBGrid::OnTableView() : Invalid DSN Pointer : Failed"));
|
||||||
} // if ((ct_BrowserDB->pTableInf+x)->tableType == "TABLE")
|
//---------------------------------------------------------------------------------------
|
||||||
} // for (x=0;x<ct_BrowserDB->numTables;x++)
|
Weiter:
|
||||||
} // if (ct_BrowserDB)
|
EnableEditing(b_EditModus); // Deactivate in-place Editing
|
||||||
else
|
wxEndBusyCursor();
|
||||||
wxLogMessage(_("\n-E-> DBGrid::OnTableView() : Invalid DSN Pointer : Failed"));
|
//---------------------------------------------------------------------------------------
|
||||||
//---------------------------------------------------------------------------------------
|
wxLogMessage(_("-I-> DBGrid::OnTableView() - End"));
|
||||||
Weiter:
|
return 0;
|
||||||
EnableEditing(b_EditModus); // Deactivate in-place Editing
|
|
||||||
wxEndBusyCursor();
|
|
||||||
//---------------------------------------------------------------------------------------
|
|
||||||
wxLogMessage(_("-I-> DBGrid::OnTableView() - End"));
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnModusEdit(wxCommandEvent& event)
|
void DBGrid::OnModusEdit(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
b_EditModus = TRUE; // Needed by PopupMenu
|
b_EditModus = TRUE; // Needed by PopupMenu
|
||||||
EnableEditing(b_EditModus); // Activate in-place Editing
|
EnableEditing(b_EditModus); // Activate in-place Editing
|
||||||
UpdateDimensions(); // Redraw the Grid
|
UpdateDimensions(); // Redraw the Grid
|
||||||
// wxLogMessage(_("-I-> DBGrid::OnModusEdit() - End"));
|
// wxLogMessage(_("-I-> DBGrid::OnModusEdit() - End"));
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnModusBrowse(wxCommandEvent& event)
|
void DBGrid::OnModusBrowse(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
b_EditModus = FALSE; // Needed by PopupMenu
|
b_EditModus = FALSE; // Needed by PopupMenu
|
||||||
EnableEditing(b_EditModus); // Deactivate in-place Editing
|
EnableEditing(b_EditModus); // Deactivate in-place Editing
|
||||||
UpdateDimensions(); // Redraw the Grid
|
UpdateDimensions(); // Redraw the Grid
|
||||||
// wxLogMessage(_("-I-> DBGrid::OnModusBrowse() - End"));
|
// wxLogMessage(_("-I-> DBGrid::OnModusBrowse() - End"));
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnEditorShown( wxGridEvent& ev )
|
void DBGrid::OnEditorShown( wxGridEvent& ev )
|
||||||
{
|
{
|
||||||
// wxLogMessage(_("-I-> DBGrid::OnEditorShown() - End"));
|
// wxLogMessage(_("-I-> DBGrid::OnEditorShown() - End"));
|
||||||
ev.Skip();
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnEditorHidden( wxGridEvent& ev )
|
void DBGrid::OnEditorHidden( wxGridEvent& ev )
|
||||||
{
|
{
|
||||||
// wxLogMessage(_("-I-> DBGrid::OnEditorHidden() - End"));
|
// wxLogMessage(_("-I-> DBGrid::OnEditorHidden() - End"));
|
||||||
ev.Skip();
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnSelectCell( wxGridEvent& ev )
|
void DBGrid::OnSelectCell( wxGridEvent& ev )
|
||||||
{
|
{
|
||||||
logBuf = "";
|
logBuf = "";
|
||||||
logBuf << "Selected cell at row " << ev.GetRow()
|
logBuf << "Selected cell at row " << ev.GetRow()
|
||||||
<< " col " << ev.GetCol();
|
<< " col " << ev.GetCol();
|
||||||
wxLogMessage( "%s", logBuf.c_str() );
|
wxLogMessage( "%s", logBuf.c_str() );
|
||||||
// you must call Skip() if you want the default processing
|
// you must call Skip() if you want the default processing
|
||||||
// to occur in wxGrid
|
// to occur in wxGrid
|
||||||
ev.Skip();
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnMouseMove(wxMouseEvent &event)
|
void DBGrid::OnMouseMove(wxMouseEvent &event)
|
||||||
{
|
{
|
||||||
MousePos = event.GetPosition();
|
MousePos = event.GetPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnLabelLeftClick( wxGridEvent& ev )
|
void DBGrid::OnLabelLeftClick( wxGridEvent& ev )
|
||||||
{
|
{
|
||||||
logBuf = "DBGrid::OnLabelLeftClick : ";
|
logBuf = "DBGrid::OnLabelLeftClick : ";
|
||||||
if ( ev.GetRow() != -1 )
|
if ( ev.GetRow() != -1 )
|
||||||
{
|
{
|
||||||
logBuf << "row label " << ev.GetRow();
|
logBuf << "row label " << ev.GetRow();
|
||||||
}
|
}
|
||||||
else if ( ev.GetCol() != -1 )
|
else if ( ev.GetCol() != -1 )
|
||||||
{
|
{
|
||||||
logBuf << "col label " << ev.GetCol();
|
logBuf << "col label " << ev.GetCol();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
logBuf << "corner label";
|
logBuf << "corner label";
|
||||||
}
|
}
|
||||||
if ( ev.ShiftDown() )
|
if ( ev.ShiftDown() )
|
||||||
logBuf << " (shift down)";
|
logBuf << " (shift down)";
|
||||||
// wxLogMessage( "%s", logBuf.c_str() );
|
|
||||||
logBuf += "\n";
|
// wxLogMessage( "%s", logBuf.c_str() );
|
||||||
wxLogMessage(logBuf.c_str());
|
logBuf += "\n";
|
||||||
ev.Skip();
|
wxLogMessage(logBuf.c_str());
|
||||||
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnLabelRightClick( wxGridEvent& ev )
|
void DBGrid::OnLabelRightClick( wxGridEvent& ev )
|
||||||
{
|
{
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
if (b_EditModus)
|
if (b_EditModus)
|
||||||
PopupMenu(popupMenu2,MousePos.x,MousePos.y);
|
PopupMenu(popupMenu2,MousePos.x,MousePos.y);
|
||||||
else
|
else
|
||||||
PopupMenu(popupMenu1,MousePos.x,MousePos.y);
|
PopupMenu(popupMenu1,MousePos.x,MousePos.y);
|
||||||
//-------------------
|
//-------------------
|
||||||
logBuf = "DBGrid::OnLabelRightClick : ";
|
logBuf = "DBGrid::OnLabelRightClick : ";
|
||||||
if ( ev.GetRow() != -1 )
|
if ( ev.GetRow() != -1 )
|
||||||
{
|
{
|
||||||
logBuf << "row label " << ev.GetRow();
|
logBuf << "row label " << ev.GetRow();
|
||||||
}
|
}
|
||||||
else if ( ev.GetCol() != -1 )
|
else if ( ev.GetCol() != -1 )
|
||||||
{
|
{
|
||||||
logBuf << "col label " << ev.GetCol();
|
logBuf << "col label " << ev.GetCol();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
logBuf << "corner label";
|
logBuf << "corner label";
|
||||||
}
|
}
|
||||||
if ( ev.ShiftDown() )
|
if ( ev.ShiftDown() )
|
||||||
logBuf << " (shift down)";
|
logBuf << " (shift down)";
|
||||||
// wxLogMessage( "%s", logBuf.c_str() );
|
|
||||||
logBuf += "\n";
|
// wxLogMessage( "%s", logBuf.c_str() );
|
||||||
wxLogMessage(logBuf.c_str());
|
logBuf += "\n";
|
||||||
ev.Skip();
|
wxLogMessage(logBuf.c_str());
|
||||||
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnLabelLeftDClick( wxGridEvent& ev )
|
void DBGrid::OnLabelLeftDClick( wxGridEvent& ev )
|
||||||
{
|
{
|
||||||
logBuf = "DBGrid::OnLabelLeftDClick : ";
|
logBuf = "DBGrid::OnLabelLeftDClick : ";
|
||||||
if ( ev.GetRow() != -1 )
|
if ( ev.GetRow() != -1 )
|
||||||
{
|
{
|
||||||
logBuf << "row label " << ev.GetRow();
|
logBuf << "row label " << ev.GetRow();
|
||||||
}
|
}
|
||||||
else if ( ev.GetCol() != -1 )
|
else if ( ev.GetCol() != -1 )
|
||||||
{
|
{
|
||||||
logBuf << "col label " << ev.GetCol();
|
logBuf << "col label " << ev.GetCol();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
logBuf << "corner label";
|
logBuf << "corner label";
|
||||||
}
|
}
|
||||||
if ( ev.ShiftDown() )
|
if ( ev.ShiftDown() )
|
||||||
logBuf << " (shift down)";
|
logBuf << " (shift down)";
|
||||||
// wxLogMessage( "%s", logBuf.c_str() );
|
|
||||||
logBuf += "\n";
|
// wxLogMessage( "%s", logBuf.c_str() );
|
||||||
wxLogMessage(logBuf.c_str());
|
logBuf += "\n";
|
||||||
ev.Skip();
|
wxLogMessage(logBuf.c_str());
|
||||||
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnLabelRightDClick( wxGridEvent& ev )
|
void DBGrid::OnLabelRightDClick( wxGridEvent& ev )
|
||||||
{
|
{
|
||||||
logBuf = "DBGrid::OnLabelRightDClick : ";
|
logBuf = "DBGrid::OnLabelRightDClick : ";
|
||||||
if ( ev.GetRow() != -1 )
|
if ( ev.GetRow() != -1 )
|
||||||
{
|
{
|
||||||
logBuf << "row label " << ev.GetRow();
|
logBuf << "row label " << ev.GetRow();
|
||||||
}
|
}
|
||||||
else if ( ev.GetCol() != -1 )
|
else if ( ev.GetCol() != -1 )
|
||||||
{
|
{
|
||||||
logBuf << "col label " << ev.GetCol();
|
logBuf << "col label " << ev.GetCol();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
logBuf << "corner label";
|
logBuf << "corner label";
|
||||||
}
|
}
|
||||||
if ( ev.ShiftDown() )
|
if ( ev.ShiftDown() )
|
||||||
logBuf << " (shift down)";
|
logBuf << " (shift down)";
|
||||||
// wxLogMessage( "%s", logBuf.c_str() );
|
// wxLogMessage( "%s", logBuf.c_str() );
|
||||||
logBuf += "\n";
|
logBuf += "\n";
|
||||||
wxLogMessage(logBuf.c_str());
|
wxLogMessage(logBuf.c_str());
|
||||||
ev.Skip();
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnCellLeftClick( wxGridEvent& ev )
|
void DBGrid::OnCellLeftClick( wxGridEvent& ev )
|
||||||
{
|
{
|
||||||
logBuf = "DBGrid::OnCellLeftClick : ";
|
logBuf = "DBGrid::OnCellLeftClick : ";
|
||||||
logBuf << "Cell at row " << ev.GetRow()
|
logBuf << "Cell at row " << ev.GetRow()
|
||||||
<< " col " << ev.GetCol();
|
<< " col " << ev.GetCol();
|
||||||
// wxLogMessage( "%s", logBuf.c_str() );
|
// wxLogMessage( "%s", logBuf.c_str() );
|
||||||
// wxMessageBox(logBuf);
|
// wxMessageBox(logBuf);
|
||||||
logBuf += "\n";
|
logBuf += "\n";
|
||||||
wxLogMessage(logBuf.c_str());
|
wxLogMessage(logBuf.c_str());
|
||||||
// you must call event skip if you want default grid processing
|
// you must call event skip if you want default grid processing
|
||||||
// (cell highlighting etc.)
|
// (cell highlighting etc.)
|
||||||
//
|
//
|
||||||
ev.Skip();
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnCellRightClick( wxGridEvent& ev )
|
void DBGrid::OnCellRightClick( wxGridEvent& ev )
|
||||||
{
|
{
|
||||||
logBuf = "DBGrid::OnCellRightClick : ";
|
logBuf = "DBGrid::OnCellRightClick : ";
|
||||||
logBuf << "Cell at row " << ev.GetRow()
|
logBuf << "Cell at row " << ev.GetRow()
|
||||||
<< " col " << ev.GetCol();
|
<< " col " << ev.GetCol();
|
||||||
// wxLogMessage( "%s", logBuf.c_str() );
|
// wxLogMessage( "%s", logBuf.c_str() );
|
||||||
// wxMessageBox(logBuf);
|
// wxMessageBox(logBuf);
|
||||||
logBuf += "\n";
|
logBuf += "\n";
|
||||||
wxLogMessage(logBuf.c_str());
|
wxLogMessage(logBuf.c_str());
|
||||||
// you must call event skip if you want default grid processing
|
// you must call event skip if you want default grid processing
|
||||||
// (cell highlighting etc.)
|
// (cell highlighting etc.)
|
||||||
//
|
//
|
||||||
ev.Skip();
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnCellLeftDClick( wxGridEvent& ev )
|
void DBGrid::OnCellLeftDClick( wxGridEvent& ev )
|
||||||
{
|
{
|
||||||
logBuf = "DBGrid::OnCellLeftDClick : ";
|
logBuf = "DBGrid::OnCellLeftDClick : ";
|
||||||
logBuf << "Cell at row " << ev.GetRow()
|
logBuf << "Cell at row " << ev.GetRow()
|
||||||
<< " col " << ev.GetCol();
|
<< " col " << ev.GetCol();
|
||||||
// wxLogMessage( "%s", logBuf.c_str() );
|
// wxLogMessage( "%s", logBuf.c_str() );
|
||||||
// wxMessageBox(logBuf);
|
// wxMessageBox(logBuf);
|
||||||
logBuf += "\n";
|
logBuf += "\n";
|
||||||
wxLogMessage(logBuf.c_str());
|
wxLogMessage(logBuf.c_str());
|
||||||
// you must call event skip if you want default grid processing
|
// you must call event skip if you want default grid processing
|
||||||
// (cell highlighting etc.)
|
// (cell highlighting etc.)
|
||||||
//
|
//
|
||||||
ev.Skip();
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnCellRightDClick( wxGridEvent& ev )
|
void DBGrid::OnCellRightDClick( wxGridEvent& ev )
|
||||||
{
|
{
|
||||||
logBuf = "DBGrid::OnCellRightDClick : ";
|
logBuf = "DBGrid::OnCellRightDClick : ";
|
||||||
logBuf << "Cell at row " << ev.GetRow()
|
logBuf << "Cell at row " << ev.GetRow()
|
||||||
<< " col " << ev.GetCol();
|
<< " col " << ev.GetCol();
|
||||||
// wxLogMessage( "%s", logBuf.c_str() );
|
// wxLogMessage( "%s", logBuf.c_str() );
|
||||||
// wxMessageBox(logBuf);
|
// wxMessageBox(logBuf);
|
||||||
logBuf += "\n";
|
logBuf += "\n";
|
||||||
wxLogMessage(logBuf.c_str());
|
wxLogMessage(logBuf.c_str());
|
||||||
// you must call event skip if you want default grid processing
|
// you must call event skip if you want default grid processing
|
||||||
// (cell highlighting etc.)
|
// (cell highlighting etc.)
|
||||||
//
|
//
|
||||||
ev.Skip();
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnCellChange( wxGridEvent& ev )
|
void DBGrid::OnCellChange( wxGridEvent& ev )
|
||||||
{
|
{
|
||||||
logBuf = "DBGrid::OnCellChange : ";
|
logBuf = "DBGrid::OnCellChange : ";
|
||||||
logBuf << "Cell at row " << ev.GetRow()
|
logBuf << "Cell at row " << ev.GetRow()
|
||||||
<< " col " << ev.GetCol();
|
<< " col " << ev.GetCol();
|
||||||
// wxLogMessage( "%s", logBuf.c_str() );
|
// wxLogMessage( "%s", logBuf.c_str() );
|
||||||
// wxMessageBox(logBuf);
|
// wxMessageBox(logBuf);
|
||||||
logBuf += "\n";
|
logBuf += "\n";
|
||||||
wxLogMessage(logBuf.c_str());
|
wxLogMessage(logBuf.c_str());
|
||||||
// you must call event skip if you want default grid processing
|
// you must call event skip if you want default grid processing
|
||||||
// (cell highlighting etc.)
|
// (cell highlighting etc.)
|
||||||
//
|
//
|
||||||
ev.Skip();
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnRowSize( wxGridSizeEvent& ev )
|
void DBGrid::OnRowSize( wxGridSizeEvent& ev )
|
||||||
{
|
{
|
||||||
logBuf = "DBGrid::OnRowSize : ";
|
logBuf = "DBGrid::OnRowSize : ";
|
||||||
logBuf << "Resized row " << ev.GetRowOrCol();
|
logBuf << "Resized row " << ev.GetRowOrCol();
|
||||||
// wxLogMessage( "%s", logBuf.c_str() );
|
// wxLogMessage( "%s", logBuf.c_str() );
|
||||||
logBuf += "\n";
|
logBuf += "\n";
|
||||||
wxLogMessage(logBuf.c_str());
|
wxLogMessage(logBuf.c_str());
|
||||||
ev.Skip();
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnColSize( wxGridSizeEvent& ev )
|
void DBGrid::OnColSize( wxGridSizeEvent& ev )
|
||||||
{
|
{
|
||||||
logBuf = "DBGrid::OnColSize : ";
|
logBuf = "DBGrid::OnColSize : ";
|
||||||
logBuf << "Resized col " << ev.GetRowOrCol();
|
logBuf << "Resized col " << ev.GetRowOrCol();
|
||||||
// wxLogMessage( "%s", logBuf.c_str() );
|
// wxLogMessage( "%s", logBuf.c_str() );
|
||||||
logBuf += "\n";
|
logBuf += "\n";
|
||||||
wxLogMessage(logBuf.c_str());
|
wxLogMessage(logBuf.c_str());
|
||||||
ev.Skip();
|
ev.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBGrid::OnRangeSelected( wxGridRangeSelectEvent& ev )
|
void DBGrid::OnRangeSelected( wxGridRangeSelectEvent& ev )
|
||||||
{
|
{
|
||||||
logBuf = "DBGrid::OnRangeSelected : ";
|
logBuf = "DBGrid::OnRangeSelected : ";
|
||||||
logBuf << "Selected cells from row " << ev.GetTopRow()
|
logBuf << "Selected cells from row " << ev.GetTopRow()
|
||||||
<< " col " << ev.GetLeftCol()
|
<< " col " << ev.GetLeftCol()
|
||||||
<< " to row " << ev.GetBottomRow()
|
<< " to row " << ev.GetBottomRow()
|
||||||
<< " col " << ev.GetRightCol();
|
<< " col " << ev.GetRightCol();
|
||||||
logBuf += "\n";
|
logBuf += "\n";
|
||||||
// wxLogMessage( "%s", logBuf.c_str() );
|
// wxLogMessage( "%s", logBuf.c_str() );
|
||||||
wxLogMessage(logBuf.c_str());
|
wxLogMessage(logBuf.c_str());
|
||||||
ev.Skip();
|
ev.Skip();
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
|
@@ -9,57 +9,61 @@
|
|||||||
// RCS-ID: $Id$
|
// RCS-ID: $Id$
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
#if !defined(wxUSE_NEW_GRID) || !(wxUSE_NEW_GRID)
|
#if !defined(wxUSE_NEW_GRID) || !(wxUSE_NEW_GRID)
|
||||||
#error "DBGrid requires the new wxGrid class"
|
#error "DBGrid requires the new wxGrid class"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class MainDoc;
|
class MainDoc;
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class DBGrid: public wxGrid
|
class DBGrid: public wxGrid
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size, long style);
|
DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size, long style);
|
||||||
virtual ~DBGrid();
|
virtual ~DBGrid();
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
int i_TabArt; // Tab = 0 ; Page = 1;
|
int i_TabArt; // Tab = 0 ; Page = 1;
|
||||||
int i_ViewNr; // View Nummer in Tab / Page
|
int i_ViewNr; // View Nummer in Tab / Page
|
||||||
int i_Which; // Which View, Database is this/using
|
int i_Which; // Which View, Database is this/using
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
MainDoc* pDoc;
|
MainDoc* pDoc;
|
||||||
wxDbInf* ct_BrowserDB;
|
wxDbInf* ct_BrowserDB;
|
||||||
BrowserDB* db_Br;
|
BrowserDB* db_Br;
|
||||||
wxMenu *popupMenu1; // OnDBClass
|
wxMenu *popupMenu1; // OnDBClass
|
||||||
wxMenu *popupMenu2; // OnDBGrid & OnTableclass
|
wxMenu *popupMenu2; // OnDBGrid & OnTableclass
|
||||||
bool b_EditModus;
|
bool b_EditModus;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
wxString logBuf,Temp0;
|
wxString logBuf,Temp0;
|
||||||
wxPoint MousePos;
|
wxPoint MousePos;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
void OnModusEdit(wxCommandEvent& event);
|
void OnModusEdit(wxCommandEvent& event);
|
||||||
void OnModusBrowse(wxCommandEvent& event);
|
void OnModusBrowse(wxCommandEvent& event);
|
||||||
void OnMouseMove(wxMouseEvent& event);
|
void OnMouseMove(wxMouseEvent& event);
|
||||||
int OnTableView(wxString Table);
|
int OnTableView(wxString Table);
|
||||||
//-----
|
//-----
|
||||||
void OnCellChange( wxGridEvent& );
|
void OnCellChange( wxGridEvent& );
|
||||||
void OnCellLeftClick( wxGridEvent& );
|
void OnCellLeftClick( wxGridEvent& );
|
||||||
void OnCellLeftDClick( wxGridEvent& );
|
void OnCellLeftDClick( wxGridEvent& );
|
||||||
void OnCellRightClick( wxGridEvent& );
|
void OnCellRightClick( wxGridEvent& );
|
||||||
void OnCellRightDClick( wxGridEvent& );
|
void OnCellRightDClick( wxGridEvent& );
|
||||||
void OnColSize( wxGridSizeEvent& );
|
void OnColSize( wxGridSizeEvent& );
|
||||||
void OnEditorShown( wxGridEvent& );
|
void OnEditorShown( wxGridEvent& );
|
||||||
void OnEditorHidden( wxGridEvent& );
|
void OnEditorHidden( wxGridEvent& );
|
||||||
void OnLabelLeftClick( wxGridEvent& );
|
void OnLabelLeftClick( wxGridEvent& );
|
||||||
void OnLabelLeftDClick( wxGridEvent& );
|
void OnLabelLeftDClick( wxGridEvent& );
|
||||||
void OnLabelRightClick( wxGridEvent& );
|
void OnLabelRightClick( wxGridEvent& );
|
||||||
void OnLabelRightDClick( wxGridEvent& );
|
void OnLabelRightDClick( wxGridEvent& );
|
||||||
void OnRangeSelected( wxGridRangeSelectEvent& );
|
void OnRangeSelected( wxGridRangeSelectEvent& );
|
||||||
void OnRowSize( wxGridSizeEvent& );
|
void OnRowSize( wxGridSizeEvent& );
|
||||||
void OnSelectCell( wxGridEvent& );
|
void OnSelectCell( wxGridEvent& );
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
#define GRID_01_BEGIN 1200
|
#define GRID_01_BEGIN 1200
|
||||||
#define GRID_BROWSE 1201
|
#define GRID_BROWSE 1201
|
||||||
#define GRID_EDIT 1202
|
#define GRID_EDIT 1202
|
||||||
#define GRID_01_END 1203
|
#define GRID_01_END 1203
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@@ -32,385 +32,403 @@
|
|||||||
//-- all #includes that every .cpp needs --- 19990807.mj10777 ----------------
|
//-- all #includes that every .cpp needs --- 19990807.mj10777 ----------------
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
#include "std.h" // sorgsam Pflegen !
|
#include "std.h" // sorgsam Pflegen !
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
//-- Global functions --------------------------------------------------------------------
|
//-- Global functions --------------------------------------------------------------------
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
static inline const char *bool2String(bool b)
|
static inline const char *bool2String(bool b)
|
||||||
{
|
{
|
||||||
return b ? "" : "not ";
|
return b ? "" : "not ";
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
BEGIN_EVENT_TABLE(DBTree, wxTreeCtrl)
|
BEGIN_EVENT_TABLE(DBTree, wxTreeCtrl)
|
||||||
EVT_MOTION (DBTree::OnMouseMove)
|
EVT_MOTION (DBTree::OnMouseMove)
|
||||||
EVT_TREE_SEL_CHANGED(TREE_CTRL_DB, DBTree::OnSelChanged)
|
EVT_TREE_SEL_CHANGED(TREE_CTRL_DB, DBTree::OnSelChanged)
|
||||||
EVT_TREE_ITEM_RIGHT_CLICK(TREE_CTRL_DB,DBTree::OnRightSelect)
|
EVT_TREE_ITEM_RIGHT_CLICK(TREE_CTRL_DB,DBTree::OnRightSelect)
|
||||||
EVT_MENU(DATA_SHOW,DBTree::OnDBGrid)
|
EVT_MENU(DATA_SHOW,DBTree::OnDBGrid)
|
||||||
EVT_MENU(DATA_DB,DBTree::OnDBClass)
|
EVT_MENU(DATA_DB,DBTree::OnDBClass)
|
||||||
EVT_MENU(DATA_TABLE,DBTree::OnTableClass)
|
EVT_MENU(DATA_TABLE,DBTree::OnTableClass)
|
||||||
EVT_MENU(DATA_TABLE_ALL,DBTree::OnTableClassAll)
|
EVT_MENU(DATA_TABLE_ALL,DBTree::OnTableClassAll)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// DBTree implementation
|
// DBTree implementation
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
IMPLEMENT_DYNAMIC_CLASS(DBTree, wxTreeCtrl)
|
IMPLEMENT_DYNAMIC_CLASS(DBTree, wxTreeCtrl)
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
DBTree::DBTree(wxWindow *parent) : wxTreeCtrl(parent)
|
DBTree::DBTree(wxWindow *parent) : wxTreeCtrl(parent)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
DBTree::DBTree(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size, long style)
|
DBTree::DBTree(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size, long style)
|
||||||
: wxTreeCtrl(parent, id, pos, size, style)
|
: wxTreeCtrl(parent, id, pos, size, style)
|
||||||
{
|
{
|
||||||
// Make an image list containing small icons
|
// Make an image list containing small icons
|
||||||
p_imageListNormal = new wxImageList(16, 16, TRUE);
|
p_imageListNormal = new wxImageList(16, 16, TRUE);
|
||||||
// should correspond to TreeIc_xxx enum
|
// should correspond to TreeIc_xxx enum
|
||||||
#if !defined(__WXMSW__)
|
#if !defined(__WXMSW__)
|
||||||
#include "bitmaps/logo.xpm"
|
#include "bitmaps/logo.xpm"
|
||||||
#include "bitmaps/dsnclose.xpm"
|
#include "bitmaps/dsnclose.xpm"
|
||||||
#include "bitmaps/dsnopen.xpm"
|
#include "bitmaps/dsnopen.xpm"
|
||||||
#include "bitmaps/tab.xpm"
|
#include "bitmaps/tab.xpm"
|
||||||
#include "bitmaps/view.xpm"
|
#include "bitmaps/view.xpm"
|
||||||
#include "bitmaps/col.xpm"
|
#include "bitmaps/col.xpm"
|
||||||
#include "bitmaps/key.xpm"
|
#include "bitmaps/key.xpm"
|
||||||
#include "bitmaps/keyf.xpm"
|
#include "bitmaps/keyf.xpm"
|
||||||
#include "bitmaps/d_open.xpm"
|
#include "bitmaps/d_open.xpm"
|
||||||
#include "bitmaps/d_closed.xpm"
|
#include "bitmaps/d_closed.xpm"
|
||||||
#endif
|
#endif
|
||||||
p_imageListNormal->Add(wxICON(aLogo));
|
p_imageListNormal->Add(wxICON(aLogo));
|
||||||
p_imageListNormal->Add(wxICON(DsnClosed));
|
p_imageListNormal->Add(wxICON(DsnClosed));
|
||||||
p_imageListNormal->Add(wxICON(DsnOpen));
|
p_imageListNormal->Add(wxICON(DsnOpen));
|
||||||
p_imageListNormal->Add(wxICON(TAB));
|
p_imageListNormal->Add(wxICON(TAB));
|
||||||
p_imageListNormal->Add(wxICON(VIEW));
|
p_imageListNormal->Add(wxICON(VIEW));
|
||||||
p_imageListNormal->Add(wxICON(COL));
|
p_imageListNormal->Add(wxICON(COL));
|
||||||
p_imageListNormal->Add(wxICON(KEY));
|
p_imageListNormal->Add(wxICON(KEY));
|
||||||
p_imageListNormal->Add(wxICON(KEYF));
|
p_imageListNormal->Add(wxICON(KEYF));
|
||||||
p_imageListNormal->Add(wxICON(DocOpen));
|
p_imageListNormal->Add(wxICON(DocOpen));
|
||||||
p_imageListNormal->Add(wxICON(DocOpen));
|
p_imageListNormal->Add(wxICON(DocOpen));
|
||||||
SetImageList(p_imageListNormal);
|
SetImageList(p_imageListNormal);
|
||||||
ct_BrowserDB = NULL;
|
ct_BrowserDB = NULL;
|
||||||
popupMenu1 = NULL;
|
popupMenu1 = NULL;
|
||||||
popupMenu2 = NULL;
|
popupMenu2 = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
DBTree::~DBTree()
|
DBTree::~DBTree()
|
||||||
{
|
{
|
||||||
// delete (pDoc->db_Br+i_Which);
|
delete ct_BrowserDB;
|
||||||
// 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 (pDoc->db_Br+i_Which);
|
||||||
delete p_imageListNormal;
|
// wxLogMessage("DBTree::~DBTree() - Vor OnCloseDB()");
|
||||||
if (popupMenu1) // If the DSN has no Tables, then no delete should be done !
|
(pDoc->db_Br+i_Which)->OnCloseDB(FALSE);
|
||||||
delete popupMenu1;
|
// wxLogMessage("DBTree::~DBTree() - Nach OnCloseDB()");
|
||||||
if (popupMenu1) // If the DSN has no Tables, then no delete should be done !
|
(pDoc->db_Br+i_Which)->db_BrowserDB = NULL;
|
||||||
delete popupMenu2;
|
(pDoc->db_Br+i_Which)->ct_BrowserDB = NULL;
|
||||||
|
(pDoc->db_Br+i_Which)->cl_BrowserDB = NULL;
|
||||||
|
|
||||||
|
delete p_imageListNormal;
|
||||||
|
if (popupMenu1) // If the DSN has no Tables, then no delete should be done !
|
||||||
|
delete popupMenu1;
|
||||||
|
if (popupMenu1) // If the DSN has no Tables, then no delete should be done !
|
||||||
|
delete popupMenu2;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
#undef TREE_EVENT_HANDLER
|
#undef TREE_EVENT_HANDLER
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
int DBTree::OnPopulate()
|
int DBTree::OnPopulate()
|
||||||
{
|
{
|
||||||
wxTreeItemId Root, Folder, Docu, Funkt;
|
wxTreeItemId Root, Folder, Docu, Funkt;
|
||||||
int i,x,y,z=0, TableType;
|
int i,x,y,z=0, TableType;
|
||||||
wxString SQL_TYPE, DB_TYPE;
|
wxString SQL_TYPE, DB_TYPE;
|
||||||
SetFont(* pDoc->ft_Doc);
|
SetFont(* pDoc->ft_Doc);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
if ((pDoc->db_Br+i_Which)->Initialize(FALSE))
|
if ((pDoc->db_Br+i_Which)->Initialize(FALSE))
|
||||||
{
|
|
||||||
wxStopWatch sw;
|
|
||||||
wxBeginBusyCursor();
|
|
||||||
ct_BrowserDB = (pDoc->db_Br+i_Which)->OnGetCatalog(FALSE);
|
|
||||||
if (ct_BrowserDB)
|
|
||||||
{ // Use the wxDatabase Information
|
|
||||||
Temp0.Printf("%s - (%s) (%s)", s_DSN.c_str(),ct_BrowserDB->catalog, ct_BrowserDB->schema);
|
|
||||||
Root = AddRoot(Temp0,TreeIc_DsnOpen,TreeIc_DsnOpen,new DBTreeData("Root"));
|
|
||||||
for (x=0;x<ct_BrowserDB->numTables;x++)
|
|
||||||
{
|
|
||||||
wxYield();
|
|
||||||
TableType = 0; // TABLE = 1 ; VIEW = 2 ; 0 We are not interested in
|
|
||||||
if (!wxStrcmp((ct_BrowserDB->pTableInf+x)->tableType,"TABLE")) // only TABLES
|
|
||||||
TableType = 1;
|
|
||||||
if (!wxStrcmp((ct_BrowserDB->pTableInf+x)->tableType,"VIEW")) // and VIEWS
|
|
||||||
TableType = 2;
|
|
||||||
if (TableType) // only TABLES or Views
|
|
||||||
{
|
{
|
||||||
Temp1.Printf("TN(%s",(ct_BrowserDB->pTableInf+x)->tableName);
|
wxStopWatch sw;
|
||||||
//----
|
wxBeginBusyCursor();
|
||||||
(ct_BrowserDB->pTableInf+x)->pColInf = (pDoc->db_Br+i_Which)->OnGetColumns((ct_BrowserDB->pTableInf+x)->tableName,(ct_BrowserDB->pTableInf+x)->numCols,FALSE);
|
ct_BrowserDB = (pDoc->db_Br+i_Which)->OnGetCatalog(FALSE);
|
||||||
//----
|
if (ct_BrowserDB)
|
||||||
if ((ct_BrowserDB->pTableInf+x)->pColInf)
|
{ // Use the wxDatabase Information
|
||||||
{
|
Temp0.Printf("%s - (%s) (%s)", s_DSN.c_str(),ct_BrowserDB->catalog, ct_BrowserDB->schema);
|
||||||
if (TableType == 1) // Table
|
Root = AddRoot(Temp0,TreeIc_DsnOpen,TreeIc_DsnOpen,new DBTreeData("Root"));
|
||||||
{
|
for (x=0;x<ct_BrowserDB->numTables;x++)
|
||||||
Temp0.Printf(_("Table-Name(%s) with (%d)Columns ; Remarks(%s)"), (ct_BrowserDB->pTableInf+x)->tableName,
|
{
|
||||||
(ct_BrowserDB->pTableInf+x)->numCols,(ct_BrowserDB->pTableInf+x)->tableRemarks);
|
wxYield();
|
||||||
Folder = AppendItem(Root,Temp0,TreeIc_TAB,TreeIc_TAB, new DBTreeData(Temp1));
|
TableType = 0; // TABLE = 1 ; VIEW = 2 ; 0 We are not interested in
|
||||||
}
|
if (!wxStrcmp((ct_BrowserDB->pTableInf+x)->tableType,"TABLE")) // only TABLES
|
||||||
if (TableType == 2) // View
|
TableType = 1;
|
||||||
{
|
if (!wxStrcmp((ct_BrowserDB->pTableInf+x)->tableType,"VIEW")) // and VIEWS
|
||||||
Temp0.Printf(_("View-Name(%s) with (%d)Columns ; Remarks(%s)"), (ct_BrowserDB->pTableInf+x)->tableName,
|
TableType = 2;
|
||||||
(ct_BrowserDB->pTableInf+x)->numCols,(ct_BrowserDB->pTableInf+x)->tableRemarks);
|
if (TableType) // only TABLES or Views
|
||||||
Folder = AppendItem(Root,Temp0,TreeIc_VIEW,TreeIc_VIEW, new DBTreeData(Temp1));
|
{
|
||||||
}
|
Temp1.Printf("TN(%s",(ct_BrowserDB->pTableInf+x)->tableName);
|
||||||
for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++)
|
//----
|
||||||
{
|
(ct_BrowserDB->pTableInf+x)->pColInf = (pDoc->db_Br+i_Which)->OnGetColumns((ct_BrowserDB->pTableInf+x)->tableName,(ct_BrowserDB->pTableInf+x)->numCols,FALSE);
|
||||||
Temp1.Printf("FN(%s",((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName);
|
//----
|
||||||
// Here is where we find out if the Column is a Primary / Foreign Key
|
if ((ct_BrowserDB->pTableInf+x)->pColInf)
|
||||||
if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkCol != 0) // Primary Key
|
{
|
||||||
{
|
if (TableType == 1) // Table
|
||||||
Temp2.Printf("(%d) - %s",((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkCol,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName);
|
{
|
||||||
Docu = AppendItem(Folder,Temp2,TreeIc_KEY,TreeIc_KEY,new DBTreeData(Temp1));
|
Temp0.Printf(_("Table-Name(%s) with (%d)Columns ; Remarks(%s)"), (ct_BrowserDB->pTableInf+x)->tableName,
|
||||||
Temp2 = ((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkTableName;
|
(ct_BrowserDB->pTableInf+x)->numCols,(ct_BrowserDB->pTableInf+x)->tableRemarks);
|
||||||
if (Temp2 == "")
|
Folder = AppendItem(Root,Temp0,TreeIc_TAB,TreeIc_TAB, new DBTreeData(Temp1));
|
||||||
Temp2 = _("None");
|
}
|
||||||
Temp2.Printf(_("This Primary Key is used in the following Tables : %s"),Temp2.c_str());
|
if (TableType == 2) // View
|
||||||
Funkt = AppendItem(Docu,Temp2,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData("KEY"));
|
{
|
||||||
}
|
Temp0.Printf(_("View-Name(%s) with (%d)Columns ; Remarks(%s)"), (ct_BrowserDB->pTableInf+x)->tableName,
|
||||||
else
|
(ct_BrowserDB->pTableInf+x)->numCols,(ct_BrowserDB->pTableInf+x)->tableRemarks);
|
||||||
{
|
Folder = AppendItem(Root,Temp0,TreeIc_VIEW,TreeIc_VIEW, new DBTreeData(Temp1));
|
||||||
if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkCol != 0) // Foreign Key
|
}
|
||||||
{
|
for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++)
|
||||||
Temp2.Printf("(%d) - %s",((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkCol,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName);
|
{
|
||||||
Docu = AppendItem(Folder,Temp2,TreeIc_KEYF,TreeIc_KEYF,new DBTreeData(Temp1));
|
Temp1.Printf("FN(%s",((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName);
|
||||||
Temp2.Printf(_("This Foreign Key comes from the following Table : %s"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkTableName);
|
// Here is where we find out if the Column is a Primary / Foreign Key
|
||||||
Funkt = AppendItem(Docu,Temp2,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData("KEYF"));
|
if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkCol != 0) // Primary Key
|
||||||
}
|
{
|
||||||
|
Temp2.Printf("(%d) - %s",((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkCol,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName);
|
||||||
|
Docu = AppendItem(Folder,Temp2,TreeIc_KEY,TreeIc_KEY,new DBTreeData(Temp1));
|
||||||
|
Temp2 = ((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkTableName;
|
||||||
|
if (Temp2 == "")
|
||||||
|
Temp2 = _("None");
|
||||||
|
Temp2.Printf(_("This Primary Key is used in the following Tables : %s"),Temp2.c_str());
|
||||||
|
Funkt = AppendItem(Docu,Temp2,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData("KEY"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkCol != 0) // Foreign Key
|
||||||
|
{
|
||||||
|
Temp2.Printf("(%d) - %s",((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkCol,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName);
|
||||||
|
Docu = AppendItem(Folder,Temp2,TreeIc_KEYF,TreeIc_KEYF,new DBTreeData(Temp1));
|
||||||
|
Temp2.Printf(_("This Foreign Key comes from the following Table : %s"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkTableName);
|
||||||
|
Funkt = AppendItem(Docu,Temp2,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData("KEYF"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Docu = AppendItem(Folder,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName,TreeIc_COL,TreeIc_COL,new DBTreeData(Temp1));
|
||||||
|
}
|
||||||
|
SQL_TYPE.Printf("SQL_C_???? (%d)",((ct_BrowserDB->pTableInf+x)->pColInf+y)->sqlDataType);
|
||||||
|
DB_TYPE.Printf("DB_DATA_TYPE_???? (%d)",((ct_BrowserDB->pTableInf+x)->pColInf+y)->dbDataType);
|
||||||
|
for (i=1;i<=(pDoc->db_Br+i_Which)->i_SqlTyp[0];i++)
|
||||||
|
{
|
||||||
|
if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->sqlDataType == (pDoc->db_Br+i_Which)->i_SqlTyp[i])
|
||||||
|
{
|
||||||
|
SQL_TYPE.Printf("%s(%d) ; ",(pDoc->db_Br+i_Which)->s_SqlTyp[i].c_str(),(pDoc->db_Br+i_Which)->i_SqlTyp[i]);
|
||||||
|
}
|
||||||
|
} // for (i=1;i<=i_SqlTyp[0];i++)
|
||||||
|
wxYield();
|
||||||
|
for (i=1;i<=(pDoc->db_Br+i_Which)->i_dbTyp[0];i++)
|
||||||
|
{
|
||||||
|
if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->dbDataType == (pDoc->db_Br+i_Which)->i_dbTyp[i])
|
||||||
|
{
|
||||||
|
DB_TYPE.Printf("%s(%d)",(pDoc->db_Br+i_Which)->s_dbTyp[i].c_str(),(pDoc->db_Br+i_Which)->i_dbTyp[i]);
|
||||||
|
}
|
||||||
|
} // for (i=1;i<=i_dbTyp[0];i++)
|
||||||
|
wxYield();
|
||||||
|
SQL_TYPE += DB_TYPE;
|
||||||
|
Funkt = AppendItem(Docu,SQL_TYPE,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData(SQL_TYPE));
|
||||||
|
SQL_TYPE.Printf("%10s %d,%d",((ct_BrowserDB->pTableInf+x)->pColInf+y)->typeName,
|
||||||
|
((ct_BrowserDB->pTableInf+x)->pColInf+y)->columnSize,((ct_BrowserDB->pTableInf+x)->pColInf+y)->decimalDigits);
|
||||||
|
Funkt = AppendItem(Docu,SQL_TYPE,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData(SQL_TYPE));
|
||||||
|
} // for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++)
|
||||||
|
} // if ((ct_BrowserDB->pTableInf+x)->pColInf)
|
||||||
|
else
|
||||||
|
Folder = AppendItem(Root,Temp0,TreeIc_FolderClosed,TreeIc_FolderOpen, new DBTreeData(Temp1));
|
||||||
|
z++;
|
||||||
|
// if (z % 10 == 0)
|
||||||
|
{
|
||||||
|
Temp0.Printf(_("-I-> DBTree::OnPopulate(%s) - Table %6d (from %d) has been read."),(ct_BrowserDB->pTableInf+x)->tableName,z,ct_BrowserDB->numTables);
|
||||||
|
pDoc->p_MainFrame->SetStatusText(Temp0, 0);
|
||||||
|
}
|
||||||
|
wxYield();
|
||||||
|
} // if ((ct_BrowserDB->pTableInf+x)->tableType == "TABLE" or VIEW)
|
||||||
|
// else
|
||||||
|
// wxLogMessage(_("\n-I-> if ! TABLE or VIEW >%s<"),(ct_BrowserDB->pTableInf+x)->tableType);
|
||||||
|
} // for (x=0;x<ct_BrowserDB->numTables;x++)
|
||||||
|
} // if (ct_BrowserDB)
|
||||||
else
|
else
|
||||||
Docu = AppendItem(Folder,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName,TreeIc_COL,TreeIc_COL,new DBTreeData(Temp1));
|
wxLogMessage(_("\n-E-> DBTree::OnPopulate() : Invalid Catalog Pointer : Failed"));
|
||||||
}
|
wxEndBusyCursor();
|
||||||
SQL_TYPE.Printf("SQL_C_???? (%d)",((ct_BrowserDB->pTableInf+x)->pColInf+y)->sqlDataType);
|
Temp0.Printf(_("-I-> DBTree::OnPopulate() - %6d Tables have been read. - Time needed : %ld ms"),z,sw.Time());
|
||||||
DB_TYPE.Printf("DB_DATA_TYPE_???? (%d)",((ct_BrowserDB->pTableInf+x)->pColInf+y)->dbDataType);
|
wxLogMessage(Temp0);
|
||||||
for (i=1;i<=(pDoc->db_Br+i_Which)->i_SqlTyp[0];i++)
|
pDoc->p_MainFrame->SetStatusText(Temp0, 0);
|
||||||
{
|
} // if((pDoc->db_Br+i_Which)->Initialize(FALSE))
|
||||||
if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->sqlDataType == (pDoc->db_Br+i_Which)->i_SqlTyp[i])
|
else
|
||||||
{
|
{
|
||||||
SQL_TYPE.Printf("%s(%d) ; ",(pDoc->db_Br+i_Which)->s_SqlTyp[i].c_str(),(pDoc->db_Br+i_Which)->i_SqlTyp[i]);
|
wxLogMessage(_("\n-E-> DBTree::OnPopulate() : A valid Pointer could not be created : Failed"));
|
||||||
}
|
return 0;
|
||||||
} // for (i=1;i<=i_SqlTyp[0];i++)
|
}
|
||||||
for (i=1;i<=(pDoc->db_Br+i_Which)->i_dbTyp[0];i++)
|
//---------------------------------------------------------------------------------------
|
||||||
{
|
Expand(Root);
|
||||||
if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->dbDataType == (pDoc->db_Br+i_Which)->i_dbTyp[i])
|
//---------------------------------------------------------------------------------------
|
||||||
{
|
popupMenu1 = NULL;
|
||||||
DB_TYPE.Printf("%s(%d)",(pDoc->db_Br+i_Which)->s_dbTyp[i].c_str(),(pDoc->db_Br+i_Which)->i_dbTyp[i]);
|
popupMenu1 = new wxMenu("");
|
||||||
}
|
popupMenu1->Append(DATA_DB, _("Make wxDB.cpp/h "));
|
||||||
} // for (i=1;i<=i_dbTyp[0];i++)
|
popupMenu1->AppendSeparator();
|
||||||
SQL_TYPE += DB_TYPE;
|
popupMenu1->Append(DATA_TABLE_ALL, _("Make all wxTable.cpp/h classes"));
|
||||||
Funkt = AppendItem(Docu,SQL_TYPE,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData(SQL_TYPE));
|
popupMenu2 = NULL;
|
||||||
SQL_TYPE.Printf("%10s %d,%d",((ct_BrowserDB->pTableInf+x)->pColInf+y)->typeName,
|
popupMenu2 = new wxMenu("");
|
||||||
((ct_BrowserDB->pTableInf+x)->pColInf+y)->columnSize,((ct_BrowserDB->pTableInf+x)->pColInf+y)->decimalDigits);
|
popupMenu2->Append(DATA_SHOW, _("Show Data"));
|
||||||
Funkt = AppendItem(Docu,SQL_TYPE,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData(SQL_TYPE));
|
popupMenu2->AppendSeparator();
|
||||||
} // for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++)
|
popupMenu2->Append(DATA_TABLE, _("Make wxTable.cpp/h "));
|
||||||
} // if ((ct_BrowserDB->pTableInf+x)->pColInf)
|
//---------------------------------------------------------------------------------------
|
||||||
else
|
return 0;
|
||||||
Folder = AppendItem(Root,Temp0,TreeIc_FolderClosed,TreeIc_FolderOpen, new DBTreeData(Temp1));
|
} // DBTree::OnPopulate()
|
||||||
z++;
|
|
||||||
if (z % 10 == 0)
|
|
||||||
{
|
|
||||||
Temp0.Printf(_("-I-> DBTree::OnPopulate(%s) - Table %6d (from %d) has been read."),(ct_BrowserDB->pTableInf+x)->tableName,z,ct_BrowserDB->numTables);
|
|
||||||
pDoc->p_MainFrame->SetStatusText(Temp0, 0);
|
|
||||||
}
|
|
||||||
} // if ((ct_BrowserDB->pTableInf+x)->tableType == "TABLE" or VIEW)
|
|
||||||
// else
|
|
||||||
// wxLogMessage(_("\n-I-> if ! TABLE or VIEW >%s<"),(ct_BrowserDB->pTableInf+x)->tableType);
|
|
||||||
} // for (x=0;x<ct_BrowserDB->numTables;x++)
|
|
||||||
} // if (ct_BrowserDB)
|
|
||||||
else
|
|
||||||
wxLogMessage(_("\n-E-> DBTree::OnPopulate() : Invalid Catalog Pointer : Failed"));
|
|
||||||
wxEndBusyCursor();
|
|
||||||
Temp0.Printf(_("-I-> DBTree::OnPopulate() - %6d Tables have been read. - Time needed : %ld ms"),z,sw.Time());
|
|
||||||
wxLogMessage(Temp0);
|
|
||||||
pDoc->p_MainFrame->SetStatusText(Temp0, 0);
|
|
||||||
} // if((pDoc->db_Br+i_Which)->Initialize(FALSE))
|
|
||||||
else
|
|
||||||
{
|
|
||||||
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 "));
|
|
||||||
popupMenu1->AppendSeparator();
|
|
||||||
popupMenu1->Append(DATA_TABLE_ALL, _("Make all wxTable.cpp/h classes"));
|
|
||||||
popupMenu2 = NULL;
|
|
||||||
popupMenu2 = new wxMenu("");
|
|
||||||
popupMenu2->Append(DATA_SHOW, _("Show Data"));
|
|
||||||
popupMenu2->AppendSeparator();
|
|
||||||
popupMenu2->Append(DATA_TABLE, _("Make wxTable.cpp/h "));
|
|
||||||
//---------------------------------------------------------------------------------------
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBTree::OnSelChanged(wxTreeEvent& WXUNUSED(event))
|
void DBTree::OnSelChanged(wxTreeEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
Temp0.Empty();
|
Temp0.Empty();
|
||||||
pDoc->p_MainFrame->SetStatusText(Temp0,0);
|
pDoc->p_MainFrame->SetStatusText(Temp0,0);
|
||||||
// Get the Information that we need
|
// Get the Information that we need
|
||||||
wxTreeItemId itemId = GetSelection();
|
wxTreeItemId itemId = GetSelection();
|
||||||
DBTreeData *item = (DBTreeData *)GetItemData(itemId);
|
DBTreeData *item = (DBTreeData *)GetItemData(itemId);
|
||||||
if ( item != NULL )
|
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());
|
||||||
// pDoc->OnChosenDSN(i);
|
//-------------------------------------------------------------------------------------
|
||||||
|
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() );
|
||||||
|
*/
|
||||||
|
//-------------------------------------------------------------------------------------
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
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))
|
void DBTree::OnRightSelect(wxTreeEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
Temp0.Empty();
|
Temp0.Empty();
|
||||||
// Get the Information that we need
|
// Get the Information that we need
|
||||||
wxTreeItemId itemId = GetSelection();
|
wxTreeItemId itemId = GetSelection();
|
||||||
DBTreeData *item = (DBTreeData *)GetItemData(itemId);
|
DBTreeData *item = (DBTreeData *)GetItemData(itemId);
|
||||||
if ( item != NULL )
|
if ( item != NULL )
|
||||||
{
|
{
|
||||||
int Treffer = 0;
|
int Treffer = 0;
|
||||||
Temp1.Printf("%s",item->m_desc.c_str());
|
Temp1.Printf("%s",item->m_desc.c_str());
|
||||||
//--------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------
|
||||||
if (!wxStrcmp("Root",Temp1))
|
if (!wxStrcmp("Root",Temp1))
|
||||||
{
|
{
|
||||||
PopupMenu(popupMenu1,TreePos.x,TreePos.y);
|
PopupMenu(popupMenu1,TreePos.x,TreePos.y);
|
||||||
Treffer++;
|
Treffer++;
|
||||||
}
|
}
|
||||||
for (i=0;i<ct_BrowserDB->numTables;i++)
|
for (i=0;i<ct_BrowserDB->numTables;i++)
|
||||||
{
|
{
|
||||||
Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName);
|
Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName);
|
||||||
if (!wxStrcmp(Temp2,Temp1))
|
if (!wxStrcmp(Temp2,Temp1))
|
||||||
{
|
{
|
||||||
PopupMenu(popupMenu2,TreePos.x,TreePos.y);
|
PopupMenu(popupMenu2,TreePos.x,TreePos.y);
|
||||||
Treffer++;
|
Treffer++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//--------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------
|
||||||
if (Treffer == 0)
|
if (Treffer == 0)
|
||||||
{
|
{
|
||||||
//-------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------
|
||||||
/*
|
/*
|
||||||
Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold,"
|
Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold,"
|
||||||
"%u children (%u immediately under this item)."),
|
"%u children (%u immediately under this item)."),
|
||||||
item->m_desc.c_str(),
|
item->m_desc.c_str(),
|
||||||
bool2String(IsSelected(itemId)),
|
bool2String(IsSelected(itemId)),
|
||||||
bool2String(IsExpanded(itemId)),
|
bool2String(IsExpanded(itemId)),
|
||||||
bool2String(IsBold(itemId)),
|
bool2String(IsBold(itemId)),
|
||||||
GetChildrenCount(itemId),
|
GetChildrenCount(itemId),
|
||||||
GetChildrenCount(itemId));
|
GetChildrenCount(itemId));
|
||||||
LogBuf.Printf("-I-> DBTree::OnSelChanged - %s",Temp0.c_str());
|
LogBuf.Printf("-I-> DBTree::OnSelChanged - %s",Temp0.c_str());
|
||||||
wxLogMessage( "%s", LogBuf.c_str() );
|
wxLogMessage( "%s", LogBuf.c_str() );
|
||||||
*/
|
*/
|
||||||
//-------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBTree::OnDBGrid(wxCommandEvent& event)
|
void DBTree::OnDBGrid(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
// Get the Information that we need
|
// Get the Information that we need
|
||||||
wxTreeItemId itemId = GetSelection();
|
wxTreeItemId itemId = GetSelection();
|
||||||
DBTreeData *item = (DBTreeData *)GetItemData(itemId);
|
DBTreeData *item = (DBTreeData *)GetItemData(itemId);
|
||||||
if ( item != NULL )
|
if ( item != NULL )
|
||||||
{
|
{
|
||||||
Temp1.Printf("%s",item->m_desc.c_str());
|
Temp1.Printf("%s",item->m_desc.c_str());
|
||||||
for (i=0;i<ct_BrowserDB->numTables;i++)
|
for (i=0;i<ct_BrowserDB->numTables;i++)
|
||||||
{
|
{
|
||||||
Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName);
|
Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName);
|
||||||
if (!wxStrcmp(Temp2,Temp1))
|
if (!wxStrcmp(Temp2,Temp1))
|
||||||
{
|
{
|
||||||
// Temp0.Printf("(%d) Here is where a GridCtrl for >%s< will be called! ",i,(ct_BrowserDB->pTableInf+i)->tableName);
|
// 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);
|
pDoc->OnChosenTbl(1,(ct_BrowserDB->pTableInf+i)->tableName);
|
||||||
// wxMessageBox(Temp0);
|
// wxMessageBox(Temp0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBTree::OnDBClass(wxCommandEvent& event)
|
void DBTree::OnDBClass(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
// int i;
|
// int i;
|
||||||
// Get the Information that we need
|
// Get the Information that we need
|
||||||
wxTreeItemId itemId = GetSelection();
|
wxTreeItemId itemId = GetSelection();
|
||||||
DBTreeData *item = (DBTreeData *)GetItemData(itemId);
|
DBTreeData *item = (DBTreeData *)GetItemData(itemId);
|
||||||
if ( item != NULL )
|
if ( item != NULL )
|
||||||
{
|
{
|
||||||
Temp0.Printf(_("Here is where a wxDB Class for >%s< will be made! "),s_DSN.c_str());
|
Temp0.Printf(_("Here is where a wxDB Class for >%s< will be made! "),s_DSN.c_str());
|
||||||
wxMessageBox(Temp0);
|
wxMessageBox(Temp0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBTree::OnTableClass(wxCommandEvent& event)
|
void DBTree::OnTableClass(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
// Get the Information that we need
|
// Get the Information that we need
|
||||||
wxTreeItemId itemId = GetSelection();
|
wxTreeItemId itemId = GetSelection();
|
||||||
DBTreeData *item = (DBTreeData *)GetItemData(itemId);
|
DBTreeData *item = (DBTreeData *)GetItemData(itemId);
|
||||||
if ( item != NULL )
|
if ( item != NULL )
|
||||||
{
|
{
|
||||||
Temp1.Printf("%s",item->m_desc.c_str());
|
Temp1.Printf("%s",item->m_desc.c_str());
|
||||||
for (i=0;i<ct_BrowserDB->numTables;i++)
|
for (i=0;i<ct_BrowserDB->numTables;i++)
|
||||||
{
|
{
|
||||||
Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName);
|
Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName);
|
||||||
if (!wxStrcmp(Temp2,Temp1))
|
if (!wxStrcmp(Temp2,Temp1))
|
||||||
{
|
{
|
||||||
Temp0.Printf(_("(%d) Here is where a wxTable Class for >%s< will be made! "),i,(ct_BrowserDB->pTableInf+i)->tableName);
|
Temp0.Printf(_("(%d) Here is where a wxTable Class for >%s< will be made! "),i,(ct_BrowserDB->pTableInf+i)->tableName);
|
||||||
wxMessageBox(Temp0);
|
wxMessageBox(Temp0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBTree::OnTableClassAll(wxCommandEvent& event)
|
void DBTree::OnTableClassAll(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
// int i;
|
// int i;
|
||||||
// Get the Information that we need
|
// Get the Information that we need
|
||||||
wxTreeItemId itemId = GetSelection();
|
wxTreeItemId itemId = GetSelection();
|
||||||
DBTreeData *item = (DBTreeData *)GetItemData(itemId);
|
DBTreeData *item = (DBTreeData *)GetItemData(itemId);
|
||||||
if ( item != NULL )
|
if ( item != NULL )
|
||||||
{
|
{
|
||||||
Temp0.Printf(_("Here is where all wxTable Classes in >%s< will be made! "),s_DSN.c_str());
|
Temp0.Printf(_("Here is where all wxTable Classes in >%s< will be made! "),s_DSN.c_str());
|
||||||
wxMessageBox(Temp0);
|
wxMessageBox(Temp0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DBTree::OnMouseMove(wxMouseEvent &event)
|
void DBTree::OnMouseMove(wxMouseEvent &event)
|
||||||
{
|
{
|
||||||
TreePos = event.GetPosition();
|
TreePos = event.GetPosition();
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// Name: DBTree.cpp/.h
|
// Name: dbtree.cpp/.h
|
||||||
// Purpose: Tree with Table and Views, branches show Field information
|
// Purpose: Tree with Table and Views, branches show Field information
|
||||||
// Author: Mark Johnson
|
// Author: Mark Johnson
|
||||||
// Modified by: 19991129.mj10777
|
// Modified by: 19991129.mj10777
|
||||||
@@ -7,73 +7,77 @@
|
|||||||
// Copyright: (c) Mark Johnson
|
// Copyright: (c) Mark Johnson
|
||||||
// Licence: wxWindows license
|
// Licence: wxWindows license
|
||||||
// RCS-ID: $Id$
|
// RCS-ID: $Id$
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class MainDoc; // Declared in Doc.h file
|
class MainDoc; // Declared in doc.h file
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class DBTreeData : public wxTreeItemData
|
class DBTreeData : public wxTreeItemData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DBTreeData(const wxString& desc) : m_desc(desc) { }
|
DBTreeData(const wxString& desc) : m_desc(desc) { }
|
||||||
void ShowInfo(wxTreeCtrl *tree);
|
void ShowInfo(wxTreeCtrl *tree);
|
||||||
wxString m_desc;
|
wxString m_desc;
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class DBTree : public wxTreeCtrl
|
class DBTree : public wxTreeCtrl
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum
|
enum
|
||||||
{ // The order here must be the same as in m_imageListNormal !
|
{ // The order here must be the same as in m_imageListNormal !
|
||||||
TreeIc_Logo, // logo.ico
|
TreeIc_Logo, // logo.ico
|
||||||
TreeIc_DsnClosed, // dsnclose.ico
|
TreeIc_DsnClosed, // dsnclose.ico
|
||||||
TreeIc_DsnOpen, // dsnopen.ico
|
TreeIc_DsnOpen, // dsnopen.ico
|
||||||
TreeIc_TAB, // tab.ico
|
TreeIc_TAB, // tab.ico
|
||||||
TreeIc_VIEW, // view.ico
|
TreeIc_VIEW, // view.ico
|
||||||
TreeIc_COL, // col.ico
|
TreeIc_COL, // col.ico
|
||||||
TreeIc_KEY, // key.ico
|
TreeIc_KEY, // key.ico
|
||||||
TreeIc_KEYF, // keyf.ico
|
TreeIc_KEYF, // keyf.ico
|
||||||
TreeIc_DocOpen, // d_open.ico
|
TreeIc_DocOpen, // d_open.ico
|
||||||
TreeIc_DocClosed, // d_closed.ico
|
TreeIc_DocClosed, // d_closed.ico
|
||||||
TreeIc_FolderClosed, // f_closed.ico
|
TreeIc_FolderClosed, // f_closed.ico
|
||||||
TreeIc_FolderOpen // f_open.ico
|
TreeIc_FolderOpen // f_open.ico
|
||||||
};
|
};
|
||||||
wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5;
|
wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5;
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
DBTree() { }
|
DBTree() { }
|
||||||
DBTree(wxWindow *parent);
|
DBTree(wxWindow *parent);
|
||||||
DBTree(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size,long style);
|
DBTree(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size,long style);
|
||||||
virtual ~DBTree();
|
virtual ~DBTree();
|
||||||
MainDoc *pDoc;
|
MainDoc *pDoc;
|
||||||
wxDbInf *ct_BrowserDB;
|
wxDbInf *ct_BrowserDB;
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
int i_TabArt; // Tab = 0 ; Page = 1;
|
int i_TabArt; // Tab = 0 ; Page = 1;
|
||||||
int i_ViewNr; // View Nummer in Tab / Page
|
int i_ViewNr; // View Nummer in Tab / Page
|
||||||
int i_Which; // Which View, Database is this/using
|
int i_Which; // Which View, Database is this/using
|
||||||
wxString s_DSN; // Name of the Dataset
|
wxString s_DSN; // Name of the Dataset
|
||||||
wxMenu *popupMenu1; // OnDBClass
|
wxMenu *popupMenu1; // OnDBClass
|
||||||
wxMenu *popupMenu2; // OnDBGrid & OnTableclass
|
wxMenu *popupMenu2; // OnDBGrid & OnTableclass
|
||||||
wxPoint TreePos;
|
wxPoint TreePos;
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
wxImageList *p_imageListNormal;
|
wxImageList *p_imageListNormal;
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
public:
|
public:
|
||||||
int OnPopulate();
|
int OnPopulate();
|
||||||
void OnSelChanged(wxTreeEvent& event);
|
void OnSelChanged(wxTreeEvent& event);
|
||||||
void OnRightSelect(wxTreeEvent& event);
|
void OnRightSelect(wxTreeEvent& event);
|
||||||
void OnDBGrid(wxCommandEvent& event);
|
void OnDBGrid(wxCommandEvent& event);
|
||||||
void OnDBClass(wxCommandEvent& event);
|
void OnDBClass(wxCommandEvent& event);
|
||||||
void OnTableClass(wxCommandEvent& event);
|
void OnTableClass(wxCommandEvent& event);
|
||||||
void OnTableClassAll(wxCommandEvent& event);
|
void OnTableClassAll(wxCommandEvent& event);
|
||||||
void OnMouseEvent(wxMouseEvent& event);
|
void OnMouseEvent(wxMouseEvent& event);
|
||||||
void OnMouseMove(wxMouseEvent& event);
|
void OnMouseMove(wxMouseEvent& event);
|
||||||
public:
|
public:
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS()
|
// NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS()
|
||||||
// if you want your overloaded OnCompareItems() to be called.
|
// if you want your overloaded OnCompareItems() to be called.
|
||||||
// OTOH, if you don't want it you may omit the next line - this will
|
// OTOH, if you don't want it you may omit the next line - this will
|
||||||
// make default (alphabetical) sorting much faster under wxMSW.
|
// make default (alphabetical) sorting much faster under wxMSW.
|
||||||
DECLARE_DYNAMIC_CLASS(DBTree)
|
DECLARE_DYNAMIC_CLASS(DBTree)
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
#define POPUP_01_BEGIN 1100
|
#define POPUP_01_BEGIN 1100
|
||||||
#define DATA_SHOW 1101
|
#define DATA_SHOW 1101
|
||||||
|
@@ -31,112 +31,117 @@
|
|||||||
//-- all #includes that every .cpp needs ----19990807.mj10777 ----------------
|
//-- all #includes that every .cpp needs ----19990807.mj10777 ----------------
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
#include "std.h"
|
#include "std.h"
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
DlgUser::DlgUser(wxWindow *parent, MainDoc *p_Doc, const wxString& title) :
|
DlgUser::DlgUser(wxWindow *parent, MainDoc *p_Doc, const wxString& title) :
|
||||||
wxDialog(parent, ID_DIALOG_DSN, title)
|
wxDialog(parent, ID_DIALOG_DSN, title)
|
||||||
{
|
{
|
||||||
int chSize; // Height of Font * 1.4 = Height of wxTextCtrl
|
int chSize; // Height of Font * 1.4 = Height of wxTextCtrl
|
||||||
|
|
||||||
float ratio = 1.4;
|
float ratio = (float)1.4;
|
||||||
#ifdef __WXMOTIF__
|
#ifdef __WXMOTIF__
|
||||||
ratio = 2.1;
|
ratio = (float)2.1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SetBackgroundColour("wheat");
|
SetBackgroundColour("wheat");
|
||||||
pDoc = p_Doc;
|
pDoc = p_Doc;
|
||||||
wxLayoutConstraints* layout;
|
wxLayoutConstraints* layout;
|
||||||
SetAutoLayout(TRUE);
|
SetAutoLayout(TRUE);
|
||||||
|
|
||||||
m_Label1 = new wxStaticText(this, -1, _("User ID:"));
|
m_Label1 = new wxStaticText(this, -1, _("User ID:"));
|
||||||
m_Label1->SetFont(* pDoc->ft_Doc);
|
m_Label1->SetFont(* pDoc->ft_Doc);
|
||||||
layout = new wxLayoutConstraints;
|
layout = new wxLayoutConstraints;
|
||||||
layout->left.SameAs(this, wxLeft, 10);
|
layout->left.SameAs(this, wxLeft, 10);
|
||||||
layout->top.SameAs(this, wxTop, 10);
|
layout->top.SameAs(this, wxTop, 10);
|
||||||
layout->height.AsIs();
|
layout->height.AsIs();
|
||||||
layout->width.Absolute(75);
|
layout->width.Absolute(75);
|
||||||
m_Label1->SetConstraints(layout);
|
m_Label1->SetConstraints(layout);
|
||||||
|
|
||||||
int w;
|
int w;
|
||||||
m_Label1->GetSize(&w, &chSize);
|
m_Label1->GetSize(&w, &chSize);
|
||||||
|
|
||||||
m_UserName = new wxTextCtrl(this, -1, "");
|
m_UserName = new wxTextCtrl(this, -1, "");
|
||||||
m_UserName->SetFont(* pDoc->ft_Doc);
|
m_UserName->SetFont(* pDoc->ft_Doc);
|
||||||
chSize = (int) (m_UserName->GetCharHeight()*ratio);
|
chSize = (int) (m_UserName->GetCharHeight()*ratio);
|
||||||
|
|
||||||
layout = new wxLayoutConstraints;
|
layout = new wxLayoutConstraints;
|
||||||
layout->left.SameAs(m_Label1, wxRight, 10);
|
layout->left.SameAs(m_Label1, wxRight, 10);
|
||||||
layout->centreY.SameAs(m_Label1,wxCentreY);
|
layout->centreY.SameAs(m_Label1,wxCentreY);
|
||||||
layout->width.Absolute(200);
|
layout->width.Absolute(200);
|
||||||
layout->height.Absolute(chSize);
|
layout->height.Absolute(chSize);
|
||||||
// layout->height.AsIs();
|
// layout->height.AsIs();
|
||||||
m_UserName->SetConstraints(layout);
|
m_UserName->SetConstraints(layout);
|
||||||
|
|
||||||
|
|
||||||
m_Label2 = new wxStaticText(this, -1, _("Password:"));
|
m_Label2 = new wxStaticText(this, -1, _("Password:"));
|
||||||
m_Label2->SetFont(* pDoc->ft_Doc);
|
m_Label2->SetFont(* pDoc->ft_Doc);
|
||||||
layout = new wxLayoutConstraints;
|
layout = new wxLayoutConstraints;
|
||||||
layout->left.SameAs(m_Label1, wxLeft);
|
layout->left.SameAs(m_Label1, wxLeft);
|
||||||
layout->top.SameAs(m_Label1, wxBottom, 10);
|
layout->top.SameAs(m_Label1, wxBottom, 10);
|
||||||
layout->height.AsIs();
|
layout->height.AsIs();
|
||||||
layout->width.SameAs(m_Label1, wxWidth);
|
layout->width.SameAs(m_Label1, wxWidth);
|
||||||
m_Label2->SetConstraints(layout);
|
m_Label2->SetConstraints(layout);
|
||||||
|
|
||||||
m_Password = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD);
|
m_Password = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD);
|
||||||
m_Password->SetFont(* pDoc->ft_Doc);
|
m_Password->SetFont(* pDoc->ft_Doc);
|
||||||
layout = new wxLayoutConstraints;
|
layout = new wxLayoutConstraints;
|
||||||
layout->left.SameAs(m_UserName, wxLeft);
|
layout->left.SameAs(m_UserName, wxLeft);
|
||||||
layout->width.SameAs(m_UserName, wxWidth);
|
layout->width.SameAs(m_UserName, wxWidth);
|
||||||
layout->centreY.SameAs(m_Label2,wxCentreY);
|
layout->centreY.SameAs(m_Label2,wxCentreY);
|
||||||
layout->height.Absolute(chSize);
|
layout->height.Absolute(chSize);
|
||||||
//layout->height.AsIs();
|
//layout->height.AsIs();
|
||||||
m_Password->SetConstraints(layout);
|
m_Password->SetConstraints(layout);
|
||||||
|
|
||||||
m_OK = new wxButton(this, wxID_OK, _("OK"));
|
m_OK = new wxButton(this, wxID_OK, _("OK"));
|
||||||
m_OK->SetFont(* pDoc->ft_Doc);
|
m_OK->SetFont(* pDoc->ft_Doc);
|
||||||
layout = new wxLayoutConstraints;
|
layout = new wxLayoutConstraints;
|
||||||
layout->left.SameAs(this, wxLeft, 10);
|
layout->left.SameAs(this, wxLeft, 10);
|
||||||
layout->top.SameAs(m_Label2, wxBottom,10);
|
layout->top.SameAs(m_Label2, wxBottom,10);
|
||||||
layout->height.AsIs();
|
layout->height.AsIs();
|
||||||
layout->width.Absolute(75);
|
layout->width.Absolute(75);
|
||||||
m_OK->SetConstraints(layout);
|
m_OK->SetConstraints(layout);
|
||||||
|
|
||||||
m_Cancel = new wxButton(this, wxID_CANCEL, _("Cancel"));
|
m_Cancel = new wxButton(this, wxID_CANCEL, _("Cancel"));
|
||||||
m_Cancel->SetFont(* pDoc->ft_Doc);
|
m_Cancel->SetFont(* pDoc->ft_Doc);
|
||||||
layout = new wxLayoutConstraints;
|
layout = new wxLayoutConstraints;
|
||||||
layout->left.SameAs(m_OK, wxRight, 10);
|
layout->left.SameAs(m_OK, wxRight, 10);
|
||||||
layout->top.SameAs(m_OK, wxTop);
|
layout->top.SameAs(m_OK, wxTop);
|
||||||
layout->height.AsIs();
|
layout->height.AsIs();
|
||||||
layout->width.SameAs(m_OK, wxWidth);
|
layout->width.SameAs(m_OK, wxWidth);
|
||||||
m_Cancel->SetConstraints(layout);
|
m_Cancel->SetConstraints(layout);
|
||||||
|
|
||||||
m_OK->SetDefault();
|
m_OK->SetDefault();
|
||||||
m_UserName->SetFocus();
|
m_UserName->SetFocus();
|
||||||
|
|
||||||
s_User = "";
|
s_User = "";
|
||||||
s_Password = "";
|
s_Password = "";
|
||||||
Layout();
|
Layout();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DlgUser::OnInit()
|
void DlgUser::OnInit()
|
||||||
{
|
{
|
||||||
wxString Temp; Temp.Printf(">>> %s <<<",s_DSN.c_str());
|
wxString Temp; Temp.Printf(">>> %s <<<",s_DSN.c_str());
|
||||||
SetTitle(Temp);
|
SetTitle(Temp);
|
||||||
m_UserName->SetLabel(s_User);
|
m_UserName->SetLabel(s_User);
|
||||||
m_Password->SetLabel(s_Password);
|
m_Password->SetLabel(s_Password);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
BEGIN_EVENT_TABLE(DlgUser, wxDialog)
|
BEGIN_EVENT_TABLE(DlgUser, wxDialog)
|
||||||
EVT_BUTTON(wxID_OK, DlgUser::OnOk)
|
EVT_BUTTON(wxID_OK, DlgUser::OnOk)
|
||||||
EVT_BUTTON(wxID_CANCEL, DlgUser::OnCancel)
|
EVT_BUTTON(wxID_CANCEL, DlgUser::OnCancel)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void DlgUser::OnOk(wxCommandEvent& WXUNUSED(event) )
|
void DlgUser::OnOk(wxCommandEvent& WXUNUSED(event) )
|
||||||
{
|
{
|
||||||
//canceled = FALSE;
|
//canceled = FALSE;
|
||||||
s_User = m_UserName->GetValue();
|
s_User = m_UserName->GetValue();
|
||||||
s_Password = m_Password->GetValue();
|
s_Password = m_Password->GetValue();
|
||||||
EndModal(wxID_OK);
|
EndModal(wxID_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
//void DlgUser::OnCancel(wxCommandEvent& WXUNUSED(event) )
|
//void DlgUser::OnCancel(wxCommandEvent& WXUNUSED(event) )
|
||||||
// {
|
// {
|
||||||
|
@@ -15,22 +15,25 @@
|
|||||||
#define ID_USER 102
|
#define ID_USER 102
|
||||||
#define ID_PASSWORD 103
|
#define ID_PASSWORD 103
|
||||||
#define ID_TEXT 104
|
#define ID_TEXT 104
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class MainDoc;
|
class MainDoc;
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class DlgUser: public wxDialog
|
class DlgUser: public wxDialog
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxString s_DSN, s_User, s_Password;
|
wxString s_DSN, s_User, s_Password;
|
||||||
wxStaticText *m_Label1, *m_Label2;
|
wxStaticText *m_Label1, *m_Label2;
|
||||||
wxTextCtrl *m_UserName, *m_Password;
|
wxTextCtrl *m_UserName, *m_Password;
|
||||||
wxButton *m_OK, *m_Cancel;
|
wxButton *m_OK, *m_Cancel;
|
||||||
MainDoc *pDoc;
|
MainDoc *pDoc;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
DlgUser(wxWindow *parent,MainDoc *pDoc, const wxString& title);
|
DlgUser(wxWindow *parent,MainDoc *pDoc, const wxString& title);
|
||||||
void OnInit();
|
void OnInit();
|
||||||
void OnOk(wxCommandEvent& event);
|
void OnOk(wxCommandEvent& event);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
DECLARE_EVENT_TABLE()
|
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// Name: Doc.cpp
|
// Name: doc.cpp
|
||||||
// Purpose: Holds information for DBBrowser - (a do-it-yourself document)
|
// Purpose: Holds information for DBBrowser - (a do-it-yourself document)
|
||||||
// Author: Mark Johnson, mj10777@gmx.net
|
// Author: Mark Johnson, mj10777@gmx.net
|
||||||
// Modified by: 19990808.mj10777
|
// Modified by: 19990808.mj10777
|
||||||
@@ -34,293 +34,302 @@
|
|||||||
//-- 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
|
// Global structure for holding ODBC connection information
|
||||||
wxDbConnectInf DbConnectInf;
|
wxDbConnectInf DbConnectInf;
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
wxConfigBase *p_ProgramCfg; // All Config and Path information
|
wxConfigBase *p_ProgramCfg; // All Config and Path information
|
||||||
wxLogTextCtrl *p_LogBook; // All Log messages
|
wxLogTextCtrl *p_LogBook; // All Log messages
|
||||||
wxString LogBuf; // String for all Logs
|
wxString LogBuf; // String for all Logs
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
MainDoc::MainDoc()
|
MainDoc::MainDoc()
|
||||||
{
|
{
|
||||||
db_Br = NULL;
|
db_Br = NULL;
|
||||||
p_DSN = NULL;
|
p_DSN = NULL;
|
||||||
i_DSN = 0;
|
i_DSN = 0;
|
||||||
p_Splitter = NULL;
|
p_Splitter = NULL;
|
||||||
p_MainFrame = NULL;
|
p_MainFrame = NULL;
|
||||||
p_PgmCtrl = NULL; // Is not active
|
p_PgmCtrl = NULL; // Is not active
|
||||||
p_DBTree = NULL;
|
p_DBTree = NULL;
|
||||||
p_DBGrid = NULL;
|
p_DBGrid = NULL;
|
||||||
p_LogWin = NULL;
|
p_LogWin = NULL;
|
||||||
p_TabArea = NULL;
|
p_TabArea = NULL;
|
||||||
p_PageArea = NULL;
|
p_PageArea = NULL;
|
||||||
i_TabNr = 0;
|
i_TabNr = 0;
|
||||||
i_PageNr = 0;
|
i_PageNr = 0;
|
||||||
s_BColour = "WHEAT";
|
s_BColour = "WHEAT";
|
||||||
ft_Doc = new wxFont(wxSystemSettings::GetSystemFont(wxSYS_SYSTEM_FONT));
|
ft_Doc = new wxFont(wxSystemSettings::GetSystemFont(wxSYS_SYSTEM_FONT));
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
MainDoc::~MainDoc()
|
MainDoc::~MainDoc()
|
||||||
{
|
{
|
||||||
// ----------------------------------------------------------
|
p_TabArea->Show(FALSE); // Deactivate the Window
|
||||||
// -E-> The Tree Controls take to long to close : Why ??
|
p_PageArea->Show(FALSE); // Deactivate the Window
|
||||||
// ----------------------------------------------------------
|
|
||||||
delete ft_Doc;
|
// ----------------------------------------------------------
|
||||||
ft_Doc = NULL;
|
// -E-> The Tree Controls take to long to close : Why ??
|
||||||
p_TabArea->Show(FALSE); // Deactivate the Window
|
// ----------------------------------------------------------
|
||||||
p_PageArea->Show(FALSE); // Deactivate the Window
|
delete ft_Doc; ft_Doc = NULL;
|
||||||
p_PgmCtrl = NULL;
|
delete p_PgmCtrl; p_PgmCtrl = NULL;
|
||||||
delete p_PgmCtrl;
|
delete [] p_DSN;
|
||||||
delete [] p_DSN;
|
delete p_DBTree;
|
||||||
delete p_DBTree;
|
delete p_TabArea; p_TabArea = NULL;
|
||||||
p_TabArea = NULL; delete p_TabArea;
|
delete p_PageArea; p_PageArea = NULL;
|
||||||
p_PageArea = NULL; delete p_PageArea;
|
delete p_Splitter; p_Splitter = NULL;
|
||||||
p_Splitter = NULL;
|
delete [] db_Br; db_Br = NULL;
|
||||||
delete p_Splitter;
|
// wxMessageBox("~MainDoc");
|
||||||
delete [] db_Br;
|
|
||||||
// wxMessageBox("~MainDoc");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
bool MainDoc::OnNewDocument()
|
bool MainDoc::OnNewDocument()
|
||||||
{
|
{
|
||||||
wxStopWatch sw;
|
wxStopWatch sw;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
if (!OnInitView())
|
if (!OnInitView())
|
||||||
return FALSE;
|
return FALSE;
|
||||||
p_PgmCtrl->OnPopulate();
|
p_PgmCtrl->OnPopulate();
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
wxLogMessage(_("-I-> MainDoc::OnNewDocument() - End - Time needed : %ld ms"),sw.Time());
|
wxLogMessage(_("-I-> MainDoc::OnNewDocument() - End - Time needed : %ld ms"),sw.Time());
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
bool MainDoc::OnInitView()
|
bool MainDoc::OnInitView()
|
||||||
{
|
{
|
||||||
Sash = p_ProgramCfg->Read("/MainFrame/Sash", 200);
|
Sash = p_ProgramCfg->Read("/MainFrame/Sash", 200);
|
||||||
// wxMessageBox("OnInitView() - Begin ","-I->MainDoc::OnInitView");
|
// wxMessageBox("OnInitView() - Begin ","-I->MainDoc::OnInitView");
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// create "workplace" window
|
// create "workplace" window
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
p_TabArea = new wxTabbedWindow(); // Init the Pointer
|
p_TabArea = new wxTabbedWindow(); // Init the Pointer
|
||||||
p_TabArea->Create(p_Splitter, -1);
|
p_TabArea->Create(p_Splitter, -1);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
p_PgmCtrl = new PgmCtrl(p_TabArea, TREE_CTRL_PGM,wxDefaultPosition, wxDefaultSize,
|
p_PgmCtrl = new PgmCtrl(p_TabArea, TREE_CTRL_PGM,wxDefaultPosition, wxDefaultSize,
|
||||||
wxTR_HAS_BUTTONS | wxSUNKEN_BORDER);
|
wxTR_HAS_BUTTONS | wxSUNKEN_BORDER);
|
||||||
p_PgmCtrl->i_TabArt = 0; // 0 = Tab ; 1 = Page
|
p_PgmCtrl->i_TabArt = 0; // 0 = Tab ; 1 = Page
|
||||||
p_PgmCtrl->i_ViewNr = p_TabArea->GetTabCount()-1;
|
p_PgmCtrl->i_ViewNr = p_TabArea->GetTabCount()-1;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
wxBitmap *p_FolderClose = new wxBitmap("PgmCtrl"); //, wxBITMAP_TYPE_BMP_RESOURCE); // BJO20000115
|
wxBitmap *p_FolderClose = new wxBitmap("PgmCtrl"); //, wxBITMAP_TYPE_BMP_RESOURCE); // BJO20000115
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
p_TabArea->AddTab(p_PgmCtrl,"PgmCtrl",p_FolderClose);
|
p_TabArea->AddTab(p_PgmCtrl,"PgmCtrl",p_FolderClose);
|
||||||
delete p_FolderClose; // Memory leak
|
delete p_FolderClose; // Memory leak
|
||||||
p_FolderClose = NULL;
|
p_FolderClose = NULL;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// now create "output" window
|
// now create "output" window
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
p_PageArea = new wxPaggedWindow(); // Init the Pointer
|
p_PageArea = new wxPagedWindow(); // Init the Pointer
|
||||||
p_PageArea->Create(p_Splitter, -1);
|
p_PageArea->Create(p_Splitter, -1);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
p_LogWin = new wxTextCtrl(p_PageArea,-1,wxEmptyString,
|
p_LogWin = new wxTextCtrl(p_PageArea,-1,wxEmptyString,
|
||||||
wxDefaultPosition, wxDefaultSize,wxTE_MULTILINE );
|
wxDefaultPosition, wxDefaultSize,wxTE_MULTILINE );
|
||||||
p_LogWin->SetFont(* ft_Doc);
|
p_LogWin->SetFont(* ft_Doc);
|
||||||
// Don't forget ! This is always : i_TabArt = 0 ; i_ViewNr = 1;
|
// 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 = new wxLogTextCtrl(p_LogWin); // make p_LogWin the LogBook
|
||||||
p_LogBook->SetActiveTarget(p_LogBook);
|
p_LogBook->SetActiveTarget(p_LogBook);
|
||||||
p_LogBook->SetTimestamp( NULL );
|
p_LogBook->SetTimestamp( NULL );
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
p_PageArea->AddTab(p_LogWin,_("LogBook"), "what is this?" );
|
p_PageArea->AddTab(p_LogWin,_("LogBook"), "what is this?" );
|
||||||
i_TabNr = p_TabArea->GetTabCount()-1; // Add one when a new AddTab is done;
|
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;
|
i_PageNr = p_PageArea->GetTabCount()-1; // Add one when a new AddTab is done;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
p_PgmCtrl->pDoc = this;
|
p_PgmCtrl->pDoc = this;
|
||||||
p_TabArea->SetActiveTab(i_PageNr);
|
p_TabArea->SetActiveTab(i_PageNr);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
p_Splitter->Initialize(p_TabArea);
|
p_Splitter->Initialize(p_TabArea);
|
||||||
p_Splitter->SplitHorizontally(p_TabArea,p_PageArea,Sash);
|
p_Splitter->SplitHorizontally(p_TabArea,p_PageArea,Sash);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// if (!OnInitODBC())
|
// if (!OnInitODBC())
|
||||||
// return FALSE;
|
// return FALSE;
|
||||||
OnInitODBC();
|
OnInitODBC();
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
Temp0.Printf(_("-I-> MainDoc::OnInitView() - End - %d DSN's found"),i_DSN);
|
Temp0.Printf(_("-I-> MainDoc::OnInitView() - End - %d DSN's found"),i_DSN);
|
||||||
p_MainFrame->SetStatusText(Temp0, 0);
|
p_MainFrame->SetStatusText(Temp0, 0);
|
||||||
wxLogMessage(Temp0);
|
wxLogMessage(Temp0);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
bool MainDoc::OnInitODBC()
|
bool MainDoc::OnInitODBC()
|
||||||
{
|
{
|
||||||
char Dsn[SQL_MAX_DSN_LENGTH + 1];
|
char Dsn[SQL_MAX_DSN_LENGTH + 1];
|
||||||
char DsDesc[255]; // BJO20002501 instead of 512
|
char DsDesc[255]; // BJO20002501 instead of 512
|
||||||
Temp0 = "";
|
Temp0 = "";
|
||||||
i_DSN = 0; // Counter
|
i_DSN = 0; // Counter
|
||||||
int i = 0;
|
int i = 0;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// Initialize the ODBC Environment for Database Operations
|
// Initialize the ODBC Environment for Database Operations
|
||||||
|
|
||||||
if (SQLAllocEnv(&DbConnectInf.Henv) != SQL_SUCCESS)
|
if (SQLAllocEnv(&DbConnectInf.Henv) != SQL_SUCCESS)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
const char sep = 3; // separator character used in string between DSN ans DsDesc
|
const char sep = 3; // separator character used in string between DSN ans DsDesc
|
||||||
wxStringList s_SortDSNList, s_SortDsDescList;
|
wxStringList s_SortDSNList, s_SortDsDescList;
|
||||||
// BJO-20000127
|
// BJO-20000127
|
||||||
// In order to have same sort result on both Dsn and DsDesc, create a 'keyed' string.
|
// In order to have same sort result on both Dsn and DsDesc, create a 'keyed' string.
|
||||||
// The key will be removed after sorting
|
// The key will be removed after sorting
|
||||||
wxString KeyString;
|
wxString KeyString;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
while(wxDbGetDataSource(DbConnectInf.Henv, Dsn, sizeof(Dsn), DsDesc, sizeof(DsDesc)))
|
while(wxDbGetDataSource(DbConnectInf.Henv, Dsn, sizeof(Dsn), DsDesc, sizeof(DsDesc)))
|
||||||
{
|
{
|
||||||
i_DSN++; // How many Dsn have we ?
|
i_DSN++; // How many Dsn have we ?
|
||||||
KeyString.Printf("%s%c%s",Dsn, sep, DsDesc);
|
KeyString.Printf("%s%c%s",Dsn, sep, DsDesc);
|
||||||
s_SortDSNList.Add(Dsn);
|
s_SortDSNList.Add(Dsn);
|
||||||
s_SortDsDescList.Add(KeyString);
|
s_SortDsDescList.Add(KeyString);
|
||||||
}
|
}
|
||||||
s_SortDSNList.Sort(); //BJO
|
s_SortDSNList.Sort(); //BJO
|
||||||
s_SortDsDescList.Sort(); //BJO
|
s_SortDsDescList.Sort(); //BJO
|
||||||
|
|
||||||
char ** s_SortDSN = s_SortDSNList.ListToArray(); //BJO
|
char ** s_SortDSN = s_SortDSNList.ListToArray(); //BJO
|
||||||
char ** s_SortDsDesc = s_SortDsDescList.ListToArray(); //BJO
|
char ** s_SortDsDesc = s_SortDsDescList.ListToArray(); //BJO
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// Allocate n ODBC-DSN objects to hold the information
|
// Allocate n ODBC-DSN objects to hold the information
|
||||||
p_DSN = new DSN[i_DSN]; //BJO
|
p_DSN = new DSN[i_DSN]; //BJO
|
||||||
for (i=0;i<i_DSN;i++)
|
for (i=0;i<i_DSN;i++)
|
||||||
{
|
{
|
||||||
KeyString = s_SortDsDesc[i];
|
KeyString = s_SortDsDesc[i];
|
||||||
KeyString = KeyString.AfterFirst(sep);
|
KeyString = KeyString.AfterFirst(sep);
|
||||||
strcpy(s_SortDsDesc[i],KeyString.c_str());
|
strcpy(s_SortDsDesc[i],KeyString.c_str());
|
||||||
(p_DSN+i)->Dsn = s_SortDSN[i];
|
(p_DSN+i)->Dsn = s_SortDSN[i];
|
||||||
(p_DSN+i)->Drv = s_SortDsDesc[i];
|
(p_DSN+i)->Drv = s_SortDsDesc[i];
|
||||||
(p_DSN+i)->Usr = "";
|
(p_DSN+i)->Usr = "";
|
||||||
(p_DSN+i)->Pas = "";
|
(p_DSN+i)->Pas = "";
|
||||||
Temp0.Printf("%02d) Dsn(%s) DsDesc(%s)",i,(p_DSN+i)->Dsn.c_str(),(p_DSN+i)->Drv.c_str());
|
Temp0.Printf("%02d) Dsn(%s) DsDesc(%s)",i,(p_DSN+i)->Dsn.c_str(),(p_DSN+i)->Drv.c_str());
|
||||||
wxLogMessage(Temp0);
|
wxLogMessage(Temp0);
|
||||||
}
|
}
|
||||||
i = 0;
|
i = 0;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// Allocate n wxDatabase objects to hold the column information
|
// Allocate n wxDatabase objects to hold the column information
|
||||||
db_Br = new BrowserDB[i_DSN];
|
db_Br = new BrowserDB[i_DSN];
|
||||||
for (i=0;i<i_DSN;i++)
|
for (i=0;i<i_DSN;i++)
|
||||||
{
|
{
|
||||||
(db_Br+i)->p_LogWindow = p_LogWin;
|
(db_Br+i)->p_LogWindow = p_LogWin;
|
||||||
(db_Br+i)->ODBCSource = (p_DSN+i)->Dsn;
|
(db_Br+i)->ODBCSource = (p_DSN+i)->Dsn;
|
||||||
(db_Br+i)->UserName = (p_DSN+i)->Usr;
|
(db_Br+i)->UserName = (p_DSN+i)->Usr;
|
||||||
(db_Br+i)->Password = (p_DSN+i)->Pas;
|
(db_Br+i)->Password = (p_DSN+i)->Pas;
|
||||||
(db_Br+i)->pDoc = this;
|
(db_Br+i)->pDoc = this;
|
||||||
(db_Br+i)->i_Which = i;
|
(db_Br+i)->i_Which = i;
|
||||||
}
|
}
|
||||||
if (SQLFreeEnv(DbConnectInf.Henv) != SQL_SUCCESS) // BJO20000125 / MJ10777.20000309 : no &
|
if (SQLFreeEnv(DbConnectInf.Henv) != SQL_SUCCESS) // BJO20000125 / MJ10777.20000309 : no &
|
||||||
{
|
{
|
||||||
// Error freeing environment handle
|
// Error freeing environment handle
|
||||||
}
|
}
|
||||||
delete [] s_SortDSN;
|
delete [] s_SortDSN;
|
||||||
delete [] s_SortDsDesc;
|
delete [] s_SortDsDesc;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
if (!i_DSN)
|
if (!i_DSN)
|
||||||
{
|
{
|
||||||
wxMessageBox(_("No Dataset names found in ODBC!\n" \
|
wxMessageBox(_("No Dataset names found in ODBC!\n" \
|
||||||
" Program will exit!\n\n" \
|
" Program will exit!\n\n" \
|
||||||
" Ciao"),"-E-> Fatal situation");
|
" Ciao"),"-E-> Fatal situation");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
bool MainDoc::OnChosenDSN(int Which)
|
bool MainDoc::OnChosenDSN(int Which)
|
||||||
{
|
{
|
||||||
// wxLogMessage("OnChosenDSN(%d) - Begin",Which);
|
// wxLogMessage("OnChosenDSN(%d) - Begin",Which);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
if (p_DBTree != NULL)
|
if (p_DBTree != NULL)
|
||||||
{
|
{
|
||||||
p_TabArea->Show(FALSE); // Deactivate the Window
|
p_TabArea->Show(FALSE); // Deactivate the Window
|
||||||
p_TabArea->RemoveTab(p_DBTree->i_ViewNr);
|
p_TabArea->RemoveTab(p_DBTree->i_ViewNr);
|
||||||
p_TabArea->Show(TRUE); // Activate the Window
|
p_TabArea->Show(TRUE); // Activate the Window
|
||||||
OnChosenTbl(77,"");
|
OnChosenTbl(77,"");
|
||||||
}
|
}
|
||||||
//-------------------------
|
//-------------------------
|
||||||
p_TabArea->Show(FALSE); // Deactivate the Window
|
p_TabArea->Show(FALSE); // Deactivate the Window
|
||||||
p_DBTree = new DBTree(p_TabArea, TREE_CTRL_DB,wxDefaultPosition, wxDefaultSize,
|
p_DBTree = new DBTree(p_TabArea, TREE_CTRL_DB,wxDefaultPosition, wxDefaultSize,
|
||||||
wxTR_HAS_BUTTONS | wxSUNKEN_BORDER);
|
wxTR_HAS_BUTTONS | wxSUNKEN_BORDER);
|
||||||
p_TabArea->AddTab(p_DBTree,(p_DSN+Which)->Dsn," ? ");
|
p_TabArea->AddTab(p_DBTree,(p_DSN+Which)->Dsn," ? ");
|
||||||
p_DBTree->i_ViewNr = p_TabArea->GetTabCount()-1;
|
p_DBTree->i_ViewNr = p_TabArea->GetTabCount()-1;
|
||||||
p_TabArea->Show(TRUE); // Deactivate the Window
|
p_TabArea->Show(TRUE); // Deactivate the Window
|
||||||
p_DBTree->i_Which = Which;
|
p_DBTree->i_Which = Which;
|
||||||
p_DBTree->s_DSN = (p_DSN+Which)->Dsn;
|
p_DBTree->s_DSN = (p_DSN+Which)->Dsn;
|
||||||
p_DBTree->i_TabArt = 0;
|
p_DBTree->i_TabArt = 0;
|
||||||
p_DBTree->pDoc = this;
|
p_DBTree->pDoc = this;
|
||||||
p_DBTree->OnPopulate();
|
p_DBTree->OnPopulate();
|
||||||
p_TabArea->SetActiveTab(p_DBTree->i_ViewNr);
|
p_TabArea->SetActiveTab(p_DBTree->i_ViewNr);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
// wxLogMessage("OnChosenDSN(%d) - End",Which);
|
// wxLogMessage("OnChosenDSN(%d) - End",Which);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
bool MainDoc::OnChosenTbl(int Tab,wxString Table)
|
bool MainDoc::OnChosenTbl(int Tab,wxString Table)
|
||||||
{
|
{
|
||||||
// wxLogMessage("OnChosenTbl(%d,%s)",Tab,Table.c_str());
|
// wxLogMessage("OnChosenTbl(%d,%s)",Tab,Table.c_str());
|
||||||
//-------------------------
|
//-------------------------
|
||||||
if (p_DBGrid != NULL)
|
if (p_DBGrid != NULL)
|
||||||
{
|
{
|
||||||
if (p_DBGrid->i_TabArt == 0)
|
if (p_DBGrid->i_TabArt == 0)
|
||||||
{
|
{
|
||||||
p_TabArea->Show(FALSE); // Deactivate the Window
|
p_TabArea->Show(FALSE); // Deactivate the Window
|
||||||
p_TabArea->RemoveTab(p_DBGrid->i_ViewNr);
|
p_TabArea->RemoveTab(p_DBGrid->i_ViewNr);
|
||||||
p_TabArea->Show(TRUE); // Activate the Window
|
p_TabArea->Show(TRUE); // Activate the Window
|
||||||
}
|
}
|
||||||
if (p_DBGrid->i_TabArt == 1)
|
if (p_DBGrid->i_TabArt == 1)
|
||||||
{
|
{
|
||||||
p_PageArea->Show(FALSE); // Deactivate the Window
|
p_PageArea->Show(FALSE); // Deactivate the Window
|
||||||
p_PageArea->RemoveTab(p_DBGrid->i_ViewNr);
|
p_PageArea->RemoveTab(p_DBGrid->i_ViewNr);
|
||||||
p_PageArea->Show(TRUE); // Activate the Window
|
p_PageArea->Show(TRUE); // Activate the Window
|
||||||
}
|
}
|
||||||
p_DBGrid = NULL;
|
p_DBGrid = NULL;
|
||||||
delete p_DBGrid;
|
delete p_DBGrid;
|
||||||
}
|
}
|
||||||
if (Tab == 77) // Delete only
|
if (Tab == 77) // Delete only
|
||||||
return TRUE;
|
return TRUE;
|
||||||
//-------------------------
|
//-------------------------
|
||||||
if (Tab == 0) // Tabview
|
if (Tab == 0) // Tabview
|
||||||
{
|
{
|
||||||
p_TabArea->Show(FALSE); // Deactivate the Window
|
p_TabArea->Show(FALSE); // Deactivate the Window
|
||||||
p_DBGrid = new DBGrid(p_TabArea,GRID_CTRL_DB,wxDefaultPosition, wxDefaultSize,
|
p_DBGrid = new DBGrid(p_TabArea,GRID_CTRL_DB,wxDefaultPosition, wxDefaultSize,
|
||||||
wxSUNKEN_BORDER);
|
wxSUNKEN_BORDER);
|
||||||
p_TabArea->AddTab(p_DBGrid, Table, "");
|
p_TabArea->AddTab(p_DBGrid, Table, "");
|
||||||
p_DBGrid->i_ViewNr = p_TabArea->GetTabCount()-1;
|
p_DBGrid->i_ViewNr = p_TabArea->GetTabCount()-1;
|
||||||
p_DBGrid->pDoc = this;
|
p_DBGrid->pDoc = this;
|
||||||
p_DBGrid->db_Br = db_Br;
|
p_DBGrid->db_Br = db_Br;
|
||||||
p_DBGrid->OnTableView(Table);
|
p_DBGrid->OnTableView(Table);
|
||||||
p_TabArea->SetActiveTab(p_DBGrid->i_ViewNr);
|
p_TabArea->SetActiveTab(p_DBGrid->i_ViewNr);
|
||||||
p_TabArea->Show(TRUE); // Activate the Window
|
p_TabArea->Show(TRUE); // Activate the Window
|
||||||
}
|
}
|
||||||
if (Tab == 1) // Pageview
|
if (Tab == 1) // Pageview
|
||||||
{
|
{
|
||||||
p_PageArea->Show(FALSE); // Deactivate the Window
|
p_PageArea->Show(FALSE); // Deactivate the Window
|
||||||
p_DBGrid = new DBGrid(p_PageArea,GRID_CTRL_DB,wxDefaultPosition, wxDefaultSize,
|
p_DBGrid = new DBGrid(p_PageArea,GRID_CTRL_DB,wxDefaultPosition, wxDefaultSize,
|
||||||
wxSUNKEN_BORDER);
|
wxSUNKEN_BORDER);
|
||||||
p_PageArea->AddTab(p_DBGrid, Table, "");
|
p_PageArea->AddTab(p_DBGrid, Table, "");
|
||||||
p_DBGrid->i_ViewNr = p_PageArea->GetTabCount()-1;
|
p_DBGrid->i_ViewNr = p_PageArea->GetTabCount()-1;
|
||||||
p_DBGrid->pDoc = this;
|
p_DBGrid->pDoc = this;
|
||||||
p_DBGrid->db_Br = db_Br;
|
p_DBGrid->db_Br = db_Br;
|
||||||
p_DBGrid->i_Which = p_DBTree->i_Which;
|
p_DBGrid->i_Which = p_DBTree->i_Which;
|
||||||
p_PageArea->Show(TRUE); // Activate the Window
|
p_PageArea->Show(TRUE); // Activate the Window
|
||||||
p_DBGrid->OnTableView(Table);
|
p_DBGrid->OnTableView(Table);
|
||||||
p_PageArea->SetActiveTab(p_DBGrid->i_ViewNr);
|
p_PageArea->SetActiveTab(p_DBGrid->i_ViewNr);
|
||||||
}
|
}
|
||||||
p_DBGrid->i_TabArt = Tab;
|
p_DBGrid->i_TabArt = Tab;
|
||||||
//--------------------------
|
//--------------------------
|
||||||
return TRUE;;
|
return TRUE;;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void MainDoc::OnLeer(wxString Aufrufer)
|
void MainDoc::OnLeer(wxString Aufrufer)
|
||||||
{
|
{
|
||||||
// Temp0.Printf(_("\nMainDoc::OnLeer(%s) : auch diese funktion steht eines Tages zur Verf<72>gung !"),Aufrufer.c_str());
|
// Temp0.Printf(_("\nMainDoc::OnLeer(%s) : auch diese funktion steht eines Tages zur Verf<72>gung !"),Aufrufer.c_str());
|
||||||
Temp0.Printf(_("\nMainDoc::OnLeer(%s) : even this function will one day be available !"),Aufrufer.c_str());
|
Temp0.Printf(_("\nMainDoc::OnLeer(%s) : even this function will one day be available !"),Aufrufer.c_str());
|
||||||
wxLogMessage(Temp0); Temp0.Empty();
|
wxLogMessage(Temp0); Temp0.Empty();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
BEGIN_EVENT_TABLE(DocSplitterWindow, wxSplitterWindow)
|
BEGIN_EVENT_TABLE(DocSplitterWindow, wxSplitterWindow)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
DocSplitterWindow::DocSplitterWindow(wxWindow *parent, wxWindowID id) : wxSplitterWindow(parent, id)
|
DocSplitterWindow::DocSplitterWindow(wxWindow *parent, wxWindowID id) : wxSplitterWindow(parent, id)
|
||||||
{ // Define a constructor for my p_Splitter
|
{ // Define a constructor for my p_Splitter
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
// Name: Doc.h
|
// Name: doc.h
|
||||||
// Purpose: a non-MFC Document (a do-it-yourself document)
|
// Purpose: a non-MFC Document (a do-it-yourself document)
|
||||||
// Author: Mark Johnson, mj10777@gmx.net
|
// Author: Mark Johnson, mj10777@gmx.net
|
||||||
// Modified by: 19990808.mj10777
|
// Modified by: 19990808.mj10777
|
||||||
@@ -7,80 +7,87 @@
|
|||||||
// Copyright: (c) Mark Johnson
|
// Copyright: (c) Mark Johnson
|
||||||
// Licence: wxWindows license
|
// Licence: wxWindows license
|
||||||
// RCS-ID: $Id$
|
// RCS-ID: $Id$
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
//-- Some Global Vars --------------------------------------------------------------------
|
//-- Some Global Vars --------------------------------------------------------------------
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class DSN
|
class DSN
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxString Dsn;
|
wxString Dsn;
|
||||||
wxString Drv;
|
wxString Drv;
|
||||||
wxString Pas;
|
wxString Pas;
|
||||||
wxString Usr;
|
wxString Usr;
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// Global structure for holding ODBC connection information
|
// Global structure for holding ODBC connection information
|
||||||
extern wxDbConnectInf DbConnectInf;
|
extern wxDbConnectInf DbConnectInf;
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
extern wxConfigBase *p_ProgramCfg; // All Config and Path information
|
extern wxConfigBase *p_ProgramCfg; // All Config and Path information
|
||||||
extern wxLogTextCtrl *p_LogBook; // All Log messages
|
extern wxLogTextCtrl *p_LogBook; // All Log messages
|
||||||
extern wxString LogBuf; // String for all Logs
|
extern wxString LogBuf; // String for all Logs
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class PgmCtrl; // Declared in PgmCtrl.h file
|
class PgmCtrl; // Declared in PgmCtrl.h file
|
||||||
class DocSplitterWindow; // Declared at the end of the file
|
class DocSplitterWindow; // Declared at the end of the file
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class MainDoc
|
class MainDoc
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
MainDoc();
|
MainDoc();
|
||||||
virtual ~MainDoc();
|
virtual ~MainDoc();
|
||||||
int Sash;
|
int Sash;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
//-- declare document Vars here ---------------------------------------------------------
|
//-- declare document Vars here ---------------------------------------------------------
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5;
|
wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5;
|
||||||
BrowserDB *db_Br; // Pointer to wxDB
|
BrowserDB *db_Br; // Pointer to wxDB
|
||||||
DSN *p_DSN;
|
DSN *p_DSN;
|
||||||
int i_DSN; // Counter
|
int i_DSN; // Counter
|
||||||
wxString s_BColour;
|
wxString s_BColour;
|
||||||
wxFont *ft_Doc;
|
wxFont *ft_Doc;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
DocSplitterWindow *p_Splitter;
|
DocSplitterWindow *p_Splitter;
|
||||||
wxHtmlHelpController *p_Help;
|
wxHtmlHelpController *p_Help;
|
||||||
wxFrame *p_MainFrame; // SDI Version
|
wxFrame *p_MainFrame; // SDI Version
|
||||||
PgmCtrl *p_PgmCtrl;
|
PgmCtrl *p_PgmCtrl;
|
||||||
DBTree *p_DBTree;
|
DBTree *p_DBTree;
|
||||||
DBGrid *p_DBGrid;
|
DBGrid *p_DBGrid;
|
||||||
wxTextCtrl *p_LogWin;
|
wxTextCtrl *p_LogWin;
|
||||||
wxTabbedWindow *p_TabArea;
|
wxTabbedWindow *p_TabArea;
|
||||||
wxPaggedWindow *p_PageArea;
|
wxPagedWindow *p_PageArea;
|
||||||
int i_TabNr; // Amount of active Views in Tab
|
int i_TabNr; // Amount of active Views in Tab
|
||||||
int i_PageNr; // Amount of active Views in Page
|
int i_PageNr; // Amount of active Views in Page
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
//-- declare document Functions here ----------------------------------------------------
|
//-- declare document Functions here ----------------------------------------------------
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
bool OnNewDocument();
|
bool OnNewDocument();
|
||||||
bool OnInitView();
|
bool OnInitView();
|
||||||
bool OnInitODBC();
|
bool OnInitODBC();
|
||||||
bool OnChosenDSN(int Which);
|
bool OnChosenDSN(int Which);
|
||||||
bool OnChosenTbl(int Tab,wxString Table);
|
bool OnChosenTbl(int Tab,wxString Table);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
void OnLeer(wxString Aufrufer); // Dummy Funktion
|
void OnLeer(wxString Aufrufer); // Dummy Funktion
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------
|
||||||
class DocSplitterWindow: public wxSplitterWindow
|
class DocSplitterWindow: public wxSplitterWindow
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MainDoc *pDoc;
|
MainDoc *pDoc;
|
||||||
DocSplitterWindow(wxWindow *parent, wxWindowID id);
|
DocSplitterWindow(wxWindow *parent, wxWindowID id);
|
||||||
virtual bool OnSashPositionChange(int newSashPosition)
|
virtual bool OnSashPositionChange(int newSashPosition)
|
||||||
{
|
{
|
||||||
if ( !wxSplitterWindow::OnSashPositionChange(newSashPosition) )
|
if ( !wxSplitterWindow::OnSashPositionChange(newSashPosition) )
|
||||||
return FALSE;
|
return FALSE;
|
||||||
pDoc->Sash = newSashPosition;
|
pDoc->Sash = newSashPosition;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// Name: pgmctrl.h
|
// Name: pgmctrl.cpp
|
||||||
// Purpose: Programm Control with a Tree
|
// Purpose: Programm Control with a Tree
|
||||||
// Author: Mark Johnson
|
// Author: Mark Johnson
|
||||||
// Modified by: 19990806.mj10777
|
// Modified by: 19990806.mj10777
|
||||||
@@ -39,253 +39,267 @@
|
|||||||
//-- all #includes that every .cpp needs --- 19990807.mj10777 ----------------
|
//-- all #includes that every .cpp needs --- 19990807.mj10777 ----------------
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
#include "std.h" // sorgsam Pflegen !
|
#include "std.h" // sorgsam Pflegen !
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
//-- Global functions --------------------------------------------------------------------
|
//-- Global functions --------------------------------------------------------------------
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
static inline const char *bool2String(bool b)
|
static inline const char *bool2String(bool b)
|
||||||
{
|
{
|
||||||
return b ? "" : "not ";
|
return b ? "" : "not ";
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
BEGIN_EVENT_TABLE(PgmCtrl, wxTreeCtrl)
|
BEGIN_EVENT_TABLE(PgmCtrl, wxTreeCtrl)
|
||||||
EVT_MOTION (PgmCtrl::OnMouseMove)
|
EVT_MOTION (PgmCtrl::OnMouseMove)
|
||||||
EVT_LEFT_DCLICK(PgmCtrl::OnSelChanged)
|
EVT_LEFT_DCLICK(PgmCtrl::OnSelChanged)
|
||||||
EVT_TREE_ITEM_RIGHT_CLICK(TREE_CTRL_PGM,PgmCtrl::OnRightSelect)
|
EVT_TREE_ITEM_RIGHT_CLICK(TREE_CTRL_PGM,PgmCtrl::OnRightSelect)
|
||||||
EVT_MENU(PGMCTRL_ODBC_USER,PgmCtrl::OnUserPassword)
|
EVT_MENU(PGMCTRL_ODBC_USER,PgmCtrl::OnUserPassword)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// PgmCtrl implementation
|
// PgmCtrl implementation
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
IMPLEMENT_DYNAMIC_CLASS(PgmCtrl, wxTreeCtrl)
|
IMPLEMENT_DYNAMIC_CLASS(PgmCtrl, wxTreeCtrl)
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
PgmCtrl::PgmCtrl(wxWindow *parent) : wxTreeCtrl(parent)
|
PgmCtrl::PgmCtrl(wxWindow *parent) : wxTreeCtrl(parent)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
PgmCtrl::PgmCtrl(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size, long style)
|
PgmCtrl::PgmCtrl(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size, long style)
|
||||||
: wxTreeCtrl(parent, id, pos, size, style)
|
: wxTreeCtrl(parent, id, pos, size, style)
|
||||||
{
|
{
|
||||||
// Make an image list containing small icons
|
// Make an image list containing small icons
|
||||||
p_imageListNormal = new wxImageList(16, 16, TRUE);
|
p_imageListNormal = new wxImageList(16, 16, TRUE);
|
||||||
// should correspond to TreeIc_xxx enum
|
// should correspond to TreeIc_xxx enum
|
||||||
#if defined(__WXMSW__) && defined(__WIN16__)
|
#if defined(__WXMSW__) && defined(__WIN16__)
|
||||||
// This is required in 16-bit Windows mode only because we can't load a specific (16x16)
|
// This is required in 16-bit Windows mode only because we can't load a specific (16x16)
|
||||||
// icon image, so it comes out stretched
|
// icon image, so it comes out stretched
|
||||||
p_imageListNormal->Add(wxBitmap("bitmap1", wxBITMAP_TYPE_BMP_RESOURCE));
|
p_imageListNormal->Add(wxBitmap("bitmap1", wxBITMAP_TYPE_BMP_RESOURCE));
|
||||||
p_imageListNormal->Add(wxBitmap("bitmap2", wxBITMAP_TYPE_BMP_RESOURCE));
|
p_imageListNormal->Add(wxBitmap("bitmap2", wxBITMAP_TYPE_BMP_RESOURCE));
|
||||||
#else
|
#else
|
||||||
p_imageListNormal->Add(wxICON(aLogo));
|
p_imageListNormal->Add(wxICON(aLogo));
|
||||||
p_imageListNormal->Add(wxICON(DsnClosed));
|
p_imageListNormal->Add(wxICON(DsnClosed));
|
||||||
p_imageListNormal->Add(wxICON(DsnOpen));
|
p_imageListNormal->Add(wxICON(DsnOpen));
|
||||||
p_imageListNormal->Add(wxICON(DocClosed));
|
p_imageListNormal->Add(wxICON(DocClosed));
|
||||||
p_imageListNormal->Add(wxICON(DocOpen));
|
p_imageListNormal->Add(wxICON(DocOpen));
|
||||||
p_imageListNormal->Add(wxICON(FolderClosed));
|
p_imageListNormal->Add(wxICON(FolderClosed));
|
||||||
p_imageListNormal->Add(wxICON(FolderOpen));
|
p_imageListNormal->Add(wxICON(FolderOpen));
|
||||||
#endif
|
#endif
|
||||||
SetImageList(p_imageListNormal);
|
SetImageList(p_imageListNormal);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
PgmCtrl::~PgmCtrl()
|
PgmCtrl::~PgmCtrl()
|
||||||
{
|
{
|
||||||
delete p_imageListNormal;
|
delete p_imageListNormal;
|
||||||
delete popupMenu1;
|
delete popupMenu1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
#undef TREE_EVENT_HANDLER
|
#undef TREE_EVENT_HANDLER
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
int PgmCtrl::OnPopulate()
|
int PgmCtrl::OnPopulate()
|
||||||
{
|
{
|
||||||
SetFont(* pDoc->ft_Doc);
|
SetFont(* pDoc->ft_Doc);
|
||||||
wxTreeItemId Root, Folder, Docu;
|
wxTreeItemId Root, Folder, Docu;
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
int i;
|
int i;
|
||||||
double dTmp = 1234567.89;
|
double dTmp = 1234567.89;
|
||||||
Temp0.Printf(_("%s Functions"),p_ProgramCfg->GetAppName().c_str());
|
Temp0.Printf(_("%s Functions"),p_ProgramCfg->GetAppName().c_str());
|
||||||
Root = AddRoot(Temp0,TreeIc_Logo,TreeIc_Logo, new TreeData("Root"));
|
Root = AddRoot(Temp0,TreeIc_Logo,TreeIc_Logo, new TreeData("Root"));
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
Folder = AppendItem(Root, _("Program settings") ,TreeIc_FolderClosed, TreeIc_FolderOpen, new TreeData("Settings"));
|
Folder = AppendItem(Root, _("Program settings") ,TreeIc_FolderClosed, TreeIc_FolderOpen, new TreeData("Settings"));
|
||||||
p_ProgramCfg->Read("/Local/langid",&Temp0); p_ProgramCfg->Read("/Local/language",&Temp2);
|
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();
|
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"));
|
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();
|
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,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 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, _("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"));
|
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"));
|
Folder = AppendItem(Root, "ODBC DSN",TreeIc_FolderClosed,TreeIc_FolderOpen,new TreeData("ODBC-DSN"));
|
||||||
for (i=0;i<pDoc->i_DSN;i++)
|
for (i=0;i<pDoc->i_DSN;i++)
|
||||||
{
|
{
|
||||||
Temp0.Printf("ODBC-%s",(pDoc->p_DSN+i)->Dsn.c_str());
|
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));
|
Docu = AppendItem(Folder,(pDoc->p_DSN+i)->Dsn ,TreeIc_DsnClosed,TreeIc_DsnOpen, new TreeData(Temp0));
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
popupMenu1 = NULL;
|
popupMenu1 = NULL;
|
||||||
popupMenu1 = new wxMenu("");
|
popupMenu1 = new wxMenu("");
|
||||||
popupMenu1->Append(PGMCTRL_ODBC_USER, _("Set Username and Password"));
|
popupMenu1->Append(PGMCTRL_ODBC_USER, _("Set Username and Password"));
|
||||||
// popupMenu1->AppendSeparator();
|
// popupMenu1->AppendSeparator();
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
Expand(Root);
|
Expand(Root);
|
||||||
Expand(Folder);
|
Expand(Folder);
|
||||||
//---------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void PgmCtrl::OnSelChanged(wxMouseEvent& WXUNUSED(event))
|
void PgmCtrl::OnSelChanged(wxMouseEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
Temp0.Empty(); Temp1.Empty();
|
Temp0.Empty(); Temp1.Empty();
|
||||||
pDoc->p_MainFrame->SetStatusText(Temp0,0);
|
pDoc->p_MainFrame->SetStatusText(Temp0,0);
|
||||||
// Get the Information that we need
|
// Get the Information that we need
|
||||||
wxTreeItemId itemId = GetSelection();
|
wxTreeItemId itemId = GetSelection();
|
||||||
TreeData *item = (TreeData *)GetItemData(itemId);
|
TreeData *item = (TreeData *)GetItemData(itemId);
|
||||||
if (item != NULL )
|
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)
|
|
||||||
{
|
{
|
||||||
pDoc->OnChosenDSN(i);
|
int Treffer = 0;
|
||||||
}
|
Temp1.Printf("%s",item->m_desc.c_str());
|
||||||
}
|
//--------------------------------------------------------------------------------------
|
||||||
Treffer++;
|
if (Temp1 == "Language English")
|
||||||
}
|
{
|
||||||
//--------------------------------------------------------------------------------------
|
Temp0 = "std";
|
||||||
if (Treffer == 0)
|
p_ProgramCfg->Write("/Local/langid",Temp0);
|
||||||
{
|
Temp0 = _("-I-> After a programm restart, the language will be changed to English.");
|
||||||
//-------------------------------------------------------------------------------------
|
wxMessageBox(Temp0);
|
||||||
Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold,"
|
}
|
||||||
"%u children (%u immediately under this item)."),
|
if (Temp1 == "Language German")
|
||||||
item->m_desc.c_str(),
|
{
|
||||||
bool2String(IsSelected(itemId)),
|
Temp0 = "de";
|
||||||
bool2String(IsExpanded(itemId)),
|
p_ProgramCfg->Write("/Local/langid",Temp0);
|
||||||
bool2String(IsBold(itemId)),
|
Temp0 = _("-I-> After a programm restart, the language will be changed to German.");
|
||||||
GetChildrenCount(itemId),
|
wxMessageBox(Temp0);
|
||||||
GetChildrenCount(itemId));
|
}
|
||||||
LogBuf.Printf("-I-> PgmCtrl::OnSelChanged - %s",Temp0.c_str());
|
//--------------------------------------------------------------------------------------
|
||||||
wxLogMessage( "%s", LogBuf.c_str() );
|
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 !");
|
||||||
void PgmCtrl::OnRightSelect(wxTreeEvent& WXUNUSED(event))
|
wxBell(); // Ding_a_Ling
|
||||||
{
|
Treffer++;
|
||||||
int i;
|
}
|
||||||
Temp0.Empty();
|
//--------------------------------------------------------------------------------------
|
||||||
// Get the Information that we need
|
if (Temp1.Contains("ODBC-"))
|
||||||
wxTreeItemId itemId = GetSelection();
|
{
|
||||||
DBTreeData *item = (DBTreeData *)GetItemData(itemId);
|
Temp1 = Temp1.Mid(5,wxSTRING_MAXLEN);
|
||||||
SaveDSN.Empty();
|
for (i=0;i<pDoc->i_DSN;i++)
|
||||||
if ( item != NULL )
|
{
|
||||||
{
|
if (Temp1 == (pDoc->p_DSN+i)->Dsn)
|
||||||
int Treffer = 0;
|
{
|
||||||
Temp1.Printf("%s",item->m_desc.c_str());
|
pDoc->OnChosenDSN(i);
|
||||||
//--------------------------------------------------------------------------------------
|
}
|
||||||
if (Temp1.Contains("ODBC-"))
|
}
|
||||||
{
|
Treffer++;
|
||||||
Temp1 = Temp1.Mid(5,wxSTRING_MAXLEN);
|
}
|
||||||
for (i=0;i<pDoc->i_DSN;i++)
|
//--------------------------------------------------------------------------------------
|
||||||
{
|
if (Treffer == 0)
|
||||||
if (Temp1 == (pDoc->p_DSN+i)->Dsn)
|
{
|
||||||
{
|
//-------------------------------------------------------------------------------------
|
||||||
SaveDSN = Temp1;
|
Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold,"
|
||||||
PopupMenu(popupMenu1,TreePos.x,TreePos.y);
|
"%u children (%u immediately under this item)."),
|
||||||
}
|
item->m_desc.c_str(),
|
||||||
}
|
bool2String(IsSelected(itemId)),
|
||||||
Treffer++;
|
bool2String(IsExpanded(itemId)),
|
||||||
}
|
|
||||||
//--------------------------------------------------------------------------------------
|
|
||||||
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)),
|
bool2String(IsBold(itemId)),
|
||||||
GetChildrenCount(itemId),
|
GetChildrenCount(itemId),
|
||||||
GetChildrenCount(itemId));
|
GetChildrenCount(itemId));
|
||||||
LogBuf.Printf("-I-> DBTree::OnSelChanged - %s",Temp0.c_str());
|
LogBuf.Printf("-I-> PgmCtrl::OnSelChanged - %s",Temp0.c_str());
|
||||||
wxLogMessage( "%s", LogBuf.c_str() );
|
wxLogMessage( "%s", LogBuf.c_str() );
|
||||||
*/
|
//-------------------------------------------------------------------------------------
|
||||||
}
|
}
|
||||||
//--------------------------------------------------------------------------------------
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------------
|
||||||
|
void PgmCtrl::OnRightSelect(wxTreeEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
Temp0.Empty();
|
||||||
|
// Get the Information that we need
|
||||||
|
wxTreeItemId itemId = GetSelection();
|
||||||
|
DBTreeData *item = (DBTreeData *)GetItemData(itemId);
|
||||||
|
SaveDSN.Empty();
|
||||||
|
if ( item != NULL )
|
||||||
|
{
|
||||||
|
int Treffer = 0;
|
||||||
|
Temp1.Printf("%s",item->m_desc.c_str());
|
||||||
|
//--------------------------------------------------------------------------------------
|
||||||
|
if (Temp1.Contains("ODBC-"))
|
||||||
|
{
|
||||||
|
Temp1 = Temp1.Mid(5,wxSTRING_MAXLEN);
|
||||||
|
for (i=0;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)),
|
||||||
|
bool2String(IsBold(itemId)),
|
||||||
|
GetChildrenCount(itemId),
|
||||||
|
GetChildrenCount(itemId));
|
||||||
|
LogBuf.Printf("-I-> DBTree::OnSelChanged - %s",Temp0.c_str());
|
||||||
|
wxLogMessage( "%s", LogBuf.c_str() );
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
//--------------------------------------------------------------------------------------
|
||||||
|
}
|
||||||
} // void PgmCtrl::OnRightSelect(wxTreeEvent& WXUNUSED(event))
|
} // void PgmCtrl::OnRightSelect(wxTreeEvent& WXUNUSED(event))
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void PgmCtrl::OnMouseMove(wxMouseEvent &event)
|
void PgmCtrl::OnMouseMove(wxMouseEvent &event)
|
||||||
{
|
{
|
||||||
TreePos = event.GetPosition();
|
TreePos = event.GetPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
void PgmCtrl::OnUserPassword(wxCommandEvent& WXUNUSED(event))
|
void PgmCtrl::OnUserPassword(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
// wxMessageBox(SaveDSN);
|
// wxMessageBox(SaveDSN);
|
||||||
int i;
|
int i;
|
||||||
//--------------------------------------------
|
//--------------------------------------------
|
||||||
DlgUser *p_Dlg = new DlgUser(this,pDoc,"");
|
DlgUser *p_Dlg = new DlgUser(this,pDoc,"");
|
||||||
//-------------------------------------------
|
//-------------------------------------------
|
||||||
for (i=0;i<pDoc->i_DSN;i++)
|
for (i=0;i<pDoc->i_DSN;i++)
|
||||||
{
|
{
|
||||||
if (SaveDSN == (pDoc->p_DSN+i)->Dsn)
|
wxYield();
|
||||||
{
|
if (SaveDSN == (pDoc->p_DSN+i)->Dsn)
|
||||||
p_Dlg->pDoc = pDoc;
|
{
|
||||||
p_Dlg->s_DSN = (pDoc->p_DSN+i)->Dsn;
|
p_Dlg->pDoc = pDoc;
|
||||||
p_Dlg->s_User = (pDoc->p_DSN+i)->Usr;
|
p_Dlg->s_DSN = (pDoc->p_DSN+i)->Dsn;
|
||||||
p_Dlg->s_Password = (pDoc->p_DSN+i)->Pas;
|
p_Dlg->s_User = (pDoc->p_DSN+i)->Usr;
|
||||||
p_Dlg->OnInit();
|
p_Dlg->s_Password = (pDoc->p_DSN+i)->Pas;
|
||||||
p_Dlg->Fit();
|
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);
|
// 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);
|
||||||
bool OK = FALSE;
|
// wxMessageBox(Temp0);
|
||||||
if (p_Dlg->ShowModal() == wxID_OK)
|
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->p_DSN+i)->Usr = p_Dlg->s_User;
|
||||||
(pDoc->db_Br+i)->UserName = (pDoc->p_DSN+i)->Usr;
|
(pDoc->p_DSN+i)->Pas = p_Dlg->s_Password;
|
||||||
(pDoc->db_Br+i)->Password = (pDoc->p_DSN+i)->Pas;
|
(pDoc->db_Br+i)->UserName = (pDoc->p_DSN+i)->Usr;
|
||||||
OK = TRUE;
|
(pDoc->db_Br+i)->Password = (pDoc->p_DSN+i)->Pas;
|
||||||
}
|
OK = TRUE;
|
||||||
delete p_Dlg;
|
}
|
||||||
if (!OK) return;
|
delete p_Dlg;
|
||||||
//--------------------
|
if (!OK)
|
||||||
break; // We have what we want, leave
|
return;
|
||||||
}
|
//--------------------
|
||||||
}
|
break; // We have what we want, leave
|
||||||
//-------------------------------------------
|
}
|
||||||
SaveDSN.Empty();
|
}
|
||||||
|
//-------------------------------------------
|
||||||
|
SaveDSN.Empty();
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
|
@@ -7,62 +7,66 @@
|
|||||||
// RCS-ID: $Id$
|
// RCS-ID: $Id$
|
||||||
// Copyright: (c) Mark Johnson, Berlin Germany, mj10777@gmx.net
|
// Copyright: (c) Mark Johnson, Berlin Germany, mj10777@gmx.net
|
||||||
// Licence: wxWindows license
|
// Licence: wxWindows license
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class MainDoc; // Declared in doc.h file
|
class MainDoc; // Declared in doc.h file
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class TreeData : public wxTreeItemData
|
class TreeData : public wxTreeItemData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TreeData(const wxString& desc) : m_desc(desc) { }
|
TreeData(const wxString& desc) : m_desc(desc) { }
|
||||||
void ShowInfo(wxTreeCtrl *tree);
|
void ShowInfo(wxTreeCtrl *tree);
|
||||||
wxString m_desc;
|
wxString m_desc;
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
class PgmCtrl : public wxTreeCtrl
|
class PgmCtrl : public wxTreeCtrl
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum
|
enum
|
||||||
{ // The order here must be the same as in m_imageListNormal !
|
{ // The order here must be the same as in m_imageListNormal !
|
||||||
TreeIc_Logo, // logo.ico
|
TreeIc_Logo, // logo.ico
|
||||||
TreeIc_DsnClosed, // dsnclose.ico
|
TreeIc_DsnClosed, // dsnclose.ico
|
||||||
TreeIc_DsnOpen, // dsnopen.ico
|
TreeIc_DsnOpen, // dsnopen.ico
|
||||||
TreeIc_DocClosed, // d_closed.ico
|
TreeIc_DocClosed, // d_closed.ico
|
||||||
TreeIc_DocOpen, // d_open.ico
|
TreeIc_DocOpen, // d_open.ico
|
||||||
TreeIc_FolderClosed, // f_closed.ico
|
TreeIc_FolderClosed, // f_closed.ico
|
||||||
TreeIc_FolderOpen // f_open.ico
|
TreeIc_FolderOpen // f_open.ico
|
||||||
};
|
};
|
||||||
wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5;
|
wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5;
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
PgmCtrl() { }
|
PgmCtrl() { }
|
||||||
PgmCtrl(wxWindow *parent);
|
PgmCtrl(wxWindow *parent);
|
||||||
PgmCtrl(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size,long style);
|
PgmCtrl(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size,long style);
|
||||||
virtual ~PgmCtrl();
|
virtual ~PgmCtrl();
|
||||||
MainDoc *pDoc;
|
MainDoc *pDoc;
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
int i_TabArt; // Tab = 0 ; Page = 1;
|
int i_TabArt; // Tab = 0 ; Page = 1;
|
||||||
int i_ViewNr; // View Nummer in Tab / Page
|
int i_ViewNr; // View Nummer in Tab / Page
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
wxImageList *p_imageListNormal;
|
wxImageList *p_imageListNormal;
|
||||||
wxMenu *popupMenu1; // OnDBClass
|
wxMenu *popupMenu1; // OnDBClass
|
||||||
wxPoint TreePos;
|
wxPoint TreePos;
|
||||||
wxString SaveDSN; // Needed for User and Password
|
wxString SaveDSN; // Needed for User and Password
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
public:
|
public:
|
||||||
int OnPopulate();
|
int OnPopulate();
|
||||||
void OnSelChanged(wxMouseEvent& event);
|
void OnSelChanged(wxMouseEvent& event);
|
||||||
void OnRightSelect(wxTreeEvent& event);
|
void OnRightSelect(wxTreeEvent& event);
|
||||||
void OnMouseMove(wxMouseEvent& event);
|
void OnMouseMove(wxMouseEvent& event);
|
||||||
void OnUserPassword(wxCommandEvent& event);
|
void OnUserPassword(wxCommandEvent& event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
// NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS()
|
// NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS()
|
||||||
// if you want your overloaded OnCompareItems() to be called.
|
// if you want your overloaded OnCompareItems() to be called.
|
||||||
// OTOH, if you don't want it you may omit the next line - this will
|
// OTOH, if you don't want it you may omit the next line - this will
|
||||||
// make default (alphabetical) sorting much faster under wxMSW.
|
// make default (alphabetical) sorting much faster under wxMSW.
|
||||||
DECLARE_DYNAMIC_CLASS(PgmCtrl)
|
DECLARE_DYNAMIC_CLASS(PgmCtrl)
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------
|
||||||
#define PGMCTRL_01_BEGIN 1000
|
#define PGMCTRL_01_BEGIN 1000
|
||||||
#define PGMCTRL_ODBC_USER 1001
|
#define PGMCTRL_ODBC_USER 1001
|
||||||
|
@@ -22,7 +22,7 @@
|
|||||||
#include <wx/toolbar.h>
|
#include <wx/toolbar.h>
|
||||||
#include <wx/treectrl.h>
|
#include <wx/treectrl.h>
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
#include <wx/xpmhand.h>
|
#include <wx/xpmhand.h>
|
||||||
#endif
|
#endif
|
||||||
//---------------------------
|
//---------------------------
|
||||||
#include "tabpgwin.h" // Original name : "controlarea.h"
|
#include "tabpgwin.h" // Original name : "controlarea.h"
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -9,7 +9,7 @@
|
|||||||
// - to prevent Warnings under MingGW32
|
// - to prevent Warnings under MingGW32
|
||||||
// Modified by: 19990909 : mj10777@gmx.net
|
// Modified by: 19990909 : mj10777@gmx.net
|
||||||
// - mNoVertScroll TRUE = no / FALSE = Original Code
|
// - mNoVertScroll TRUE = no / FALSE = Original Code
|
||||||
// the Original Code Paints a Vertical Scroll in wxPaggedWindow
|
// the Original Code Paints a Vertical Scroll in wxPagedWindow
|
||||||
// which is not needed in this Version. Use TRUE for this.
|
// which is not needed in this Version. Use TRUE for this.
|
||||||
// Created: 07/09/98
|
// Created: 07/09/98
|
||||||
// RCS-ID: $Id$
|
// RCS-ID: $Id$
|
||||||
@@ -60,7 +60,7 @@ public:
|
|||||||
|
|
||||||
virtual wxFont GetLabelingFont();
|
virtual wxFont GetLabelingFont();
|
||||||
|
|
||||||
// FOR NOW:: scrollbars are actually related to wxPaggedWindow
|
// FOR NOW:: scrollbars are actually related to wxPagedWindow
|
||||||
|
|
||||||
wxScrollBar* mpTabScroll;
|
wxScrollBar* mpTabScroll;
|
||||||
wxScrollBar* mpHorizScroll;
|
wxScrollBar* mpHorizScroll;
|
||||||
@@ -154,9 +154,9 @@ public:
|
|||||||
* of Microsoft Developer Studio 4.xx
|
* of Microsoft Developer Studio 4.xx
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class wxPaggedWindow : public wxTabbedWindow
|
class wxPagedWindow : public wxTabbedWindow
|
||||||
{
|
{
|
||||||
DECLARE_DYNAMIC_CLASS( wxPaggedWindow )
|
DECLARE_DYNAMIC_CLASS( wxPagedWindow )
|
||||||
// the protected: public: changes prevents Warnings in gcc
|
// the protected: public: changes prevents Warnings in gcc
|
||||||
protected:
|
protected:
|
||||||
bool mScrollEventInProgress;
|
bool mScrollEventInProgress;
|
||||||
@@ -199,8 +199,8 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxPaggedWindow();
|
wxPagedWindow();
|
||||||
~wxPaggedWindow();
|
~wxPagedWindow();
|
||||||
|
|
||||||
// NOTE:: use public methods of the base class
|
// NOTE:: use public methods of the base class
|
||||||
// to add "pages" to this window
|
// to add "pages" to this window
|
||||||
|
Reference in New Issue
Block a user