--- /dev/null
+/* XPM */\r
+static char* COL_xpm[] = {\r
+"16 16 4 1",\r
+" c #000000",\r
+"! c #000080",\r
+"# c #C0C0C0",\r
+"$ c #808080",\r
+"$$$$$$$ $$$$",\r
+"$######!!!!!### ",\r
+"$######!!!!!### ",\r
+"$######!!!!!### ",\r
+"$######!###!### ",\r
+"$# #!$$$!# # ",\r
+"$# ####! !### ",\r
+"$# #! ! !# # ",\r
+"$# ####! !### ",\r
+"$# #! ! !# # ",\r
+"$# ####! !### ",\r
+"$# #! ! !# # ",\r
+"$$$$$$#! !### ",\r
+" #! !# ",\r
+" #!!!!!# ",\r
+" "};\r
--- /dev/null
+/* XPM */\r
+static char * DocClosed_xpm[] = {\r
+/* width height ncolors chars_per_pixel */\r
+"16 16 4 1",\r
+/* colors */\r
+" s None c None",\r
+". c #000000",\r
+"& c #ff0000",\r
+"+ c #ffffff",\r
+/* pixels */\r
+" ",\r
+"........ ",\r
+".++++++.. ",\r
+".+.+.++.+. ",\r
+".++++++.... ",\r
+".+.+.+++++.. ",\r
+".+++++++++.&. ",\r
+".+.+.+.+.+.&&. ",\r
+".+++++++++.&&&. ",\r
+".+.+.+.+.+.&&&. ",\r
+".+++++++++.&&. ",\r
+".+.+.+.+.+.&. ",\r
+".+++++++++.. ",\r
+"........... ",\r
+" ",\r
+" "};\r
--- /dev/null
+/* XPM */\r
+static char * DocOpen_xpm[] = {\r
+/* width height ncolors chars_per_pixel */\r
+"16 16 4 1",\r
+/* colors */\r
+" s None c None",\r
+". c #000000",\r
+"& c #00ff00",\r
+"+ c #ffffff",\r
+/* pixels */\r
+" ",\r
+"........ ",\r
+".++++++.. ",\r
+".+.+.++.+. ",\r
+".++++++.... ",\r
+".+.+.+++++.. ",\r
+".+++++++++.&. ",\r
+".+.+.+.+.+.&&. ",\r
+".+++++++++.&&&. ",\r
+".+.+.+.+.+.&&&. ",\r
+".+++++++++.&&. ",\r
+".+.+.+.+.+.&. ",\r
+".+++++++++.. ",\r
+"........... ",\r
+" ",\r
+" "};\r
--- /dev/null
+/* XPM */\r
+static char* DSN_xpm[] = {\r
+"16 16 4 1",\r
+" c #000000",\r
+"! c #C0C0C0",\r
+"# c #808080",\r
+"$ c #FFFF00",\r
+" # ####### ",\r
+" ###!#!!!!## ",\r
+" #!#!!!!!!!!# ",\r
+"$## !!###!!!!# ",\r
+" # #!!!!!!!!# ",\r
+" #!#!#!!!### ",\r
+" $#!#!### ## ",\r
+" # $!!#### # ",\r
+" # !### ## ",\r
+" # !!!#### # ",\r
+" # !### ## ",\r
+" # !!!#### # ",\r
+" # !### ## ",\r
+" # !!!#### # ",\r
+" ## !### ## ",\r
+" ######## "};\r
--- /dev/null
+/* XPM */\r
+static char* DsnClosed_xpm[] = {\r
+"16 16 4 1",\r
+" c #000000",\r
+"! c #C0C0C0",\r
+"# c #808080",\r
+"$ c #FF0000",\r
+" $ $##$### ",\r
+" $#$!$!!!!## ",\r
+" #!$!!!!!!!!# ",\r
+"$$$ !!$$$!!!!# ",\r
+" # $!!!!!!!!# ",\r
+" $!$!$!!!### ",\r
+" $!!$!#!$ ## ",\r
+" # $!!#### # ",\r
+" # !### ## ",\r
+" # !!!#### # ",\r
+" # !### ## ",\r
+" # !!!#### # ",\r
+" # !### ## ",\r
+" # !!!#### # ",\r
+" ## !### ## ",\r
+" ######## "};\r
--- /dev/null
+/* XPM */\r
+static char* DsnOpen_xpm[] = {\r
+"16 16 4 1",\r
+" c #000000",\r
+"! c #C0C0C0",\r
+"# c #808080",\r
+"$ c #00FF00",\r
+" $ $##$### ",\r
+" $#$!$!!!!## ",\r
+" #!$!!!!!!!!# ",\r
+"$$$ !!$$$!!!!# ",\r
+" # $!!!!!!!!# ",\r
+" $!$!$!!!### ",\r
+" $!!$!#!$ ## ",\r
+" # $!!#### # ",\r
+" # !### ## ",\r
+" # !!!#### # ",\r
+" # !### ## ",\r
+" # !!!#### # ",\r
+" # !### ## ",\r
+" # !!!#### # ",\r
+" ## !### ## ",\r
+" ######## "};\r
--- /dev/null
+/* XPM */\r
+static char * FolderClosed_xpm[] = {\r
+/* width height ncolors chars_per_pixel */\r
+"16 16 6 1",\r
+/* colors */\r
+" s None c None",\r
+". c #000000",\r
+"+ c #c0c0c0",\r
+"@ c #808080",\r
+"# c #ffff00",\r
+"$ c #ffffff",\r
+/* pixels */\r
+" ",\r
+" @@@@@ ",\r
+" @#+#+#@ ",\r
+" @#+#+#+#@@@@@@ ",\r
+" @$$$$$$$$$$$$@.",\r
+" @$#+#+#+#+#+#@.",\r
+" @$+#+#+#+#+#+@.",\r
+" @$#+#+#+#+#+#@.",\r
+" @$+#+#+#+#+#+@.",\r
+" @$#+#+#+#+#+#@.",\r
+" @$+#+#+#+#+#+@.",\r
+" @$#+#+#+#+#+#@.",\r
+" @@@@@@@@@@@@@@.",\r
+" ..............",\r
+" ",\r
+" "};\r
--- /dev/null
+/* XPM */\r
+static char * FolderOpen_xpm[] = {\r
+/* width height ncolors chars_per_pixel */\r
+"16 16 6 1",\r
+/* colors */\r
+" s None c None",\r
+". c #000000",\r
+"+ c #c0c0c0",\r
+"@ c #808080",\r
+"# c #ffff00",\r
+"$ c #ffffff",\r
+/* pixels */\r
+" ",\r
+" @@@@@ ",\r
+" @$$$$$@ ",\r
+" @$#+#+#$@@@@@@ ",\r
+" @$+#+#+$$$$$$@.",\r
+" @$#+#+#+#+#+#@.",\r
+"@@@@@@@@@@@@@#@.",\r
+"@$$$$$$$$$$@@+@.",\r
+"@$#+#+#+#+##.@@.",\r
+" @$#+#+#+#+#+.@.",\r
+" @$+#+#+#+#+#.@.",\r
+" @$+#+#+#+##@..",\r
+" @@@@@@@@@@@@@.",\r
+" .............",\r
+" ",\r
+" "};\r
--- /dev/null
+/* XPM */\r
+static char* XpmKEY_xpm[] = {\r
+"16 16 7 1",\r
+" c #000000",\r
+"! c #008000",\r
+"# c #808000",\r
+"$ c #000080",\r
+"% c #C0C0C0",\r
+"& c #808080",\r
+"' c #FFFF00",\r
+" && ",\r
+" ## #&% ",\r
+" #'& $'#& ",\r
+"#''& $'#% ",\r
+"#''& %'#& ",\r
+" #'''''%#% ",\r
+" ##%%%'#% ",\r
+" #%'# ",\r
+" #'#& !!!!! ",\r
+" %#'## !!!!! ",\r
+" ###& !! !! ",\r
+" #'## !!!!! ",\r
+" ###& !!!! ",\r
+" #'#& !! ",\r
+" #%#& !!!! ",\r
+" &% "};
\ No newline at end of file
--- /dev/null
+/* XPM */\r
+static char* XpmKEYF_xpm[] = {\r
+"16 16 7 1",\r
+" c #000000",\r
+"! c #808000",\r
+"# c #000080",\r
+"$ c #C0C0C0",\r
+"% c #808080",\r
+"& c #FFFF00",\r
+"' c #0000FF",\r
+" %% ",\r
+" !! !%$ ",\r
+" !&% #&!% ",\r
+"!&&% #&!$ ",\r
+"!&&% $&!% ",\r
+" !&&&&&$!$ ",\r
+" !!$$$&!$ ",\r
+" !$&!$ ",\r
+" !&!% '''''' ",\r
+" $!&!! '' ' ",\r
+" !!!% '' ",\r
+" !&!! ''' ",\r
+" !!!% '' ",\r
+" !&!% '' ",\r
+" !$!% '''' ",\r
+" %$ "};
\ No newline at end of file
--- /dev/null
+/* XPM */\r
+static char* Logo_xpm[] = {\r
+"16 16 4 1",\r
+" c #000000",\r
+"! c #C0C0C0",\r
+"# c #808080",\r
+"$ c #FF0000",\r
+" ###### ",\r
+" ##!!! ## ",\r
+" #!!! !!! # ",\r
+" #!!! ! !! # ",\r
+" #!! ! !!!! ",\r
+" #!! ! !!!!! ",\r
+" #!! !!!!! ",\r
+" # !! # ",\r
+" # !! ### $ ",\r
+" #!!!!# !$$ ",\r
+" # !!### ##!$$ ",\r
+" #!!!!#### #!$$ ",\r
+" # !!### ## #!$$",\r
+" #!!!!#### # #$#",\r
+" ##!!### ## # ",\r
+" ######## "};\r
--- /dev/null
+/* XPM */\r
+static char * PgmCtrl_xpm[] = {\r
+/* width height ncolors chars_per_pixel */\r
+"16 16 5 1",\r
+/* colors */\r
+" s None c None",\r
+". c #000000",\r
+"+ c #ff0000",\r
+"@ c #0000ff",\r
+"# c #ffffff",\r
+/* pixels */\r
+" ",\r
+" ",\r
+" ########## ",\r
+" #........# ",\r
+" #........# ",\r
+" #........# ",\r
+" #..########### ",\r
+" #..#+++++++++# ",\r
+" ####++#####++# ",\r
+" #+#@@@@@#+# ",\r
+" #+#@@@@@#+# ",\r
+" #+#@@@@@#+# ",\r
+" #++#####++# ",\r
+" #+++++++++# ",\r
+" ########### ",\r
+" "};\r
--- /dev/null
+/* XPM */\r
+static char* TAB[] = {\r
+"16 16 7 1",\r
+" c #000000",\r
+"! c #800080",\r
+"# c #008080",\r
+"$ c #C0C0C0",\r
+"% c #808080",\r
+"& c #0000FF",\r
+"' c #00FFFF",\r
+" ",\r
+" ",\r
+"!!!!!!!!!!!!!!!!",\r
+"!&&&&&&&&&&&&&&!",\r
+"!!!!!!!!!!!!!!!!",\r
+"!'$'#$'$$$#$$$$!",\r
+"!$'$#'$$$$#$$$$!",\r
+"!##############!",\r
+"!$'$#$$$$$#$$%$!",\r
+"!'$$#$$$$$#$%$%!",\r
+"!##############!",\r
+"!$$$#$$%$$#%%%%!",\r
+"!$$%#$%$%%#%%%%!",\r
+"!!!!!!!!!!!!!!!!",\r
+" ",\r
+" "};\r
--- /dev/null
+//---------------------------------------------------------------------------
+// Name: BrowserDB.h,cpp
+// Purpose: a wxDB;
+// Author: Mark Johnson, mj10777@gmx.net
+// Modified by:
+// Created: 19991127.mj10777
+// Copyright: (c) Mark Johnson
+// Licence: wxWindows license
+//---------------------------------------------------------------------------
+//-- 1)
+//---------------------------------------------------------------------------
+//-- all #ifdefs that the whole Project needs. ------------------------------
+//---------------------------------------------------------------------------
+#ifdef __GNUG__
+ #pragma implementation
+ #pragma interface
+#endif
+//---------------------------------------------------------------------------
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+//---------------------------------------------------------------------------
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+//---------------------------------------------------------------------------
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif
+//---------------------------------------------------------------------------
+#include <wx/dbtable.h>
+#include "std.h"
+//---------------------------------------------------------------------------
+// Global structure for holding ODBC connection information
+// - darf nur einmal im Projekte definiert werden ?? Extra Databasse Klasse ?
+struct DbStuff ConnectInf; // Für DBase
+//---------------------------------------------------------------------------
+extern DbList* WXDLLEXPORT PtrBegDbList; /* from db.cpp, used in getting back error results from db connections */
+//---------------------------------------------------------------------------
+char *GetExtendedDBErrorMsg(char *ErrFile, int ErrLine)
+{
+ static wxString msg;
+ wxString tStr;
+ if (ErrFile || ErrLine)
+ {
+ msg += "File: ";
+ msg += ErrFile;
+ msg += " Line: ";
+ tStr.Printf("%d",ErrLine);
+ msg += tStr.GetData();
+ // msg += "\n";
+ }
+ msg.Append ("\nODBC errors:\n");
+ // msg += "\n";
+ /* Scan through each database connection displaying
+ * any ODBC errors that have occured. */
+ for (DbList *pDbList = PtrBegDbList; pDbList; pDbList = pDbList->PtrNext)
+ {
+ // Skip over any free connections
+ if (pDbList->Free)
+ continue;
+ // Display errors for this connection
+ for (int i = 0; i < DB_MAX_ERROR_HISTORY; i++)
+ {
+ if (pDbList->PtrDb->errorList[i])
+ {
+ msg.Append(pDbList->PtrDb->errorList[i]);
+ if (strcmp(pDbList->PtrDb->errorList[i],"") != 0)
+ msg.Append("\n");
+ }
+ }
+ }
+ msg += "\n";
+ return (char*) (const char*) msg;
+} // GetExtendedDBErrorMsg
+//////////////////////////////////////////////////////////////////////////////////
+// BJO 20000115 : New stuff : dialog to ask for username and password
+//////////////////////////////////////////////////////////////////////////////////
+class UserDialog : public wxDialog
+{
+ public:
+ UserDialog(wxWindow* parent);
+ virtual ~UserDialog();
+ void OnOK(wxCommandEvent& event);
+ wxString s_UserName, s_Password;
+
+ private:
+ wxButton *m_OK;
+ wxStaticText *m_Label1, *m_Label2;
+ wxTextCtrl *m_UserName, *m_Password;
+
+
+ DECLARE_EVENT_TABLE()
+};
+//---------------------------------------------------------------------------
+BEGIN_EVENT_TABLE(UserDialog, wxDialog)
+ EVT_BUTTON(wxID_OK, UserDialog::OnOK)
+END_EVENT_TABLE()
+//---------------------------------------------------------------------------
+UserDialog::UserDialog(wxWindow *parent):
+ wxDialog(parent, -1, _("ODBC user"),wxDefaultPosition, wxSize(310, 300),wxDIALOG_MODAL | wxDEFAULT_DIALOG_STYLE)
+{
+ wxLayoutConstraints* layout;
+ SetAutoLayout(TRUE);
+ //-----------------------------------------------
+ m_OK = new wxButton(this, wxID_OK, _("Ok"));
+ layout = new wxLayoutConstraints;
+ layout->left.SameAs(this, wxLeft, 10);
+ layout->top.SameAs(this, wxTop,10);
+ layout->height.AsIs();
+ layout->width.Absolute(75);
+ m_OK->SetConstraints(layout);
+
+ m_Label1 = new wxStaticText(this, -1, _("User name:"));
+ layout = new wxLayoutConstraints;
+ layout->left.SameAs(m_OK, wxLeft);
+ layout->top.SameAs(m_OK, wxBottom, 10);
+ layout->height.AsIs();
+ layout->width.AsIs();
+ m_Label1->SetConstraints(layout);
+
+ m_UserName = new wxTextCtrl(this, -1, "");
+ layout = new wxLayoutConstraints;
+ layout->left.SameAs(m_OK, wxLeft);
+ layout->top.SameAs(m_Label1, wxBottom, 3);
+ layout->width.AsIs();
+ layout->height.AsIs();
+ m_UserName->SetConstraints(layout);
+
+ m_Label2 = new wxStaticText(this, -1, _("Password:"));
+ layout = new wxLayoutConstraints;
+ layout->left.SameAs(m_OK, wxLeft);
+ layout->top.SameAs(m_UserName, wxBottom, 10);
+ layout->height.AsIs();
+ layout->width.AsIs();
+ m_Label2->SetConstraints(layout);
+
+ m_Password = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD);
+ layout = new wxLayoutConstraints;
+ layout->left.SameAs(m_OK, wxLeft);
+ layout->width.AsIs();
+ layout->top.SameAs(m_Label2, wxBottom, 3);
+ layout->height.AsIs();
+ m_Password->SetConstraints(layout);
+
+ s_UserName = "";
+ s_Password = "";
+
+ Layout();
+}
+//---------------------------------------------------------------------------
+UserDialog::~UserDialog()
+{
+}
+//---------------------------------------------------------------------------
+void UserDialog::OnOK(wxCommandEvent& WXUNUSED(event))
+{
+ strcpy(ConnectInf.Uid, m_UserName->GetValue());
+ strcpy(ConnectInf.AuthStr, m_Password->GetValue());
+ EndModal(1);
+}
+//////////////////////////////////////////////////////////////////////////////////
+// BJO 20000115 : end of new stuff
+//////////////////////////////////////////////////////////////////////////////////
+//---------------------------------------------------------------------------
+BrowserDB::BrowserDB()
+{
+ Zeiger_auf_NULL(0);
+ ODBCSource = ""; // ODBC data source name (created with ODBC Administrator under Win95/NT)
+ UserName = ""; // database username - must already exist in the data source
+ Password = ""; // password database username
+ OnFillSqlTyp();
+ OnFilldbTyp();
+} // BrowserDB Constructor
+//---------------------------------------------------------------------------
+BrowserDB::~BrowserDB()
+{
+ Zeiger_auf_NULL(1); // Clean up Tables and Databases (Commit, Close und delete)
+} // BrowserDB destructor
+//--------------------------------------------------------------------------------------------
+bool BrowserDB::Initialize(int Quite)
+{
+ if (!OnStartDB(Quite))
+ {
+ wxLogMessage(_("\n\n-E-> BrowserDB::OnStartDB(%s) : Failed ! "),ODBCSource.c_str());
+ return FALSE;
+ }
+ return TRUE;
+} // BrowserDB:Initialize
+//--------------------------------------------------------------------------------------------
+bool BrowserDB::OnStartDB(int Quite)
+{
+ if (!Quite)
+ wxLogMessage(_("\n-I-> BrowserDB::OnStartDB(%s) : Begin "),ODBCSource.c_str());
+ if (db_BrowserDB != NULL)
+ {
+ if (!Quite)
+ wxLogMessage(_("\n-I-> BrowserDB::OnStartDB() : DB is allready open."));
+ return TRUE;
+ }
+ // Initialize the ODBC Environment for Database Operations
+ if (SQLAllocEnv(&ConnectInf.Henv) != SQL_SUCCESS)
+ {
+ if (!Quite)
+ wxLogMessage(_("\n-E-> BrowserDB::OnStartDB() : DB CONNECTION ERROR : A problem occured while trying to get a connection to the data source"));
+ return FALSE;
+ }
+ //---------------------------------------------------------------------------
+ // Connect to datasource
+ //---------------------------
+ DlgUser p_Dlg(pDoc->p_MainFrame, "Username and Password", wxPoint(100, 100), wxSize(340, 170));
+ p_Dlg.s_DSN = ODBCSource;
+ p_Dlg.s_User = UserName;
+ p_Dlg.s_Password = Password;
+ p_Dlg.OnInit();
+ if (p_Dlg.ShowModal() == wxID_OK)
+ {
+ (pDoc->p_DSN+i_Which)->Usr = p_Dlg.s_User;
+ (pDoc->p_DSN+i_Which)->Pas = p_Dlg.s_Password;
+ UserName = p_Dlg.s_User;
+ Password = p_Dlg.s_Password;
+ }
+ p_Dlg.Destroy();
+ //---------------------------
+ strcpy(ConnectInf.Dsn, ODBCSource); // ODBC data source name (created with ODBC Administrator under Win95/NT)
+ strcpy(ConnectInf.Uid, UserName); // database username - must already exist in the data source
+ strcpy(ConnectInf.AuthStr, Password); // password database username
+ db_BrowserDB = GetDbConnection(&ConnectInf);
+ // wxLogMessage(">>>%s<<<>>>%s<<<",UserName.c_str(),Password.c_str());
+ if (db_BrowserDB == NULL)
+ {
+ strcpy(ConnectInf.Dsn, "");
+ strcpy(ConnectInf.Uid, "");
+ strcpy(ConnectInf.AuthStr, "");
+ if (!Quite)
+ {
+ wxLogMessage(_("\n-E-> BrowserDB::OnConnectDataSource() DB CONNECTION ERROR : Unable to connect to the data source.\n\nCheck the name of your data source to verify it has been correctly entered/spelled.\n\nWith some databases, the user name and password must\nbe created with full rights to the table prior to making a connection\n(using tools provided by the database manufacturer)"));
+ wxLogMessage(_("-I-> BrowserDB::OnStartDB(%s) : End "),ODBCSource.c_str());
+ }
+ return FALSE;
+ }
+ //--------------------------------------------------------------------------
+ if (!Quite)
+ {
+ Temp1 = db_BrowserDB->GetDatabaseName();
+ Temp2 = db_BrowserDB->GetDataSource();
+ wxLogMessage(_("-I-> BrowserDB::OnGetDataSourceODBC() - DatabaseName(%s) ; DataSource(%s)"),Temp1.c_str(),Temp2.c_str());
+ wxLogMessage(_("-I-> BrowserDB::OnStartDB(%s) : End "),ODBCSource.c_str());
+ }
+ return TRUE;
+}
+//--------------------------------------------------------------------------------------------
+bool BrowserDB::OnCloseDB(int Quite)
+{
+ if (!Quite)
+ wxLogMessage(_("-I-> BrowserDB::OnCloseDB() : Begin "));
+ if (db_BrowserDB)
+ {
+ db_BrowserDB->Close();
+ FreeDbConnection(db_BrowserDB);
+
+ // Free Environment Handle that ODBC uses
+ if (SQLFreeEnv(&ConnectInf.Henv) != SQL_SUCCESS)
+ {
+ // Error freeing environment handle
+ }
+ db_BrowserDB = NULL;
+ }
+ if (!Quite)
+ wxLogMessage(_("\n-I-> BrowserDB::OnCloseDB() : End "));
+ return TRUE;
+}
+//----------------------------------------------------------------------------------------
+bool BrowserDB::OnGetNext(int Cols,int Quite)
+{
+ SDWORD cb;
+ int i_dbDataType;
+ int i=0;
+ char s_temp[1024+1];
+ long l_temp;
+ double f_temp;
+ int AnzError=0;
+ TIMESTAMP_STRUCT t_temp;
+ wxString Temp0;
+ //-----------------------------
+ if (!db_BrowserDB->GetNext())
+ {
+ return FALSE;
+ Temp0.Printf(_("\n-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext \n-E-> "));
+ Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
+ wxLogMessage(Temp0);
+ wxMessageBox(Temp0);
+ }
+ else
+ {
+ for (i=0;i<Cols;i++)
+ {
+ strcpy((cl_BrowserDB+i)->tableName,"-E->");
+ i_dbDataType = (cl_BrowserDB->pColFor+i)->i_dbDataType;
+ if (i_dbDataType == 0) // Filter unsupported dbDataTypes
+ {
+ if (((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_VARCHAR) || ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_LONGVARCHAR))
+ i_dbDataType = DB_DATA_TYPE_VARCHAR;
+ if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_DATE)
+ i_dbDataType = DB_DATA_TYPE_DATE;
+ if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_BIT)
+ i_dbDataType = DB_DATA_TYPE_INTEGER;
+ if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_NUMERIC)
+ i_dbDataType = DB_DATA_TYPE_VARCHAR;
+ if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_REAL)
+ i_dbDataType = DB_DATA_TYPE_FLOAT;
+ }
+ if ((i_dbDataType == DB_DATA_TYPE_INTEGER) && ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_DOUBLE))
+ { // DBASE Numeric
+ i_dbDataType = DB_DATA_TYPE_FLOAT;
+ }
+ switch(i_dbDataType)
+ {
+ case DB_DATA_TYPE_VARCHAR:
+ strcpy(s_temp,"");
+ if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_dbDataType,&s_temp,sizeof(s_temp), &cb))
+ {
+ Temp0.Printf(_("\n-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext of >%s<.\n-E-> "),(cl_BrowserDB+i)->tableName);
+ Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
+ wxLogMessage(Temp0);
+ }
+ Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,s_temp);
+ strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
+ break;
+ case DB_DATA_TYPE_INTEGER:
+ l_temp = 0;
+ if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&l_temp,sizeof(l_temp), &cb))
+ {
+ Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> "));
+ Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
+ }
+ else
+ {
+ Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,l_temp);
+ strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
+ }
+ break;
+ case DB_DATA_TYPE_FLOAT:
+ f_temp = 0;
+ if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&f_temp,sizeof(f_temp), &cb))
+ {
+ Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> "));
+ Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
+ wxMessageBox(Temp0);
+ }
+ else
+ {
+ Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,f_temp);
+ strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
+ }
+ break;
+ case DB_DATA_TYPE_DATE:
+ t_temp.day = t_temp.month = t_temp.year = t_temp.hour = t_temp.minute = t_temp.second = t_temp.fraction = 0;
+ if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&t_temp,sizeof(t_temp), &cb))
+ {
+ Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> "));
+ Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
+ }
+ else
+ {
+ // i_Nation = 0 = timestamp , 1=EU, 2=UK, 3=International, 4=US
+ if (((cl_BrowserDB->pColFor+i)->i_Nation == 0) || // TS YYYY-MM-DD
+ ((cl_BrowserDB->pColFor+i)->i_Nation == 3)) // IT YYYY-MM-DD
+ {
+ Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.year,t_temp.month,t_temp.day,
+ t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction);
+ strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
+ }
+ if ( ((cl_BrowserDB->pColFor+i)->i_Nation == 1) || // EU DD.MM.YYYY
+ ((cl_BrowserDB->pColFor+i)->i_Nation == 2)) // UK DD/MM/YYYY
+ {
+ Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.day,t_temp.month,t_temp.year,
+ t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction);
+ strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
+ }
+ if ((cl_BrowserDB->pColFor+i)->i_Nation == 3) // US MM/DD/YYYY
+ {
+ Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.month,t_temp.day,t_temp.year,
+ t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction);
+ strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
+ }
+ }
+ break;
+ default:
+ AnzError++;
+ if (AnzError <= 100)
+ {
+ Temp0 = (cl_BrowserDB+i)->colName;
+ wxLogMessage(_("-E-> BrowserDB::OnGetNext - DB_DATA_TYPE_?? (%d) in Col(%s)"),(cl_BrowserDB->pColFor+i)->i_dbDataType,Temp0.c_str());
+ }
+ else
+ return TRUE;
+ Temp0.Printf(_("-E-> unknown Format(%d) - sql(%d)"),(cl_BrowserDB->pColFor+i)->i_dbDataType,(cl_BrowserDB->pColFor+i)->i_sqlDataType);
+ strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
+ break;
+ };
+ }
+ }
+ // wxLogMessage("-E-> BrowserDB::OnGetNext - End");
+ return TRUE;
+}
+//----------------------------------------------------------------------------------------
+bool BrowserDB::OnSelect(wxString tb_Name, int Quite)
+{
+ wxString SQLStmt;
+ i_Records = 0;
+ //--------------------------------------------------------------------------
+ SQLStmt.sprintf("SELECT * FROM %s",tb_Name.c_str());
+ if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData())))
+ {
+ Temp0.Printf(_("\n-E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of >%s<.\n-E-> "),tb_Name.c_str());
+ Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
+ wxLogMessage(Temp0);
+ wxMessageBox("-E-> BrowserDB::OnSelect - GetData()");
+ return FALSE;
+ }
+ //--------------------------------------------------------------------------
+ while (db_BrowserDB->GetNext())
+ {
+ i_Records++;
+ }
+ //--------------------------------------------------------------------------
+ if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData())))
+ {
+ Temp0.Printf(_("\n-E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of >%s<.\n-E-> "),tb_Name.c_str());
+ Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
+ wxLogMessage(Temp0);
+ return FALSE;
+ }
+ //--------------------------------------------------------------------------
+ // SetColDefs ( 0,"NAME", DB_DATA_TYPE_VARCHAR, Name, SQL_C_CHAR, sizeof(Name), TRUE, TRUE); // Primary index
+ //--------------------------------------------------------------------------
+ if (!Quite)
+ {
+ wxLogMessage(_("\n-I-> BrowserDB::OnSelect(%s) Records(%d): End "),tb_Name.c_str(),i_Records);
+ }
+ return TRUE;
+}
+//----------------------------------------------------------------------------------------
+bool BrowserDB::OnExecSql(wxString SQLStmt, int Quite)
+{
+ //--------------------------------------------------------------------------
+ if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData())))
+ {
+ Temp0.Printf(_("\n-E-> BrowserDB::OnExecSQL - ODBC-Error with ExecSql of >%s<.\n-E-> "),SQLStmt.c_str());
+ Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__);
+ if (!Quite)
+ wxLogMessage(Temp0);
+ else
+ wxMessageBox("-E-> BrowserDB::OnExecSql - ExecSql()");
+ return FALSE;
+ }
+ if (!Quite)
+ {
+ // wxLogMessage(_("\n-I-> BrowserDB::OnExecSql(%s) - End "),SQLStmt.c_str());
+ }
+ return TRUE;
+}
+//----------------------------------------------------------------------------------------
+wxDbInf* BrowserDB::OnGetCatalog(int Quite)
+{
+ char UName[255];
+ strcpy(UName,UserName);
+ ct_BrowserDB = db_BrowserDB->GetCatalog(UName);
+ return ct_BrowserDB;
+}
+//----------------------------------------------------------------------------------------
+wxColInf* BrowserDB::OnGetColumns(char *tableName, int numCols,int Quite)
+{
+ char UName[255];
+ int i;
+ strcpy(UName,UserName);
+ cl_BrowserDB = db_BrowserDB->GetColumns(tableName,&numCols,UName);
+ cl_BrowserDB->pColFor = new wxColFor[numCols];
+ for (i=0;i<numCols;i++)
+ {
+ (cl_BrowserDB->pColFor+i)->Format(1,(cl_BrowserDB+i)->dbDataType,(cl_BrowserDB+i)->sqlDataType,
+ (cl_BrowserDB+i)->columnSize, (cl_BrowserDB+i)->decimalDigits);
+ }
+ return cl_BrowserDB;
+}
+//----------------------------------------------------------------------------------------
+void BrowserDB::Zeiger_auf_NULL(int Art)
+{
+ if (Art == 1) // Löschen
+ {
+ if (cl_BrowserDB != NULL)
+ { // Destroy the memory
+ delete [] cl_BrowserDB;
+ }
+ if (ct_BrowserDB != NULL)
+ { // Destroy the memory
+ delete [] ct_BrowserDB;
+ }
+ if (db_BrowserDB != NULL)
+ {
+ db_BrowserDB->CommitTrans();
+ db_BrowserDB->Close();
+ CloseDbConnections();
+ delete db_BrowserDB;
+ }
+ }
+ cl_BrowserDB = NULL;
+ ct_BrowserDB = NULL;
+ db_BrowserDB = NULL;
+ p_LogWindow = NULL;
+}
+//----------------------------------------------------------------------------------------
+void BrowserDB::OnFillSqlTyp()
+{
+ i_SqlTyp[1] = SQL_C_BINARY; s_SqlTyp[1] = "SQL_C_BINARY";
+ i_SqlTyp[2] = SQL_C_BIT; s_SqlTyp[2] = "SQL_C_BIT";
+ i_SqlTyp[3] = SQL_C_BOOKMARK; s_SqlTyp[3] = "SQL_C_BOOKMARK";
+ i_SqlTyp[4] = SQL_C_CHAR; s_SqlTyp[4] = "SQL_C_CHAR";
+ i_SqlTyp[5] = SQL_C_DATE; s_SqlTyp[5] = "SQL_C_DATE";
+ i_SqlTyp[6] = SQL_C_DEFAULT; s_SqlTyp[6] = "SQL_C_DEFAULT";
+ i_SqlTyp[7] = SQL_C_DOUBLE; s_SqlTyp[7] = "SQL_C_DOUBLE";
+ i_SqlTyp[8] = SQL_C_FLOAT; s_SqlTyp[8] = "SQL_C_FLOAT";
+ i_SqlTyp[9] = SQL_C_LONG; s_SqlTyp[9] = "SQL_C_LONG";
+ i_SqlTyp[10] = SQL_C_SHORT; s_SqlTyp[10] = "SQL_C_SHORT";
+ i_SqlTyp[11] = SQL_C_SLONG; s_SqlTyp[11] = "SQL_C_SLONG";
+ i_SqlTyp[12] = SQL_C_SSHORT; s_SqlTyp[12] = "SQL_C_SSHORT";
+ i_SqlTyp[13] = SQL_C_STINYINT; s_SqlTyp[13] = "SQL_C_STINYINT";
+ i_SqlTyp[14] = SQL_C_TIME; s_SqlTyp[14] = "SQL_C_TIME";
+ i_SqlTyp[15] = SQL_C_TIMESTAMP; s_SqlTyp[15] = "SQL_C_TIMESTAMP";
+ i_SqlTyp[16] = SQL_C_TINYINT; s_SqlTyp[16] = "SQL_C_TINYINT";
+ i_SqlTyp[17] = SQL_C_ULONG; s_SqlTyp[17] = "SQL_C_ULONG";
+ i_SqlTyp[18] = SQL_C_USHORT; s_SqlTyp[18] = "SQL_C_USHORT";
+ i_SqlTyp[19] = SQL_C_UTINYINT; s_SqlTyp[19] = "SQL_C_UTINYINT";
+ i_SqlTyp[20] = SQL_VARCHAR; s_SqlTyp[20] = "SQL_VARCHAR";
+ i_SqlTyp[21] = SQL_NUMERIC; s_SqlTyp[21] = "SQL_NUMERIC";
+ i_SqlTyp[22] = SQL_LONGVARCHAR; s_SqlTyp[22] = "SQL_LONGVARCHAR";
+ i_SqlTyp[23] = SQL_REAL; s_SqlTyp[23] = "SQL_REAL";
+ i_SqlTyp[0] = 23; s_SqlTyp[0] = "";
+}
+//----------------------------------------------------------------------------------------
+void BrowserDB::OnFilldbTyp()
+{
+ i_dbTyp[1] = DB_DATA_TYPE_VARCHAR; s_dbTyp[1] = "DB_DATA_TYPE_VARCHAR";
+ i_dbTyp[2] = DB_DATA_TYPE_INTEGER; s_dbTyp[2] = "DB_DATA_TYPE_INTEGER";
+ i_dbTyp[3] = DB_DATA_TYPE_FLOAT; s_dbTyp[3] = "DB_DATA_TYPE_FLOAT";
+ i_dbTyp[4] = DB_DATA_TYPE_DATE; s_dbTyp[4] = "DB_DATA_TYPE_DATE";
+ i_dbTyp[0] = 4; s_dbTyp[0] = "";
+}
+//----------------------------------------------------------------------------------------
--- /dev/null
+//---------------------------------------------------------------------------
+// Name: browsedb.h
+// Purpose: a wxDB ;
+// Author: Mark Johnson, mj10777@gmx.net
+// Modified by:
+// Created: 19991127.mj10777
+// Copyright: (c) Mark Johnson
+// Licence: wxWindows license
+//---------------------------------------------------------------------------
+//-- Zu tun in browsedb.h
+//---------------------------------------------------------------------------
+//-- 1)
+//---------------------------------------------------------------------------
+// Global structure for holding ODBC connection information
+//---------------------------------------------------------------------------
+extern struct DbStuff DbConnectInf;
+class mjDoc;
+//---------------------------------------------------------------------------
+class BrowserDB
+{
+ public:
+ //---------------------------------------------------------------------------
+ // Pointer to the main database connection used in the program. This
+ // pointer would normally be used for doing things as database lookups
+ // for user login names and passwords, getting workstation settings, etc.
+ // ---> IMPORTANT <---
+ //
+ // For each database object created which uses this wxDB pointer
+ // connection to the database, when a CommitTrans() or RollBackTrans()
+ // will commit or rollback EVERY object which uses this wxDB pointer.
+ //
+ // To allow each table object (those derived from wxTable) to be
+ // individually committed or rolled back, you MUST use a different
+ // instance of wxDB in the constructor of the table. Doing so creates
+ // more overhead, and will use more database connections (some DBs have
+ // connection limits...), so use connections sparringly.
+ //
+ // It is recommended that one "main" database connection be created for
+ // the entire program to use for READ-ONLY database accesses, but for each
+ // table object which will do a CommitTrans() or RollbackTrans() that a
+ // new wxDB object be created and used for it.
+ //---------------------------------------------------------------------------
+ wxDB* db_BrowserDB;
+ wxDbInf* ct_BrowserDB;
+ wxColInf* cl_BrowserDB;
+ wxString ODBCSource, UserName, Password;
+ mjDoc *pDoc;
+ //---------------------------------------------------------------------------
+ wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5;
+ wxString ODBCText;
+ wxTextCtrl* p_LogWindow;
+ wxString s_SqlTyp[25];
+ int i_SqlTyp[25];
+ wxString s_dbTyp[5];
+ int i_dbTyp[5];
+ int i_Which;
+ int i_Records;
+ int i_Cols;
+ //---------------------------------------------------------------------------
+ BrowserDB();
+ ~BrowserDB();
+ void Zeiger_auf_NULL(int Art);
+ bool Initialize(int Quite);
+ //---------------------------------------------------------------------------
+ bool OnStartDB(int Quite);
+ bool OnCloseDB(int Quite);
+ bool OnSelect(wxString tb_Name,int Quite);
+ bool OnExecSql(wxString SQLStmt,int Quite);
+ bool OnGetNext(int Cols,int Quite);
+ wxDbInf* OnGetCatalog(int Quite);
+ wxColInf* OnGetColumns(char *tableName, int numCols,int Quite);
+ void OnFillSqlTyp();
+ void OnFilldbTyp();
+ //---------------------------------------------------------------------------
+}; // BrowserDB class definition
+//---------------------------------------------------------------------------
--- /dev/null
+//------------------------------------------------------------------------------
+// Name: dbbrowse.cpp
+// Purpose: Through ODBC - Databases Browsen
+// Author: Mark Johnson, mj10777@gmx.net
+// Modified by:
+// BJO : Bart A.M. JOURQUIN
+// Created: 19991127
+// Copyright: (c) Mark Johnson
+// Licence: wxWindows license
+//------------------------------------------------------------------------------
+//-- all #ifdefs that the whole Project needs. ------------------------------
+//---------------------------------------------------------------------------
+#ifdef __GNUG__
+ #pragma implementation
+ #pragma interface
+#endif
+//---------------------------------------------------------------------------
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+//---------------------------------------------------------------------------
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+//---------------------------------------------------------------------------
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif
+//---------------------------------------------------------------------------
+#ifndef __WXMSW__
+#endif
+ #include "bitmaps/logo.xpm"
+//---------------------------------------------------------------------------
+//-- all #includes that every .cpp needs --- 19990807.mj10777 ---
+//---------------------------------------------------------------------------
+#include "std.h" // sorgsam Pflegen !
+#include <iostream>
+//---------------------------------------------------------------------------
+//-- Some Global Vars for this file ----------------------------------------
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+MainFrame *frame = NULL; // The one and only MainFrame
+// wxLogNull logNo; // No Log messages
+//---------------------------------------------------------------------------
+// verify that the item is ok and insult the user if it is not
+#define CHECK_ITEM(item) \
+ if (!item.IsOk()) \
+ { \
+ wxMessageBox(_("Please select some item first!"),_("Tree sample error"), \
+ wxOK | wxICON_EXCLAMATION,this); \
+ return; \
+ } \
+//---------------------------------------------------------------------------
+BEGIN_EVENT_TABLE(MainFrame, wxFrame)
+ EVT_MENU(QUIT, MainFrame::OnQuit)
+ EVT_MENU(ABOUT, MainFrame::OnAbout)
+ EVT_MENU(HELP, MainFrame::OnHelp)
+ EVT_SIZE(MainFrame::OnSize)
+END_EVENT_TABLE()
+//---------------------------------------------------------------------------
+IMPLEMENT_APP(MyApp)
+//---------------------------------------------------------------------------
+// `Main program' equivalent, creating windows and returning main app frame
+//---------------------------------------------------------------------------
+bool MyApp::OnInit(void)
+{
+ //---------------------------------------------------------------------------------------
+ // set the language to use
+ const char *langhelp = NULL;
+ const char *language = NULL;
+ const char *langid = NULL;
+ //---------------------------------------------------------------------------------------
+#if wxUSE_LIBPNG
+ wxImage::AddHandler( new wxPNGHandler ); // use only when needed, otherwise big .exe's
+#endif
+/*
+#if wxUSE_LIBJPEG
+ wxImage::AddHandler(new wxJPEGHandler ); // use only when needed, otherwise big .exe's
+#endif
+ 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 wxPNMHandler ); // use only when needed, otherwise big .exe's
+*/
+#ifdef __WXMSW__
+ // wxBitmap::AddHandler( new wxXPMFileHandler ); // use only when needed, otherwise big .exe's
+ // wxBitmap::AddHandler( new wxXPMDataHandler ); // use only when needed, otherwise big .exe's
+#endif
+ //---------------------------------------------------------------------------------------
+ langid = "std"; // BJO20000125 instead of ""
+ switch ( argc )
+ {
+ default:
+ // ignore the other args, fall through
+ case 3:
+ language = argv[2];
+ langid = argv[1];
+ break;
+ case 2:
+ langid = argv[1];
+ break;
+ case 1:
+ break;
+ };
+ //---------------------------------------------------------------------------------------
+ // 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
+ // advantages compared with explicitly creating our wxConfig:
+ // 1) we don't pay for it if we don't use it
+ // 2) there is no danger to create it twice
+
+ // 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
+ // 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)
+ //---------------------------------------------------------------------------------------
+ SetVendorName("mj10777");
+ SetAppName("DBBrowser"); // not needed, it's the default value
+ p_ProgramCfg = wxConfigBase::Get();
+ // p_ProgramCfg->DeleteAll();
+ p_ProgramCfg->SetPath("/");
+ wxString Temp0, Temp1;
+ Temp0.Empty();
+
+ //---------------------------------------------------------------------------------------
+ //-- Set the Language and remember it for the next time. --------------------------------
+ //---------------------------------------------------------------------------------------
+ langhelp = "help.std/dbbrowse.hhp";
+ if (langid == "std")
+ {
+ p_ProgramCfg->Read("/Local/langid",&Temp0); // >const char *langid< can't be used here
+ if (Temp0 == "")
+ langid = "std";
+ else
+ langid = Temp0;
+ }
+ Temp0 = langid;
+ p_ProgramCfg->Write("/Local/langid",Temp0); // >const char *langid< can't be used here
+ //---------------------------------------------------------------------------------------
+ // Support the following languages
+ if (Temp0 != "std")
+ {
+ if (Temp0 == "cz")
+ {
+ language = "czech"; // csy or czech
+ langhelp = "help.cz/dbbrowse.hhp";
+ }
+ if ((Temp0 == "de") || (Temp0 == "a"))
+ {
+ language = "german"; // deu or german
+ langhelp = "help.de/dbbrowse.hhp";
+ }
+ if (Temp0 == "fr")
+ {
+ language = "french"; // fra or french
+ langhelp = "help.fr/dbbrowse.hhp";
+ }
+ if (Temp0 == "pl")
+ {
+ language = "polish"; // plk or polish
+ langhelp = "help.pl/dbbrowse.hhp";
+ }
+ if (!m_locale.Init(language, langid, language)) // setlocale(LC_ALL,""); does not work
+ wxMessageBox("SetLocale error");
+ m_locale.AddCatalog("PgmText");
+ m_locale.AddCatalog("Help");
+ Temp0 = language;
+ p_ProgramCfg->Write("/Local/language",Temp0);
+ }
+ else
+ {
+ Temp0 = "english";
+ p_ProgramCfg->Write("/Local/language",Temp0);
+ Temp0 = "std"; // allways english if not german or french (at the moment austrian)
+ }
+
+ Temp0 = "NONE";
+ p_ProgramCfg->Write("/NONE",Temp0);
+ p_ProgramCfg->Write("/Paths/NONE",Temp0);
+ p_ProgramCfg->Write("/MainFrame/NONE",Temp0);
+ //-----------------------------------------------------------------------------
+ p_ProgramCfg->Write("/Paths/Work",wxGetCwd());
+ p_ProgramCfg->SetPath("/");
+ //-----------------------------------------------------------------------------
+ // or you could also write something like this:
+ // wxFileConfig *p_ProgramCfg = new wxFileConfig("conftest");
+ // wxConfigBase::Set(p_ProgramCfg);
+ // where you can also specify the file names explicitly if you wish.
+ // Of course, calling Set() is optional and you only must do it if
+ // you want to later retrieve this pointer with Get().
+ //----------------------------------------------------------------------------
+ // SetPath() understands ".."
+ // restore frame position and size
+ int x = p_ProgramCfg->Read("/MainFrame/x", 1), y = p_ProgramCfg->Read("/MainFrame/y", 1),
+ w = p_ProgramCfg->Read("/MainFrame/w", 600), h = p_ProgramCfg->Read("/MainFrame/h", 450);
+ //---------------------------------------------------------------------------------------
+ // Create the main frame window
+ frame = new MainFrame((wxFrame *) NULL, (char *) _("DBBrowser - mj10777"),x,y,w,h);
+ //---------------------------------------------------------------------------------------
+ // This reduces flicker effects - even better would be to define OnEraseBackground
+ // to do Temp0. When the list control's scrollbars are show or hidden, the
+ // frame is sent a background erase event.
+ //---------------------------------------------------------------------------------------
+ frame->SetBackgroundColour( *wxWHITE );
+ // frame->SetBackgroundColour(wxColour(255, 255, 255));
+
+ //---------------------------------------------------------------------------------------
+ // Make a menubar
+ wxMenu *file_menu = new wxMenu;
+ wxMenu *help_menu = new wxMenu;
+
+ help_menu->Append(HELP, _("&Help"));
+ help_menu->AppendSeparator();
+ help_menu->Append(ABOUT, _("&About"));
+ file_menu->Append(QUIT, _("E&xit"));
+
+ wxMenuBar *menu_bar = new wxMenuBar;
+ menu_bar->Append(file_menu, _("&File"));
+ menu_bar->Append(help_menu, _("&Help"));
+ frame->SetMenuBar(menu_bar);
+ frame->CreateStatusBar(1);
+ Temp0.Printf(_("%s has started !"),p_ProgramCfg->GetAppName().c_str());
+ frame->SetStatusText(Temp0, 0);
+ //---------------------------------------------------------------------------------------
+ int width, height;
+ frame->GetClientSize(&width, &height);
+
+ frame->p_Splitter = new DocSplitterWindow(frame, SPLITTER_WINDOW);
+
+ // p_Splitter->SetCursor(wxCursor(wxCURSOR_PENCIL));
+ frame->pDoc = new mjDoc();
+ frame->pDoc->p_MainFrame = frame;
+ frame->pDoc->p_Splitter = frame->p_Splitter;
+ frame->pDoc->p_Splitter->pDoc = frame->pDoc; // ControlBase: saving the Sash
+ if (!frame->pDoc->OnNewDocument())
+ frame->Close(TRUE);
+ // frame->Maximize();
+ // frame->SetSize(-1,-1); // the wxSplitter does not show correctly without this !
+ frame->SetClientSize(width, height); // the wxSplitter does not show correctly without this !
+ //---------------------------------------------------------------------------------------
+ //-- Problem : GetClientSize(Width,Hight) are not the same as the values given in the ---
+ //-- construction of the Frame. ---
+ //-- Solved : GetClientSize is called here and the difference is noted. When the ---
+ //-- Window is closed the diff. is added to the result of GetClientSize. ---
+ //---------------------------------------------------------------------------------------
+ frame->GetClientSize(&frame->DiffW, &frame->DiffH); frame->DiffW-=w; frame->DiffH-=h;
+ //----------------------------------------------------------------------------
+ //-- Help : ---
+ //----------------------------------------------------------------------------
+
+ frame->help.UseConfig(p_ProgramCfg);
+ frame->help.AddBook(langhelp);
+ /*
+ if (!frame->help.AddBook("helpfiles/dbbrowse.hhp"))
+ wxMessageBox("Failed adding book helpfiles/dbbrowse.hhp");
+ if (!frame->help.AddBook("helpfiles/testing.hhp"))
+ wxMessageBox("Failed adding book helpfiles/testing.hhp");
+ if (!frame->help.AddBook("helpfiles/another.hhp"))
+ wxMessageBox("Failed adding book helpfiles/another.hhp");
+ */
+
+
+ //---------------------------------------------------------------------------------------
+ p_ProgramCfg->Flush(TRUE); // sicher Objekt
+
+ //---------------------------------------------------------------------------------------
+ // Show the frame
+ frame->Show(TRUE);
+ SetTopWindow(frame);
+
+
+
+ return TRUE;
+}
+//---------------------------------------------------------------------------
+// My frame constructor
+//---------------------------------------------------------------------------
+MainFrame::MainFrame(wxFrame *frame, char *title, int x, int y, int w, int h):
+ wxFrame(frame, SPLITTER_FRAME, title, wxPoint(x, y), wxSize(w, h))
+{
+ InitializeMenu();
+ // This reduces flicker effects - even better would be to define OnEraseBackground
+ // to do Temp0. When the list control's scrollbars are show or hidden, the
+ // frame is sent a background erase event.
+ SetBackgroundColour( *wxWHITE );
+ // frame->SetBackgroundColour(wxColour(255, 255, 255));
+ //---------------------------------------------------------------------------------------
+ // Give it an icon
+ SetIcon( wxICON(Logo) );
+ //---------------------------------------------------------------------------------------
+}
+//---------------------------------------------------------------------------
+MainFrame::~MainFrame(void)
+{
+ // save the control's values to the config
+ if ( p_ProgramCfg == NULL )
+ return;
+ // save the frame position
+ int x, y, w, h;
+ GetPosition(&x, &y);
+ GetClientSize(&w, &h); w -= DiffW; h -= DiffH;
+ p_ProgramCfg->Write("/MainFrame/x", (long) x);
+ p_ProgramCfg->Write("/MainFrame/y", (long) y);
+ p_ProgramCfg->Write("/MainFrame/w", (long) w);
+ p_ProgramCfg->Write("/MainFrame/h", (long) h);
+ p_ProgramCfg->Write("/MainFrame/Sash", (long) pDoc->Sash);
+ // 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
+ // we want here!)
+ // delete wxConfigBase::Set((wxConfigBase *) NULL);
+ p_ProgramCfg->Flush(TRUE); // sichert Objekt
+ delete frame->pDoc;
+}
+//--------------------------------------------------------------------------------------
+void MainFrame::InitializeMenu()
+{
+ //---------------------------------------------------------------------------------------
+ // Make a menubar
+ //---------------------------------------------------------------------------------------
+ wxMenu *file_menu = new wxMenu;
+
+ file_menu->Append(ABOUT, _("&About"));
+ file_menu->AppendSeparator();
+ file_menu->Append(QUIT, _("E&xit"));
+
+
+ wxMenuBar *menu_bar = new wxMenuBar;
+ menu_bar->Append(file_menu, _("&File"));
+ SetMenuBar(menu_bar);
+}
+//---------------------------------------------------------------------------
+void MainFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
+{
+ // Close the help frame; this will cause the config data to
+ // get written.
+ if (help.GetFrame()) // returns NULL if no help frame active
+ help.GetFrame()->Close(TRUE);
+ Close(TRUE);
+}
+//---------------------------------------------------------------------------
+void MainFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
+{
+ wxMessageDialog dialog(this, _("DBBrowser\nMark Johnson\nBerlin, Germany\nmj10777@gmx.net\n (c) 1999"),
+ _("About DBBrowser"), wxOK|wxCANCEL);
+
+ dialog.ShowModal();
+}
+//---------------------------------------------------------------------------
+void MainFrame::OnHelp(wxCommandEvent& WXUNUSED(event))
+{
+ help.Display("Main page");
+}
+//---------------------------------------------------------------------------
--- /dev/null
+//------------------------------------------------------------------------------
+// Name: dbbrowse.h
+// Purpose: Through ODBC - Databases Browsen
+// Author: Mark Johnson, mj10777@gmx.net
+// Modified by:
+// Created: 19991127
+// Copyright: (c) Mark Johnson
+// Licence: wxWindows license
+//---------------------------------------------------------------------------
+// Define a new application type
+//------------------------------------------------------------------------------
+class MyApp: public wxApp
+{
+ public:
+ bool OnInit(void);
+ wxLocale m_locale; // locale we'll be using
+};
+//------------------------------------------------------------------------------
+// Define a new frame type
+//------------------------------------------------------------------------------
+class MainFrame: public wxFrame
+{
+ public:
+ MainFrame(wxFrame *frame, char *title, int x, int y, int w, int h);
+ ~MainFrame(void);
+
+ public:
+ // menu callbacks
+ void InitializeMenu();
+ void OnQuit(wxCommandEvent& event);
+ void OnAbout(wxCommandEvent& event);
+ void OnHelp(wxCommandEvent& event);
+ //--------------------------------------------------------
+ wxHtmlHelpController help;
+ //--------------------------------------------------------
+ int DiffW, DiffH;
+ mjDoc *pDoc;
+ DocSplitterWindow *p_Splitter;
+ //--------------------------------------------------------
+ DECLARE_EVENT_TABLE()
+};
+//------------------------------------------------------------------------------
+// ID for the menu quit command
+//------------------------------------------------------------------------------
+#define QUIT 1
+#define ABOUT 2
+#define HELP 3
+#define SPLITTER_FRAME 100
+#define SPLITTER_WINDOW 101
+#define TREE_CTRL_PGM 102
+#define GRID_CTRL 103
+#define TREE_CTRL_DB 104
+#define GRID_CTRL_DB 105
+//------------------------------------------------------------------------------
--- /dev/null
+Logo ICON "bitmaps\\logo.ico"
+Col ICON "bitmaps\\col.ico"
+DSNClosed ICON "bitmaps\\dsnclose.ico"
+DSNOpen ICON "bitmaps\\dsnopen.ico"
+KEY ICON "bitmaps\\key.ico"
+KEYF ICON "bitmaps\\keyf.ico"
+TAB ICON "bitmaps\\tab.ico"
+DocClosed ICON "bitmaps\\d_closed.ico"
+DocOpen ICON "bitmaps\\d_open.ico"
+FolderClosed ICON "bitmaps\\f_closed.ico"
+FolderOpen ICON "bitmaps\\f_open.ico"
+PgmCtrl BITMAP "bitmaps\\pgmctrl.bmp"
+
+#include "wx/msw/wx.rc"
+#include "wx/html/msw/wxhtml.rc"
--- /dev/null
+//---------------------------------------------------------------------------
+// Name: DBGrid.cpp
+// Purpose: wxGrid sample
+// Author: Mark Johnson
+// Modified by: 19990929.mj10777 a reuseable DBGrid
+// Created: 19990929
+// RCS-ID:
+// Copyright: (c)
+// Licence: wxWindows license
+//---------------------------------------------------------------------------
+//-- all #ifdefs that the whole Project needs. ------------------------------
+//---------------------------------------------------------------------------
+#ifdef __GNUG__
+#pragma implementation
+#pragma interface
+#endif
+//---------------------------------------------------------------------------
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+//---------------------------------------------------------------------------
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
+//---------------------------------------------------------------------------
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+//---------------------------------------------------------------------------
+//-- all #includes that every .cpp needs --- 19990807.mj10777 ---
+//---------------------------------------------------------------------------
+#include "std.h" // sorgsam Pflegen !
+//---------------------------------------------------------------------------
+BEGIN_EVENT_TABLE(DBGrid, wxGrid)
+ EVT_MOTION (DBGrid::OnMouseMove)
+ // DBGrid
+ EVT_GRID_LABEL_LEFT_CLICK( DBGrid::OnLabelLeftClick )
+ EVT_GRID_LABEL_RIGHT_CLICK( DBGrid::OnLabelRightClick )
+ EVT_GRID_LABEL_LEFT_DCLICK( DBGrid::OnLabelLeftDClick )
+ EVT_GRID_LABEL_RIGHT_DCLICK( DBGrid::OnLabelRightDClick )
+ EVT_GRID_CELL_LEFT_CLICK( DBGrid::OnCellLeftClick )
+ EVT_GRID_CELL_RIGHT_CLICK( DBGrid::OnCellRightClick )
+ EVT_GRID_CELL_LEFT_DCLICK( DBGrid::OnCellLeftDClick )
+ EVT_GRID_CELL_RIGHT_DCLICK( DBGrid::OnCellRightDClick )
+ EVT_GRID_ROW_SIZE( DBGrid::OnRowSize )
+ // EVT_GRID_COL_SIZE( DBGrid::OnColSize )
+ EVT_GRID_RANGE_SELECT( DBGrid::OnRangeSelected )
+ EVT_GRID_CELL_CHANGE( DBGrid::OnCellChange )
+ EVT_MENU(GRID_EDIT,DBGrid::OnModusEdit)
+ EVT_MENU(GRID_BROWSE,DBGrid::OnModusBrowse)
+END_EVENT_TABLE()
+//---------------------------------------------------------------------------
+// wxListCtrl(parent, id, pos, size, style)
+// wxGrid(parent,-1,wxPoint( 0, 0 ), wxSize( 400, 300 ) );
+//---------------------------------------------------------------------------
+// DBGrid
+//---------------------------------------------------------------------------
+ // DBGrid::DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size):
+ // wxGrid(parent, id, pos, size)
+DBGrid::DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size, long style):
+ wxGrid(parent, id, pos, size, style)
+{
+ f_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS");
+ wxPanel::SetFont(* f_Temp);
+ b_EditModus = TRUE;
+ //----------------------------------------------------------------------------------------------------------------------------
+ popupMenu1 = new wxMenu("");
+ popupMenu1->Append(GRID_EDIT, _("Edit Modus"));
+ popupMenu2 = new wxMenu("");
+ popupMenu2->Append(GRID_BROWSE, _("Browse Modus"));
+}
+//---------------------------------------------------------------------------
+DBGrid::~DBGrid()
+{
+}
+//---------------------------------------------------------------------------
+int DBGrid::OnTableView(wxString Table)
+{
+ //---------------------------------------------------------------------------
+ int i=0,x,y,z, ValidTable=0;
+ wxString Temp0;
+ SetLabelFont(* f_Temp);
+ //---------------------------------------------------------------------------
+ ct_BrowserDB = (db_Br+i_Which)->ct_BrowserDB; // Get the DSN Pointer
+ //----------------------------------------------------------------------------
+ if (ct_BrowserDB) // Valid pointer (!= NULL) ?
+ { // Pointer is Valid, use the wxDatabase Information
+ for (x=0;x<ct_BrowserDB->numTables;x++) // go through the Tables
+ {
+ if (!wxStrcmp((ct_BrowserDB->pTableInf+x)->tableName,Table)) // is this our Table ?
+ { // Yes, the Data of this Table shall be put into the Grid
+ ValidTable = x; // Save the Tablenumber
+ (db_Br+i_Which)->OnSelect(Table,FALSE); // Select * from "table"
+ // Set the local Pointer to the Column Information we are going to use
+ (db_Br+i_Which)->cl_BrowserDB = (ct_BrowserDB->pTableInf+x)->pColInf;
+ if ((ct_BrowserDB->pTableInf+x)->pColInf) // Valid pointer (!= NULL) ?
+ { // Pointer is Valid, Column Informationen sind Vorhanden
+ i = (db_Br+i_Which)->i_Records; // How many Records are there
+ (db_Br+i_Which)->i_Which = ValidTable; // Still used ???? mj10777
+ if (i == 0) // If the Table is empty, then show one empty row
+ i++;
+ CreateGrid(i,(ct_BrowserDB->pTableInf+x)->numCols); // Records , Columns
+ for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++) // Loop through the Fields
+ { // The Field / Column name is used here as Row Titel
+ SetColLabelValue(y,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName);
+ SetColSize(y,95);
+ } // for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++)
+ SetColSize(((ct_BrowserDB->pTableInf+x)->numCols-1),120); // Make the last Column Wider
+ // The Grid has been created, now fill it
+ for (z=0;z<(db_Br+i_Which)->i_Records;z++) // Loop through the Records
+ {
+ Temp0.Printf("%06d",z+1); SetRowLabelValue(z,Temp0); // Set Row Lable Value
+ (db_Br+i_Which)->OnGetNext((ct_BrowserDB->pTableInf+ValidTable)->numCols,FALSE);
+ for (y=0;y<(ct_BrowserDB->pTableInf+ValidTable)->numCols;y++) // Loop through the Fields
+ { // BrowserDB::OnGetNext Formats the field Value into tablename
+ SetCellValue(z, y,((db_Br+i_Which)->cl_BrowserDB+y)->tableName);
+ }
+ if (z % 50 == 0)
+ {
+ Temp0.Printf(_("-I-> DBGrid::OnTableView(%s) - Record %6d has been read."),Table.c_str(),z);
+ pDoc->p_MainFrame->SetStatusText(Temp0, 0);
+ }
+ } // for (z=0;z<(db_Br+i_Which)->i_Records;z++)
+ Temp0.Printf(_("-I-> DBGrid::OnTableView(%s) - %6d Records have been read."),Table.c_str(),z);
+ pDoc->p_MainFrame->SetStatusText(Temp0, 0);
+ // The Grid has been filled, now leave
+ goto Weiter;
+ } // if ((ct_BrowserDB->pTableInf+x)->pColInf)
+ else
+ wxLogMessage(_("\n-E-> DBGrid::OnTableView():: Invalid Column Pointer : Failed"));
+ } // if ((ct_BrowserDB->pTableInf+x)->tableType == "TABLE")
+ } // for (x=0;x<ct_BrowserDB->numTables;x++)
+ } // if (ct_BrowserDB)
+ else
+ wxLogMessage(_("\n-E-> DBGrid::OnTableView():: Invalid DSN Pointer : Failed"));
+ //---------------------------------------------------------------------------
+ Weiter:
+ SetEditInPlace(b_EditModus); // Activate in-place Editing (FALSE)
+ //---------------------------------------------------------------------------
+ wxLogMessage(_("-I-> DBGrid::OnTableView() - End"));
+ return 0;
+}
+//---------------------------------------------------------------------------
+void DBGrid::OnModusEdit(wxMenu& menu, wxCommandEvent& event)
+{
+ b_EditModus = TRUE; // Needed by PopupMenu
+ SetEditable(FALSE); // Do not Edit with Text Edit Control
+ SetEditInPlace(b_EditModus); // Deactivate in-place Editing
+ UpdateDimensions(); // Redraw the Grid
+}
+//---------------------------------------------------------------------------
+void DBGrid::OnModusBrowse(wxMenu& menu, wxCommandEvent& event)
+{
+ b_EditModus = FALSE; // Needed by PopupMenu
+ SetEditInPlace(b_EditModus); // Deactivate in-place Editing
+ UpdateDimensions(); // Redraw the Grid
+}
+//------------------------------------------------------------------------------
+void DBGrid::OnMouseMove(wxMouseEvent &event)
+{
+ MousePos = event.GetPosition();
+}
+//---------------------------------------------------------------------------
+void DBGrid::OnLabelLeftClick( wxGridEvent& ev )
+{
+ logBuf = "DBGrid::OnLabelLeftClick : ";
+ if ( ev.GetRow() != -1 )
+ {
+ logBuf << "row label " << ev.GetRow();
+ }
+ else if ( ev.GetCol() != -1 )
+ {
+ logBuf << "col label " << ev.GetCol();
+ }
+ else
+ {
+ logBuf << "corner label";
+ }
+ if ( ev.ShiftDown() )
+ logBuf << " (shift down)";
+ // wxLogMessage( "%s", logBuf.c_str() );
+ logBuf += "\n";
+ wxLogMessage(logBuf.c_str());
+ ev.Skip();
+}
+//---------------------------------------------------------------------------
+void DBGrid::OnLabelRightClick( wxGridEvent& ev )
+{
+ //-------------------
+ if (b_EditModus)
+ PopupMenu(popupMenu2,MousePos.x,MousePos.y);
+ else
+ PopupMenu(popupMenu1,MousePos.x,MousePos.y);
+ //-------------------
+ logBuf = "DBGrid::OnLabelRightClick : ";
+ if ( ev.GetRow() != -1 )
+ {
+ logBuf << "row label " << ev.GetRow();
+ }
+ else if ( ev.GetCol() != -1 )
+ {
+ logBuf << "col label " << ev.GetCol();
+ }
+ else
+ {
+ logBuf << "corner label";
+ }
+ if ( ev.ShiftDown() )
+ logBuf << " (shift down)";
+ // wxLogMessage( "%s", logBuf.c_str() );
+ logBuf += "\n";
+ wxLogMessage(logBuf.c_str());
+ ev.Skip();
+}
+//---------------------------------------------------------------------------
+void DBGrid::OnLabelLeftDClick( wxGridEvent& ev )
+{
+ logBuf = "DBGrid::OnLabelLeftDClick : ";
+ if ( ev.GetRow() != -1 )
+ {
+ logBuf << "row label " << ev.GetRow();
+ }
+ else if ( ev.GetCol() != -1 )
+ {
+ logBuf << "col label " << ev.GetCol();
+ }
+ else
+ {
+ logBuf << "corner label";
+ }
+ if ( ev.ShiftDown() )
+ logBuf << " (shift down)";
+ // wxLogMessage( "%s", logBuf.c_str() );
+ logBuf += "\n";
+ wxLogMessage(logBuf.c_str());
+ ev.Skip();
+}
+//---------------------------------------------------------------------------
+void DBGrid::OnLabelRightDClick( wxGridEvent& ev )
+{
+ logBuf = "DBGrid::OnLabelRightDClick : ";
+ if ( ev.GetRow() != -1 )
+ {
+ logBuf << "row label " << ev.GetRow();
+ }
+ else if ( ev.GetCol() != -1 )
+ {
+ logBuf << "col label " << ev.GetCol();
+ }
+ else
+ {
+ logBuf << "corner label";
+ }
+ if ( ev.ShiftDown() )
+ logBuf << " (shift down)";
+ // wxLogMessage( "%s", logBuf.c_str() );
+ logBuf += "\n";
+ wxLogMessage(logBuf.c_str());
+ ev.Skip();
+}
+//---------------------------------------------------------------------------
+void DBGrid::OnCellLeftClick( wxGridEvent& ev )
+{
+ logBuf = "DBGrid::OnCellLeftClick : ";
+ logBuf << "Cell at row " << ev.GetRow()
+ << " col " << ev.GetCol();
+ // wxLogMessage( "%s", logBuf.c_str() );
+ // wxMessageBox(logBuf);
+ logBuf += "\n";
+ wxLogMessage(logBuf.c_str());
+ // you must call event skip if you want default grid processing
+ // (cell highlighting etc.)
+ //
+ ev.Skip();
+}
+//---------------------------------------------------------------------------
+void DBGrid::OnCellRightClick( wxGridEvent& ev )
+{
+ logBuf = "DBGrid::OnCellRightClick : ";
+ logBuf << "Cell at row " << ev.GetRow()
+ << " col " << ev.GetCol();
+ // wxLogMessage( "%s", logBuf.c_str() );
+ // wxMessageBox(logBuf);
+ logBuf += "\n";
+ wxLogMessage(logBuf.c_str());
+ // you must call event skip if you want default grid processing
+ // (cell highlighting etc.)
+ //
+ ev.Skip();
+}
+//---------------------------------------------------------------------------
+void DBGrid::OnCellLeftDClick( wxGridEvent& ev )
+{
+ logBuf = "DBGrid::OnCellLeftDClick : ";
+ logBuf << "Cell at row " << ev.GetRow()
+ << " col " << ev.GetCol();
+ // wxLogMessage( "%s", logBuf.c_str() );
+ // wxMessageBox(logBuf);
+ logBuf += "\n";
+ wxLogMessage(logBuf.c_str());
+ // you must call event skip if you want default grid processing
+ // (cell highlighting etc.)
+ //
+ ev.Skip();
+}
+//---------------------------------------------------------------------------
+void DBGrid::OnCellRightDClick( wxGridEvent& ev )
+{
+ logBuf = "DBGrid::OnCellRightDClick : ";
+ logBuf << "Cell at row " << ev.GetRow()
+ << " col " << ev.GetCol();
+ // wxLogMessage( "%s", logBuf.c_str() );
+ // wxMessageBox(logBuf);
+ logBuf += "\n";
+ wxLogMessage(logBuf.c_str());
+ // you must call event skip if you want default grid processing
+ // (cell highlighting etc.)
+ //
+ ev.Skip();
+}
+//---------------------------------------------------------------------------
+void DBGrid::OnCellChange( wxGridEvent& ev )
+{
+ logBuf = "DBGrid::OnCellChange : ";
+ logBuf << "Cell at row " << ev.GetRow()
+ << " col " << ev.GetCol();
+ // wxLogMessage( "%s", logBuf.c_str() );
+ // wxMessageBox(logBuf);
+ logBuf += "\n";
+ wxLogMessage(logBuf.c_str());
+ // you must call event skip if you want default grid processing
+ // (cell highlighting etc.)
+ //
+ ev.Skip();
+}
+//---------------------------------------------------------------------------
+void DBGrid::OnRowSize( wxGridSizeEvent& ev )
+{
+ logBuf = "DBGrid::OnRowSize : ";
+ logBuf << "Resized row " << ev.GetRowOrCol();
+ // wxLogMessage( "%s", logBuf.c_str() );
+ logBuf += "\n";
+ wxLogMessage(logBuf.c_str());
+ ev.Skip();
+}
+//---------------------------------------------------------------------------
+void DBGrid::OnColSize( wxGridSizeEvent& ev )
+{
+ logBuf = "DBGrid::OnColSize : ";
+ logBuf << "Resized col " << ev.GetRowOrCol();
+ // wxLogMessage( "%s", logBuf.c_str() );
+ logBuf += "\n";
+ wxLogMessage(logBuf.c_str());
+
+ ev.Skip();
+}
+//---------------------------------------------------------------------------
+void DBGrid::OnRangeSelected( wxGridRangeSelectEvent& ev )
+{
+ logBuf = "DBGrid::OnRangeSelected : ";
+ logBuf << "Selected cells from row " << ev.GetTopRow()
+ << " col " << ev.GetLeftCol()
+ << " to row " << ev.GetBottomRow()
+ << " col " << ev.GetRightCol();
+
+ logBuf += "\n";
+ // wxLogMessage( "%s", logBuf.c_str() );
+ wxLogMessage(logBuf.c_str());
+
+ ev.Skip();
+}
+//---------------------------------------------------------------------------
--- /dev/null
+//---------------------------------------------------------------------------
+// Name: DBGrid.h
+// Purpose: DBGrid
+// Author: Mark Johnson
+// Modified by: 20000126.mj10777
+// Created:
+// RCS-ID:
+// Copyright: (c) Mark Johnson
+// Licence: wxWindows license
+//---------------------------------------------------------------------------
+class mjDoc;
+//---------------------------------------------------------------------------
+class DBGrid: public wxGrid
+{
+ public:
+ DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size, long style);
+ virtual ~DBGrid();
+ //-------------------------------------------
+ int i_TabArt; // Tab = 0 ; Page = 1;
+ int i_ViewNr; // View Nummer in Tab / Page
+ int i_Which; // Which View, Database is this/using
+ //-------------------------------------------
+ wxFont* f_Temp;
+ mjDoc* pDoc;
+ wxDbInf* ct_BrowserDB;
+ BrowserDB* db_Br;
+ wxMenu *popupMenu1; // OnDBClass
+ wxMenu *popupMenu2; // OnDBGrid & OnTableclass
+ bool b_EditModus;
+ //-------------------------------------------
+ wxString logBuf,Temp0;
+ wxPoint MousePos;
+ //-------------------------------------------
+ void OnModusEdit(wxMenu& menu, wxCommandEvent& event);
+ void OnModusBrowse(wxMenu& menu, wxCommandEvent& event);
+ void OnMouseMove(wxMouseEvent& event);
+ int OnTableView(wxString Table);
+ void OnLabelLeftClick( wxGridEvent& );
+ void OnLabelRightClick( wxGridEvent& );
+ void OnLabelLeftDClick( wxGridEvent& );
+ void OnLabelRightDClick( wxGridEvent& );
+ void OnCellLeftClick( wxGridEvent& );
+ void OnCellRightClick( wxGridEvent& );
+ void OnCellLeftDClick( wxGridEvent& );
+ void OnCellRightDClick( wxGridEvent& );
+ void OnRowSize( wxGridSizeEvent& );
+ void OnColSize( wxGridSizeEvent& );
+ void OnRangeSelected( wxGridRangeSelectEvent& );
+ void OnCellChange( wxGridEvent& );
+ //-------------------------------------------
+ DECLARE_EVENT_TABLE()
+};
+//---------------------------------------------------------------------------
+#define GRID_01_BEGIN 1200
+#define GRID_BROWSE 1201
+#define GRID_EDIT 1202
+#define GRID_01_END 1203
+//------------------------------------------------------------------------------
--- /dev/null
+//---------------------------------------------------------------------------
+// Name: DBTree.h
+// Purpose: Programm Control with a Tree
+// Author: Mark Johnson
+// Modified by:
+// Created: 19991129
+// RCS-ID:
+// Copyright: (c) Mark Johnson, Berlin Germany, mj10777@gmx.net
+// Licence: wxWindows license
+//---------------------------------------------------------------------------
+//-- all #ifdefs that the whole Project needs. ------------------------------
+//---------------------------------------------------------------------------
+#ifdef __GNUG__
+ #pragma implementation
+ #pragma interface
+#endif
+//---------------------------------------------------------------------------
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+//---------------------------------------------------------------------------
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+//---------------------------------------------------------------------------
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif
+//---------------------------------------------------------------------------
+#ifndef __WXMSW__
+#endif
+//---------------------------------------------------------------------------
+//-- all #includes that every .cpp needs --- 19990807.mj10777 ---
+//---------------------------------------------------------------------------
+#include "std.h" // sorgsam Pflegen !
+//---------------------------------------------------------------------------
+//-- Global functions -------------------------------------------------------
+//---------------------------------------------------------------------------
+static inline const char *bool2String(bool b)
+{
+ return b ? "" : "not ";
+}
+//---------------------------------------------------------------------------
+BEGIN_EVENT_TABLE(DBTree, wxTreeCtrl)
+ EVT_MOTION (DBTree::OnMouseMove)
+ EVT_TREE_SEL_CHANGED(TREE_CTRL_DB, DBTree::OnSelChanged)
+ EVT_TREE_ITEM_RIGHT_CLICK(TREE_CTRL_DB,DBTree::OnRightSelect)
+ EVT_MENU(DATA_SHOW,DBTree::OnDBGrid)
+ EVT_MENU(DATA_DB,DBTree::OnDBClass)
+ EVT_MENU(DATA_TABLE,DBTree::OnTableClass)
+ EVT_MENU(DATA_TABLE_ALL,DBTree::OnTableClassAll)
+END_EVENT_TABLE()
+//---------------------------------------------------------------------------
+// DBTree implementation
+//---------------------------------------------------------------------------
+IMPLEMENT_DYNAMIC_CLASS(DBTree, wxTreeCtrl)
+//---------------------------------------------------------------------------
+DBTree::DBTree(wxWindow *parent) : wxTreeCtrl(parent)
+{
+}
+DBTree::DBTree(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size, long style)
+ : wxTreeCtrl(parent, id, pos, size, style)
+{
+ wxFont* ft_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS");
+ SetFont(* ft_Temp);
+
+ // Make an image list containing small icons
+ p_imageListNormal = new wxImageList(16, 16, TRUE);
+
+ // should correspond to TreeIc_xxx enum
+#if defined(__WXMSW__)
+ p_imageListNormal->Add(wxICON(Logo));
+ p_imageListNormal->Add(wxICON(DsnClosed));
+ p_imageListNormal->Add(wxICON(DsnOpen));
+ p_imageListNormal->Add(wxICON(TAB));
+ p_imageListNormal->Add(wxICON(COL));
+ p_imageListNormal->Add(wxICON(KEY));
+ p_imageListNormal->Add(wxICON(KEYF));
+ p_imageListNormal->Add(wxICON(DocOpen));
+ p_imageListNormal->Add(wxICON(DocOpen));
+#else
+ #include "bitmaps/logo.xpm"
+ #include "bitmaps/dsnclose.xpm"
+ #include "bitmaps/dsnopen.xpm"
+ #include "bitmaps/tab.xpm"
+ #include "bitmaps/key.xpm"
+ #include "bitmaps/keyf.xpm"
+ #include "bitmaps/d_open.xpm"
+ #include "bitmaps/d_closed.xpm"
+#endif
+
+ SetImageList(p_imageListNormal);
+ ct_BrowserDB = NULL;
+}
+//---------------------------------------------------------------------------
+DBTree::~DBTree()
+{
+ // wxLogMessage("DBTree::~DBTree() - Vor OnCloseDB()");
+ (pDoc->db_Br+i_Which)->OnCloseDB(FALSE);
+ // wxLogMessage("DBTree::~DBTree() - Nach OnCloseDB()");
+ (pDoc->db_Br+i_Which)->db_BrowserDB = NULL;
+ (pDoc->db_Br+i_Which)->ct_BrowserDB = NULL;
+ (pDoc->db_Br+i_Which)->cl_BrowserDB = NULL;
+ delete ct_BrowserDB;
+ delete p_imageListNormal;
+}
+//---------------------------------------------------------------------------
+#undef TREE_EVENT_HANDLER
+//---------------------------------------------------------------------------
+int DBTree::OnPopulate()
+{
+ wxTreeItemId Root, Folder, Docu, Funkt;
+ int i,x,y;
+ wxString SQL_TYPE, DB_TYPE;
+ //----------------------------------------------------------------------------------------------------------------------------
+ if((pDoc->db_Br+i_Which)->Initialize(FALSE))
+ {
+ ct_BrowserDB = (pDoc->db_Br+i_Which)->OnGetCatalog(FALSE);
+ if (ct_BrowserDB)
+ { // Use the wxDatabase Information
+ Temp0.Printf("%s - (%s) (%s)", s_DSN.c_str(),ct_BrowserDB->catalog, ct_BrowserDB->schema);
+ Root = AddRoot(Temp0,TreeIc_DsnOpen,TreeIc_DsnOpen,new DBTreeData("Root"));
+ for (x=0;x<ct_BrowserDB->numTables;x++)
+ {
+ if (!wxStrcmp((ct_BrowserDB->pTableInf+x)->tableType,"TABLE")) // only TABLES
+ {
+ Temp0.Printf(_("Tablename(%s) with (%d)Columns ; Remarks(%s)"), (ct_BrowserDB->pTableInf+x)->tableName,
+ (ct_BrowserDB->pTableInf+x)->numCols,
+ (ct_BrowserDB->pTableInf+x)->tableRemarks);
+ Temp1.Printf("TN(%s",(ct_BrowserDB->pTableInf+x)->tableName);
+ //----
+ (ct_BrowserDB->pTableInf+x)->pColInf = (pDoc->db_Br+i_Which)->OnGetColumns((ct_BrowserDB->pTableInf+x)->tableName,(ct_BrowserDB->pTableInf+x)->numCols,FALSE);
+ //----
+ if ((ct_BrowserDB->pTableInf+x)->pColInf)
+ {
+ Temp0.Printf(_("Tablename(%s) with (%d)Columns ; Remarks(%s)"), (ct_BrowserDB->pTableInf+x)->tableName,
+ (ct_BrowserDB->pTableInf+x)->numCols,
+ (ct_BrowserDB->pTableInf+x)->tableRemarks);
+ Folder = AppendItem(Root,Temp0,TreeIc_TAB,TreeIc_TAB, new DBTreeData(Temp1));
+ for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++)
+ {
+ Temp1.Printf("FN(%s",((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName);
+ // Here is where we find out if the Column is a Primary / Foreign Key
+ if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkCol != 0) // Primary Key
+ {
+ Docu = AppendItem(Folder,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName,TreeIc_KEY,TreeIc_KEY,new DBTreeData(Temp1));
+ Temp2.Printf(_("This Key is used in the following Tables : %s"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->PkTableName);
+ Funkt = AppendItem(Docu,Temp2,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData("KEY"));
+ }
+ else
+ if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkCol != 0) // Foreign Key
+ {
+ Docu = AppendItem(Folder,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName,TreeIc_KEYF,TreeIc_KEYF,new DBTreeData(Temp1));
+ Temp2.Printf(_("This Foreign Key comes from the following Table : %s"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->FkTableName);
+ Funkt = AppendItem(Docu,Temp2,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData("KEYF"));
+ }
+ else
+ Docu = AppendItem(Folder,((ct_BrowserDB->pTableInf+x)->pColInf+y)->colName,TreeIc_COL,TreeIc_COL,new DBTreeData(Temp1));
+ SQL_TYPE.Printf(_("SQL_C_???? (%d)"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->sqlDataType);
+ DB_TYPE.Printf(_("DB_DATA_TYPE_???? (%d)"),((ct_BrowserDB->pTableInf+x)->pColInf+y)->dbDataType);
+ for (i=1;i<=(pDoc->db_Br+i_Which)->i_SqlTyp[0];i++)
+ {
+ if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->sqlDataType == (pDoc->db_Br+i_Which)->i_SqlTyp[i])
+ {
+ SQL_TYPE.Printf("%s(%d) ; ",(pDoc->db_Br+i_Which)->s_SqlTyp[i].c_str(),(pDoc->db_Br+i_Which)->i_SqlTyp[i]);
+ }
+ } // for (i=1;i<=i_SqlTyp[0];i++)
+ for (i=1;i<=(pDoc->db_Br+i_Which)->i_dbTyp[0];i++)
+ {
+ if (((ct_BrowserDB->pTableInf+x)->pColInf+y)->dbDataType == (pDoc->db_Br+i_Which)->i_dbTyp[i])
+ {
+ DB_TYPE.Printf("%s(%d)",(pDoc->db_Br+i_Which)->s_dbTyp[i].c_str(),(pDoc->db_Br+i_Which)->i_dbTyp[i]);
+ }
+ } // for (i=1;i<=i_dbTyp[0];i++)
+ SQL_TYPE += DB_TYPE;
+ Funkt = AppendItem(Docu,SQL_TYPE,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData(SQL_TYPE));
+ SQL_TYPE.Printf("%10s %d,%d",((ct_BrowserDB->pTableInf+x)->pColInf+y)->typeName,
+ ((ct_BrowserDB->pTableInf+x)->pColInf+y)->columnSize,
+ ((ct_BrowserDB->pTableInf+x)->pColInf+y)->decimalDigits);
+ Funkt = AppendItem(Docu,SQL_TYPE,TreeIc_DocClosed,TreeIc_DocOpen,new DBTreeData(SQL_TYPE));
+ } // for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++)
+ } // if ((ct_BrowserDB->pTableInf+x)->pColInf)
+ else
+ Folder = AppendItem(Root,Temp0,TreeIc_FolderClosed,TreeIc_FolderOpen, new DBTreeData(Temp1));
+ } // if ((ct_BrowserDB->pTableInf+x)->tableType == "TABLE")
+ } // for (x=0;x<ct_BrowserDB->numTables;x++)
+ } // if (ct_BrowserDB)
+ else
+ wxLogMessage(_("\n-E-> DBTree::OnPopulate() : Invalid Catalog Pointer : Failed"));
+ } // if((pDoc->db_Br+i_Which)->Initialize(FALSE))
+ else
+ {
+ wxLogMessage(_("\n-E-> DBTree::OnPopulate() : A valid Pointer could not be created : Failed"));
+ }
+ //----------------------------------------------------------------------------------------------------------------------------
+ Expand(Root);
+ //----------------------------------------------------------------------------------------------------------------------------
+ popupMenu1 = NULL;
+ popupMenu1 = new wxMenu("");
+ popupMenu1->Append(DATA_DB, _("Make wxDB.cpp/h "));
+ popupMenu1->AppendSeparator();
+ popupMenu1->Append(DATA_TABLE_ALL, _("Make all wxTable.cpp/h classes"));
+ popupMenu2 = NULL;
+ popupMenu2 = new wxMenu("");
+ popupMenu2->Append(DATA_SHOW, _("Show Data"));
+ popupMenu2->AppendSeparator();
+ popupMenu2->Append(DATA_TABLE, _("Make wxTable.cpp/h "));
+ //----------------------------------------------------------------------------------------------------------------------------
+ return 0;
+}
+//---------------------------------------------------------------------------
+void DBTree::OnSelChanged(wxTreeEvent& WXUNUSED(event))
+{
+ int i;
+ Temp0.Empty();
+ pDoc->p_MainFrame->SetStatusText(Temp0,0);
+ // Get the Information that we need
+ wxTreeItemId itemId = GetSelection();
+ DBTreeData *item = (DBTreeData *)GetItemData(itemId);
+ if ( item != NULL )
+ {
+ int Treffer = 0;
+ Temp1.Printf("%s",item->m_desc.c_str());
+ //-----------------------------------------------------------------------------------------
+ if (Temp1.Contains("ODBC-"))
+ {
+ Temp1 = Temp1.Mid(5,wxSTRING_MAXLEN);
+ for (i=0;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() );
+ */
+ //---------------------------------------------------
+ }
+ }
+}
+//---------------------------------------------------------------------------
+void DBTree::OnRightSelect(wxTreeEvent& WXUNUSED(event))
+{
+ int i;
+ Temp0.Empty();
+ // Get the Information that we need
+ wxTreeItemId itemId = GetSelection();
+ DBTreeData *item = (DBTreeData *)GetItemData(itemId);
+ if ( item != NULL )
+ {
+ int Treffer = 0;
+ Temp1.Printf("%s",item->m_desc.c_str());
+ //-----------------------------------------------------------------------------------------
+ if (!wxStrcmp("Root",Temp1))
+ {
+ PopupMenu(popupMenu1,TreePos.x,TreePos.y);
+ Treffer++;
+ }
+ for (i=0;i<ct_BrowserDB->numTables;i++)
+ {
+ Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName);
+ if (!wxStrcmp(Temp2,Temp1))
+ {
+ PopupMenu(popupMenu2,TreePos.x,TreePos.y);
+ Treffer++;
+ }
+ }
+ //-----------------------------------------------------------------------------------------
+ if (Treffer == 0)
+ {
+ //---------------------------------------------------
+ /*
+ Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold,"
+ "%u children (%u immediately under this item)."),
+ item->m_desc.c_str(),
+ bool2String(IsSelected(itemId)),
+ bool2String(IsExpanded(itemId)),
+ bool2String(IsBold(itemId)),
+ GetChildrenCount(itemId),
+ GetChildrenCount(itemId));
+ LogBuf.Printf("-I-> DBTree::OnSelChanged - %s",Temp0.c_str());
+ wxLogMessage( "%s", LogBuf.c_str() );
+ */
+ //---------------------------------------------------
+ }
+ }
+}
+//---------------------------------------------------------------------------
+void DBTree::OnDBGrid(wxMenu& , wxCommandEvent& event)
+{
+ int i;
+ // Get the Information that we need
+ wxTreeItemId itemId = GetSelection();
+ DBTreeData *item = (DBTreeData *)GetItemData(itemId);
+ if ( item != NULL )
+ {
+ Temp1.Printf("%s",item->m_desc.c_str());
+ for (i=0;i<ct_BrowserDB->numTables;i++)
+ {
+ Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName);
+ if (!wxStrcmp(Temp2,Temp1))
+ {
+ // Temp0.Printf("(%d) Here is where a GridCtrl for >%s< will be called! ",i,(ct_BrowserDB->pTableInf+i)->tableName);
+ pDoc->OnChosenTbl(1,(ct_BrowserDB->pTableInf+i)->tableName);
+ // wxMessageBox(Temp0);
+ }
+ }
+ }
+}
+//---------------------------------------------------------------------------
+void DBTree::OnDBClass(wxMenu& , wxCommandEvent& event)
+{
+ // int i;
+ // Get the Information that we need
+ wxTreeItemId itemId = GetSelection();
+ DBTreeData *item = (DBTreeData *)GetItemData(itemId);
+ if ( item != NULL )
+ {
+ Temp0.Printf(_("Here is where a wxDB Class for >%s< will be made! "),s_DSN.c_str());
+ wxMessageBox(Temp0);
+ }
+}
+//---------------------------------------------------------------------------
+void DBTree::OnTableClass(wxMenu& , wxCommandEvent& event)
+{
+ int i;
+ // Get the Information that we need
+ wxTreeItemId itemId = GetSelection();
+ DBTreeData *item = (DBTreeData *)GetItemData(itemId);
+ if ( item != NULL )
+ {
+ Temp1.Printf("%s",item->m_desc.c_str());
+ for (i=0;i<ct_BrowserDB->numTables;i++)
+ {
+ Temp2.Printf("TN(%s",(ct_BrowserDB->pTableInf+i)->tableName);
+ if (!wxStrcmp(Temp2,Temp1))
+ {
+ Temp0.Printf(_("(%d) Here is where a wxTable Class for >%s< will be made! "),i,(ct_BrowserDB->pTableInf+i)->tableName);
+ wxMessageBox(Temp0);
+ }
+ }
+ }
+}
+//---------------------------------------------------------------------------
+void DBTree::OnTableClassAll(wxMenu& , wxCommandEvent& event)
+{
+ // int i;
+ // Get the Information that we need
+ wxTreeItemId itemId = GetSelection();
+ DBTreeData *item = (DBTreeData *)GetItemData(itemId);
+ if ( item != NULL )
+ {
+ Temp0.Printf(_("Here is where all wxTable Classes in >%s< will be made! "),s_DSN.c_str());
+ wxMessageBox(Temp0);
+ }
+}
+//------------------------------------------------------------------------------
+void DBTree::OnMouseMove(wxMouseEvent &event)
+{
+ TreePos = event.GetPosition();
+}
+//------------------------------------------------------------------------------
--- /dev/null
+//---------------------------------------------------------------------------
+// Name: DBTree.h
+// Purpose: Shows ODBC Catalog entries for Databases
+// Author: Mark Johnson
+// Modified by: 19991129.mj10777
+// Created: 19991129
+// Copyright: (c) Mark Johnson
+// Licence: wxWindows license
+//---------------------------------------------------------------------------
+class mjDoc; // Declared in Doc.h file
+//---------------------------------------------------------------------------
+class DBTreeData : public wxTreeItemData
+{
+public:
+ DBTreeData(const wxString& desc) : m_desc(desc) { }
+
+ void ShowInfo(wxTreeCtrl *tree);
+
+ wxString m_desc;
+};
+//---------------------------------------------------------------------------
+class DBTree : public wxTreeCtrl
+{
+ public:
+ enum
+ { // The order here must be the same as in m_imageListNormal !
+ TreeIc_Logo, // logo.ico
+ TreeIc_DsnClosed, // dsnclose.ico
+ TreeIc_DsnOpen, // dsnopen.ico
+ TreeIc_TAB, // tab.ico
+ TreeIc_COL, // col.ico
+ TreeIc_KEY, // key.ico
+ TreeIc_KEYF, // keyf.ico
+ TreeIc_DocClosed, // d_closed.ico
+ TreeIc_DocOpen, // d_open.ico
+ TreeIc_FolderClosed, // f_closed.ico
+ TreeIc_FolderOpen // f_open.ico
+ };
+ wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5;
+//---------------------------------------------------------------------------
+ DBTree() { }
+ DBTree(wxWindow *parent);
+ DBTree(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size,long style);
+ virtual ~DBTree();
+ mjDoc *pDoc;
+ wxDbInf *ct_BrowserDB;
+//---------------------------------------------------------------------------
+ int i_TabArt; // Tab = 0 ; Page = 1;
+ int i_ViewNr; // View Nummer in Tab / Page
+ int i_Which; // Which View, Database is this/using
+ wxString s_DSN; // Name of the Dataset
+ wxMenu *popupMenu1; // OnDBClass
+ wxMenu *popupMenu2; // OnDBGrid & OnTableclass
+ wxPoint TreePos;
+//---------------------------------------------------------------------------
+ wxImageList *p_imageListNormal;
+//---------------------------------------------------------------------------
+ public:
+ int OnPopulate();
+ void OnSelChanged(wxTreeEvent& event);
+ void OnRightSelect(wxTreeEvent& event);
+ void OnDBGrid(wxMenu& menu, wxCommandEvent& event);
+ void OnDBClass(wxMenu& menu, wxCommandEvent& event);
+ void OnTableClass(wxMenu& menu, wxCommandEvent& event);
+ void OnTableClassAll(wxMenu& menu, wxCommandEvent& event);
+ void OnMouseEvent(wxMouseEvent& event);
+ void OnMouseMove(wxMouseEvent& event);
+ public:
+//---------------------------------------------------------------------------
+ // NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS()
+ // if you want your overloaded OnCompareItems() to be called.
+ // OTOH, if you don't want it you may omit the next line - this will
+ // make default (alphabetical) sorting much faster under wxMSW.
+ DECLARE_DYNAMIC_CLASS(DBTree)
+ DECLARE_EVENT_TABLE()
+};
+//------------------------------------------------------------------------------
+#define POPUP_01_BEGIN 1100
+#define DATA_SHOW 1101
+#define DATA_DB 1102
+#define DATA_TABLE 1103
+#define DATA_TABLE_ALL 1104
+#define POPUP_01_END 1117
+//------------------------------------------------------------------------------
--- /dev/null
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 1999-05-10 18:29+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: ENCODING\n"
+
+#: ../src/generic/dirdlgg.cpp:461 ../src/generic/dirdlgg.cpp:489
+#: src/generic/dirdlgg.cpp:461 src/generic/dirdlgg.cpp:489
+msgid ""
+"\n"
+"(Do you have the required permissions?)"
+msgstr ""
+"\n"
+"(Haben Sie die nötigen Zugriffsrechte?)"
+
+#: ../src/generic/dirdlgg.cpp:449 src/generic/dirdlgg.cpp:449
+msgid ""
+"\n"
+"does not exist\n"
+"Create it now?"
+msgstr ""
+"\n"
+"existiert nicht\n"
+"Jetzt anlegen?"
+
+#: ../src/common/log.cpp:223 src/common/log.cpp:209
+#, c-format
+msgid " (error %ld: %s)"
+msgstr " (Fehler %ld: %s)"
+
+#: ../src/common/date.cpp:385 ../src/common/date.cpp:400
+#: src/common/date.cpp:384 src/common/date.cpp:399
+msgid " B.C."
+msgstr " B.C."
+
+#: ../src/common/resourc2.cpp:265 ../src/common/resourc2.cpp:1334
+#: ../src/common/resource.cpp:1630 ../src/common/resource.cpp:2704
+#: src/common/resourc2.cpp:265 src/common/resourc2.cpp:1334
+#: src/common/resource.cpp:1613 src/common/resource.cpp:2682
+#, c-format
+msgid "#define %s must be an integer."
+msgstr "#define %s muß eine ganze Zahl sein"
+
+#: src/common/valtext.cpp:143 src/common/valtext.cpp:154
+#, c-format
+msgid "%s is invalid."
+msgstr "%s ist ungültig"
+
+#: ../src/common/resourc2.cpp:709 ../src/common/resource.cpp:2075
+#: src/common/resourc2.cpp:709 src/common/resource.cpp:2057
+#, c-format
+msgid "%s not a bitmap resource specification."
+msgstr "%s ist keine Bitmap-Resourcenangabe"
+
+#: ../src/common/resourc2.cpp:864 ../src/common/resource.cpp:2230
+#: src/common/resourc2.cpp:864 src/common/resource.cpp:2212
+#, c-format
+msgid "%s not an icon resource specification."
+msgstr "%s ist keine Icon-Resourcenangabe"
+
+#: src/common/valtext.cpp:188
+#, c-format
+msgid "%s should be numeric."
+msgstr "%s sollte numerisch sein"
+
+#: src/common/valtext.cpp:163
+#, c-format
+msgid "%s should only contain ASCII characters."
+msgstr "%s sollte nur ASCII Zeichen enthalten"
+
+#: src/common/valtext.cpp:171
+#, c-format
+msgid "%s should only contain alphabetic characters."
+msgstr "%s sollte nur Buchstaben enthalten"
+
+#: src/common/valtext.cpp:179
+#, c-format
+msgid "%s should only contain alphabetic or numeric characters."
+msgstr "%s sollte nur Buchstaben oder Ziffern enthalten"
+
+#: ../src/common/resourc2.cpp:357 ../src/common/resourc2.cpp:1430
+#: ../src/common/resource.cpp:1723 ../src/common/resource.cpp:2801
+#: src/common/resourc2.cpp:357 src/common/resourc2.cpp:1430
+#: src/common/resource.cpp:1705 src/common/resource.cpp:2778
+#, c-format
+msgid "%s: ill-formed resource file syntax."
+msgstr "%s: falsch formatierte Resourcendatei-Syntax"
+
+#: ../src/common/log.cpp:638 src/common/log.cpp:633
+msgid "&Close"
+msgstr "&Schließen"
+
+#: ../src/common/log.cpp:639 src/common/log.cpp:634
+msgid "&Log"
+msgstr "&Log"
+
+#: ../src/common/docview.cpp:1725 ../src/common/docview.cpp:1736
+#: src/common/docview.cpp:1687 src/common/docview.cpp:1698
+msgid "&Redo"
+msgstr "&Wieder-Ausführen"
+
+#: ../src/common/docview.cpp:1719 ../src/common/docview.cpp:1746
+#: src/common/docview.cpp:1681 src/common/docview.cpp:1708
+msgid "&Redo "
+msgstr "&Wieder-Ausführen "
+
+#: ../src/common/log.cpp:635 src/common/log.cpp:630
+msgid "&Save..."
+msgstr "&Sichern..."
+
+#: ../src/common/docview.cpp:1731 src/common/docview.cpp:1693
+msgid "&Undo"
+msgstr "&Rückgängig"
+
+#: ../src/common/docview.cpp:1706 src/common/docview.cpp:1668
+msgid "&Undo "
+msgstr "&Rückgängig "
+
+#: ../src/common/config.cpp:382 src/common/config.cpp:393
+#, c-format
+msgid "'%s' has extra '..', ignored."
+msgstr "'%s' hat extra '..', ingoriert."
+
+#: ../src/common/intl.cpp:339 src/common/intl.cpp:338
+#, c-format
+msgid "'%s' is not a valid message catalog."
+msgstr "'%s' ist kein gültiger Nachrichtenkatalog."
+
+#: ../src/common/textfile.cpp:133 src/common/textfile.cpp:132
+#, c-format
+msgid "'%s' is probably a binary file."
+msgstr "'%s' ist vermutlich eine Binärdatei."
+
+#: ../src/common/resourc2.cpp:297 ../src/common/resourc2.cpp:1370
+#: ../src/common/resource.cpp:1662 ../src/common/resource.cpp:2740
+#: src/common/resourc2.cpp:297 src/common/resourc2.cpp:1370
+#: src/common/resource.cpp:1645 src/common/resource.cpp:2718
+msgid ""
+", expected static, #include or #define\n"
+"whilst parsing resource."
+msgstr ""
+", erwartete static, #include oder #define\n"
+"beim Lesen der Resource."
+
+#: src/generic/dcpsg.cpp:2389
+msgid "A3 297 x 420 mm"
+msgstr ""
+
+#: src/generic/dcpsg.cpp:1210 src/generic/dcpsg.cpp:1214
+#: src/generic/dcpsg.cpp:1800 src/generic/dcpsg.cpp:1804
+#: src/generic/dcpsg.cpp:2313 src/generic/dcpsg.cpp:2388
+#: src/generic/printps.cpp:239 src/generic/printps.cpp:243
+msgid "A4 210 x 297 mm"
+msgstr ""
+
+#: ../src/generic/fontdlgg.cpp:329 src/generic/fontdlgg.cpp:329
+msgid "ABCDEFGabcdefg12345"
+msgstr ""
+
+#: ../src/generic/colrdlgg.cpp:236 src/generic/colrdlgg.cpp:236
+msgid "Add to custom colours"
+msgstr "Zu Benutzerfarben hinzufügen"
+
+#: ../src/generic/prntdlgg.cpp:140 src/generic/prntdlgg.cpp:83
+msgid "All"
+msgstr "Alle"
+
+#: ../src/common/log.cpp:675 src/common/log.cpp:670
+#, c-format
+msgid "Append log to file '%s' (choosing [No] will overwrite it)?"
+msgstr "An Logdatei '%s' anhängen ([Nein] wird sie ersetzen)?"
+
+#: src/gtk/window.cpp:2716
+msgid "Application Error"
+msgstr "Programmfehler"
+
+#: ../src/common/resourc2.cpp:844 ../src/common/resource.cpp:2210
+#: src/common/resourc2.cpp:844 src/common/resource.cpp:2192
+#, c-format
+msgid "Bitmap resource specification %s not found."
+msgstr "Bitmapresourceangabe %s nicht gefunden."
+
+#: ../src/generic/fontdlgg.cpp:221 src/generic/fontdlgg.cpp:221
+msgid "Bold"
+msgstr "Fett"
+
+#: ../src/generic/prntdlgg.cpp:643 src/generic/prntdlgg.cpp:536
+msgid "Bottom margin (mm):"
+msgstr "Unterer Rand (mm)"
+
+#: ../src/common/log.cpp:636 src/common/log.cpp:631
+msgid "C&lear"
+msgstr "L&öschen"
+
+#: ../src/msw/thread.cpp:183 src/msw/thread.cpp:183
+msgid "Can not create event object."
+msgstr "Kann Eventobjekt nicht erzeugen."
+
+#: ../src/msw/thread.cpp:99 src/msw/thread.cpp:99
+msgid "Can not create mutex."
+msgstr "Kann Mutex nicht anlegen."
+
+#: ../src/msw/tooltip.cpp:199 src/msw/tooltip.cpp:199
+msgid "Can not create tooltip control"
+msgstr "Kann Tooltip nicht erzeugen."
+
+#: ../src/common/filefn.cpp:1179 src/common/filefn.cpp:1168
+#: src/common/filefn.cpp:1282
+#, c-format
+msgid "Can not enumerate files in directory '%s'"
+msgstr "Kann Dateien in Verzeichnis '%s' nicht listen"
+
+#: ../src/msw/clipbrd.cpp:549 src/msw/clipbrd.cpp:549
+#, c-format
+msgid "Can not get data in format '%s' from clipboard."
+msgstr "Kann keine Daten im Format '%s' von der Zwischenablage bekommen."
+
+#: src/gtk/threadpsx.cpp:450
+#, c-format
+msgid "Can not get priority range for scheduling policy %d."
+msgstr "Kann Prioritätsbereich für Schedulingregeln %d nicht bekommen."
+
+#: ../src/msw/clipbrd.cpp:474 src/msw/clipbrd.cpp:474
+#, c-format
+msgid "Can not put data in format '%s' on clipboard."
+msgstr "Kann keine Daten im Fromat '%s' in die Zwischenablage kopieren."
+
+#: ../src/msw/thread.cpp:410 src/msw/thread.cpp:410
+#, c-format
+msgid "Can not resume thread %x"
+msgstr "Kann Thread %x nicht forsetzen."
+
+#: src/gtk/threadpsx.cpp:442
+msgid "Can not retrieve thread scheduling policy."
+msgstr "Kann Schedulingregeln nicht bekommen."
+
+#: ../src/msw/thread.cpp:330 src/gtk/threadpsx.cpp:270 src/msw/thread.cpp:330
+msgid "Can not start thread: error writing TLS."
+msgstr "Kann Thread nicht starten: Fehler beim Schreiben der TLS."
+
+#: ../src/msw/thread.cpp:395 src/msw/thread.cpp:395
+#, c-format
+msgid "Can not suspend thread %x"
+msgstr "Kann Thread %x nicht anhalten."
+
+#: ../src/msw/thread.cpp:547 src/msw/thread.cpp:543
+msgid "Can not wait for thread termination"
+msgstr "Kann nicht auf Threadende warten"
+
+#: ../src/common/docview.cpp:1708 src/common/docview.cpp:1670
+msgid "Can't &Undo "
+msgstr "Kann nicht rückgängig machen "
+
+#: ../src/msw/thread.cpp:359 src/msw/thread.cpp:359
+msgid "Can't create thread"
+msgstr "Kann Thread nicht erzeugen"
+
+#: ../src/msw/iniconf.cpp:453 src/msw/iniconf.cpp:464
+#, c-format
+msgid "Can't delete the INI file '%s'"
+msgstr "Kann INI-Datei '%s' nicht löschen"
+
+#: ../src/unix/utilsunx.cpp:316 src/gtk/utilsgtk.cpp:360
+#, c-format
+msgid "Can't execute '%s'\n"
+msgstr "Kann '%s' nicht ausführen\n"
+
+#: ../src/msw/utilsexc.cpp:208 src/msw/utilsexc.cpp:208
+#, c-format
+msgid "Can't execute command '%s'"
+msgstr "Kann Befehl '%s' nicht ausführen"
+
+#: ../src/common/object.cpp:302 ../src/common/object.cpp:323
+#: src/common/object.cpp:290 src/common/object.cpp:311
+#, c-format
+msgid "Can't find the serialization object '%s' for the object '%s'."
+msgstr "Kann Serialisierungsobjekt '%s' für Object '%s' nicht finden."
+
+#: ../src/common/object.cpp:295 src/common/object.cpp:283
+msgid "Can't load wxSerial dynamic library."
+msgstr "Kann wxSerial DLL nicht laden."
+
+#: ../src/common/log.cpp:722 src/common/log.cpp:717
+msgid "Can't save log contents to file."
+msgstr "Kann Logtexte nicht in Datei sichern."
+
+#: ../src/msw/thread.cpp:384 src/msw/thread.cpp:384
+msgid "Can't set thread priority"
+msgstr "Kann Thread-Priorität nicht setzen"
+
+#: ../src/common/prntbase.cpp:114 ../src/generic/choicdgg.cpp:306
+#: ../src/generic/colrdlgg.cpp:235 ../src/generic/dcpsg.cpp:1918
+#: ../src/generic/dirdlgg.cpp:341 ../src/generic/fontdlgg.cpp:261
+#: ../src/generic/msgdlgg.cpp:123 ../src/generic/prntdlgg.cpp:172
+#: ../src/generic/prntdlgg.cpp:430 ../src/generic/prntdlgg.cpp:580
+#: ../src/generic/progdlgg.cpp:94 ../src/generic/textdlgg.cpp:141
+#: ../src/gtk/filedlg.cpp:154 src/common/prntbase.cpp:113
+#: src/generic/choicdgg.cpp:306 src/generic/colrdlgg.cpp:235
+#: src/generic/dcpsg.cpp:1875 src/generic/dirdlgg.cpp:341
+#: src/generic/fontdlgg.cpp:261 src/generic/msgdlgg.cpp:143
+#: src/generic/prntdlgg.cpp:111 src/generic/prntdlgg.cpp:317
+#: src/generic/prntdlgg.cpp:473 src/generic/textdlgg.cpp:141
+#: src/gtk/filedlg.cpp:131
+msgid "Cancel"
+msgstr "Abbruch"
+
+#: ../src/msw/app.cpp:223 src/msw/app.cpp:192
+msgid "Cannot initialize OLE"
+msgstr "Kann OLE nicht initialisiern"
+
+#: ../src/generic/dcpsg.cpp:1296 src/generic/dcpsg.cpp:1247
+msgid "Cannot open file!"
+msgstr "Kann Datei nicht öffnen!"
+
+#: src/common/CVS/Base/fileconf.cpp:614 src/common/fileconf.cpp:614
+#, c-format
+msgid "Character '%c' is invalid in a config entry name."
+msgstr "Zeichen '%c' ist in einem Konfigurationseintragsnamen nicht erlaubt."
+
+#: ../src/common/log.cpp:636 src/common/log.cpp:631
+msgid "Clear the log contents"
+msgstr "Logtexte löschen"
+
+#: ../src/common/prntbase.cpp:343 src/common/prntbase.cpp:342
+msgid "Close"
+msgstr "Schließen"
+
+#: ../src/common/log.cpp:638 src/common/log.cpp:633
+msgid "Close this window"
+msgstr "Fenster schließen"
+
+#: ../src/gtk/filedlg.cpp:71 src/gtk/filedlg.cpp:60
+msgid "Confirm"
+msgstr "Bestätigen"
+
+#: ../src/generic/helpxlp.cpp:242 src/generic/helpxlp.cpp:242
+#, c-format
+msgid "Connection to wxHelp timed out in %d seconds"
+msgstr "Verbindung mit wxHelp nach %d Sekunden abgebrochen"
+
+#: ../src/generic/helpxlp.cpp:242 src/generic/helpxlp.cpp:242
+#, c-format
+msgid "Help: %s"
+msgstr "Hilfe: %s"
+
+#: ../src/generic/prntdlgg.cpp:167 src/generic/prntdlgg.cpp:106
+msgid "Copies:"
+msgstr "Kopien:"
+
+#: ../src/common/resourc2.cpp:287 ../src/common/resource.cpp:1652
+#: src/common/resourc2.cpp:287 src/common/resource.cpp:1635
+#, c-format
+msgid "Could not find resource include file %s."
+msgstr "Konnte Resourcedatei %s nicht finden."
+
+#: ../src/generic/tabg.cpp:1038 src/generic/tabg.cpp:1038
+msgid "Could not find tab for id"
+msgstr "Konnte Seite für Id nicht finden"
+
+#: ../src/common/resource.cpp:753 src/common/resource.cpp:753
+#, c-format
+msgid ""
+"Could not resolve control class or id '%s'. Use (non-zero) integer instead\n"
+" or provide #define (see manual for caveats)"
+msgstr ""
+"Kann keine Kontrollklasse oder Id '%s' finden. Verwenden Sie eine ganze Zahl\n"
+" oder ein #define."
+
+#: ../src/common/resource.cpp:1203 src/common/resource.cpp:1199
+#, c-format
+msgid ""
+"Could not resolve menu id '%s'. Use (non-zero) integer instead\n"
+"or provide #define (see manual for caveats)"
+msgstr ""
+"Kann keine Kontrollklasse oder Id '%s' finden. Verwenden Sie eine ganze Zahl\n"
+" oder ein #define."
+
+#: ../src/common/prntbase.cpp:675 src/common/prntbase.cpp:673
+msgid "Could not start document preview."
+msgstr "Kann Druckvoransicht nicht starten."
+
+#: ../src/generic/printps.cpp:189 ../src/msw/printwin.cpp:228
+#: src/generic/printps.cpp:165
+msgid "Could not start printing."
+msgstr "Kann Ausdruck nicht beginnen."
+
+#: ../src/common/wincmn.cpp:598 src/gtk/window.cpp:2716
+#: src/msw/window.cpp:3756
+msgid "Could not transfer data to window"
+msgstr "Kann Daten nicht ins Fenster übertragen."
+
+#: ../src/msw/thread.cpp:127 src/msw/thread.cpp:127
+msgid "Couldn't acquire a mutex lock"
+msgstr "Kann Mutex-Lock nicht bekommen"
+
+#: ../src/msw/dragimag.cpp:88 ../src/msw/dragimag.cpp:116
+#: ../src/msw/imaglist.cpp:96 src/msw/imaglist.cpp:96
+msgid "Couldn't add an image to the image list."
+msgstr "Kann Bild nicht zur Liste hinzufügen."
+
+#: ../src/msw/thread.cpp:231 src/msw/thread.cpp:231
+msgid "Couldn't change the state of event object."
+msgstr "Kann Zustand des Eventobjektes nicht ändern."
+
+#: ../src/msw/timer.cpp:109 src/msw/timer.cpp:109
+msgid "Couldn't create a timer"
+msgstr "Kann keinen Wecker anlegen."
+
+#: ../src/msw/thread.cpp:430 src/msw/thread.cpp:430
+msgid "Couldn't get the current thread pointer"
+msgstr "Kann den aktuellen Threadzeiger nicht bekommen."
+
+#: ../src/common/imagpng.cpp:218 src/common/image.cpp:662
+msgid "Couldn't load a PNG image - probably file is corrupted."
+msgstr ""
+
+#: ../src/msw/thread.cpp:159 src/msw/thread.cpp:159
+msgid "Couldn't release a mutex"
+msgstr "Kann Mutex nicht freigeben."
+
+#: ../src/msw/listctrl.cpp:526 src/msw/listctrl.cpp:500
+#, c-format
+msgid "Couldn't retrieve information about list control item %d."
+msgstr "Kann keine Informationen über ListControl %d bekommen."
+
+#: ../src/msw/thread.cpp:612 src/msw/thread.cpp:608
+msgid "Couldn't terminate thread"
+msgstr "Kann Thread nicht beenden"
+
+#: ../src/generic/dirdlgg.cpp:478 src/generic/dirdlgg.cpp:478
+msgid "Create New Directory"
+msgstr "Neues Verzeichnis anlegen"
+
+#: ../src/common/log.cpp:1041 src/common/log.cpp:1022
+msgid "Debug"
+msgstr ""
+
+#: ../src/generic/fontdlgg.cpp:211 src/generic/fontdlgg.cpp:211
+msgid "Decorative"
+msgstr "Dekorativ"
+
+#: ../src/generic/dirdlgg.cpp:450 src/generic/dirdlgg.cpp:450
+msgid "Directory does not exist"
+msgstr "Verzeichnis existiert nicht"
+
+#: ../src/common/docview.cpp:404 src/common/docview.cpp:371
+#, c-format
+msgid "Do you want to save changes to document %s?"
+msgstr "Möchten Sie die Änderungen in Dokument %s sichern?"
+
+#: src/common/log.cpp:368
+msgid "DoLogString must be overrided if it's called."
+msgstr ""
+
+#: ../src/generic/dirdlgg.cpp:477 src/generic/dirdlgg.cpp:477
+msgid "Enter the name of the directory to create"
+msgstr "Geben Sie einen Namen für das neue Verzeichnis ein"
+
+#: ../src/generic/helphtml.cpp:260 src/generic/helphtml.cpp:260
+msgid "Entries found"
+msgstr "Einträge gefunden"
+
+#: src/common/CVS/Base/fileconf.cpp:607 src/common/fileconf.cpp:607
+#, c-format
+msgid "Entry name can't start with '%c'."
+msgstr "Eintragsname kann nicht mit '%c' beginnen."
+
+#: ../src/common/config.cpp:334 src/common/config.cpp:345
+#, c-format
+msgid ""
+"Environment variables expansion failed: missing '%c' at position %d in '%s'."
+msgstr ""
+"Umgebungsvariablenexpansion schlug fehl: fehlendes '%c' an Position %d in '%s'."
+
+#: ../src/common/log.cpp:474 ../src/generic/dcpsg.cpp:1296
+#: ../src/generic/helpxlp.cpp:243 ../src/gtk/filedlg.cpp:79
+#: src/common/log.cpp:474 src/generic/dcpsg.cpp:1247
+#: src/generic/helpxlp.cpp:243
+msgid "Error"
+msgstr "Fehler"
+
+#: ../src/generic/dirdlgg.cpp:462 ../src/generic/dirdlgg.cpp:490
+#: src/generic/dirdlgg.cpp:462 src/generic/dirdlgg.cpp:490
+msgid "Error creating directory"
+msgstr "Fehler beim Anlegen des Verzeichnisses"
+
+#: ../src/common/log.cpp:325 src/common/log.cpp:332
+msgid "Error: "
+msgstr "Fehler: "
+
+#: ../src/generic/dirdlgg.cpp:230 src/generic/dirdlgg.cpp:230
+msgid "Etcetera"
+msgstr "/etc"
+
+#: ../src/msw/utilsexc.cpp:237 src/msw/utilsexc.cpp:237
+#, c-format
+msgid "Execution of command '%s' failed"
+msgstr "Befehlsausführung '%s' schlug fehl"
+
+#: ../src/common/resourc2.cpp:326 ../src/common/resourc2.cpp:1399
+#: ../src/common/resource.cpp:1691 ../src/common/resource.cpp:2769
+#: src/common/resourc2.cpp:326 src/common/resourc2.cpp:1399
+#: src/common/resource.cpp:1674 src/common/resource.cpp:2747
+msgid "Expected '*' whilst parsing resource."
+msgstr "Erwartete '*' beim Lesen der Resource."
+
+#: ../src/common/resourc2.cpp:342 ../src/common/resourc2.cpp:1415
+#: ../src/common/resource.cpp:1708 ../src/common/resource.cpp:2786
+#: src/common/resourc2.cpp:342 src/common/resourc2.cpp:1415
+#: src/common/resource.cpp:1690 src/common/resource.cpp:2763
+msgid "Expected '=' whilst parsing resource."
+msgstr ""
+
+#: ../src/common/resourc2.cpp:312 ../src/common/resourc2.cpp:1385
+#: ../src/common/resource.cpp:1677 ../src/common/resource.cpp:2755
+#: src/common/resourc2.cpp:312 src/common/resourc2.cpp:1385
+#: src/common/resource.cpp:1660 src/common/resource.cpp:2733
+msgid "Expected 'char' whilst parsing resource."
+msgstr ""
+
+#: ../src/msw/clipbrd.cpp:106 src/msw/clipbrd.cpp:106
+msgid "Failed to close the clipboard."
+msgstr "Konnte Zwischenablage nicht schließen."
+
+#: ../src/generic/dirdlgg.cpp:460 ../src/generic/dirdlgg.cpp:488
+#: src/generic/dirdlgg.cpp:460 src/generic/dirdlgg.cpp:488
+msgid "Failed to create directory "
+msgstr "Konnte Verzeichnis nicht anlegen "
+
+#: ../src/msw/tooltip.cpp:260 src/msw/tooltip.cpp:260
+#, c-format
+msgid "Failed to create the tooltip '%s'"
+msgstr ""
+
+#: src/msw/dialog.cpp:143
+msgid "Failed to created dialog."
+msgstr ""
+
+#: ../src/msw/clipbrd.cpp:118 src/msw/clipbrd.cpp:118
+msgid "Failed to empty the clipboard."
+msgstr "Konnte Zwischenablage nicht leeren."
+
+#: ../src/common/resourc2.cpp:808 ../src/common/resource.cpp:2174
+#: src/common/resourc2.cpp:808 src/common/resource.cpp:2156
+#, c-format
+msgid ""
+"Failed to find XBM resource %s.\n"
+"Forgot to use wxResourceLoadBitmapData?"
+msgstr ""
+
+#: ../src/common/resourc2.cpp:963 ../src/common/resource.cpp:2329
+#: src/common/resourc2.cpp:963 src/common/resource.cpp:2311
+#, c-format
+msgid ""
+"Failed to find XBM resource %s.\n"
+"Forgot to use wxResourceLoadIconData?"
+msgstr ""
+
+#: ../src/common/resourc2.cpp:824 ../src/common/resource.cpp:2190
+#: src/common/resourc2.cpp:824 src/common/resource.cpp:2172
+#, c-format
+msgid ""
+"Failed to find XPM resource %s.\n"
+"Forgot to use wxResourceLoadBitmapData?"
+msgstr ""
+
+#: ../src/msw/clipbrd.cpp:86 src/msw/clipbrd.cpp:86
+msgid "Failed to open the clipboard."
+msgstr "Konnte Zwischenablage nicht öffnen."
+
+#: ../src/msw/clipbrd.cpp:375 src/msw/clipbrd.cpp:375
+msgid "Failed to retrieve data from the clipboard."
+msgstr "Konnte Daten von der Zwischenablage nicht bekommen."
+
+#: ../src/msw/clipbrd.cpp:262 src/msw/clipbrd.cpp:262
+msgid "Failed to set clipboard data."
+msgstr "Konnte Datein nicht in Zwischenablage kopieren."
+
+#: ../src/unix/threadpsx.cpp:551 src/gtk/threadpsx.cpp:508
+#, c-format
+msgid "Failed to set thread priority %d."
+msgstr ""
+
+#: ../src/unix/threadpsx.cpp:662 src/gtk/threadpsx.cpp:611
+msgid "Failed to terminate a thread."
+msgstr ""
+
+#: ../src/common/log.cpp:545 src/common/log.cpp:543
+msgid "Fatal error"
+msgstr "Nicht-behebbarer Fehler"
+
+#: ../src/common/log.cpp:318 src/common/log.cpp:325
+msgid "Fatal error: "
+msgstr "Nicht-behebbarer Fehler"
+
+#: ../src/gtk/filedlg.cpp:68 src/gtk/filedlg.cpp:57
+#, c-format
+msgid "File '%s' already exists, do you really want to overwrite it?"
+msgstr "Datei '%s' existiert bereits, möchten Sie sie wirklich überschreiben?"
+
+#: ../src/common/docview.cpp:280 ../src/common/docview.cpp:311
+#: src/common/docview.cpp:247 src/common/docview.cpp:278
+msgid "File error"
+msgstr "Dateifehler"
+
+#: ../src/msw/filedlg.cpp:259 src/msw/filedlg.cpp:252
+#, c-format
+msgid "Files (%s)|%s"
+msgstr "Dateien (%s)|%s"
+
+#: ../src/generic/fontdlgg.cpp:126 src/generic/fontdlgg.cpp:126
+msgid "Font"
+msgstr "Zeichensatz"
+
+#: ../src/unix/utilsunx.cpp:276 src/gtk/utilsgtk.cpp:327
+msgid "Fork failed"
+msgstr ""
+
+#: ../src/common/resourc2.cpp:295 ../src/common/resourc2.cpp:1368
+#: ../src/common/resource.cpp:1660 ../src/common/resource.cpp:2738
+#: src/common/resourc2.cpp:295 src/common/resourc2.cpp:1368
+#: src/common/resource.cpp:1643 src/common/resource.cpp:2716
+msgid "Found "
+msgstr "Gefunden "
+
+#: ../src/generic/prntdlgg.cpp:158 src/generic/prntdlgg.cpp:97
+msgid "From:"
+msgstr "Von:"
+
+#: ../src/generic/helphtml.cpp:259 ../src/generic/helphtml.cpp:260
+#: src/generic/helphtml.cpp:259 src/generic/helphtml.cpp:260
+msgid "Help Index"
+msgstr "Hilfeindex"
+
+#: ../src/common/resourc2.cpp:997 ../src/common/resourc2.cpp:1008
+#: ../src/common/resource.cpp:2363 ../src/common/resource.cpp:2374
+#: src/common/resourc2.cpp:997 src/common/resourc2.cpp:1008
+#: src/common/resource.cpp:2345 src/common/resource.cpp:2356
+#, c-format
+msgid "Icon resource specification %s not found."
+msgstr ""
+
+#: ../src/common/resource.cpp:234 src/common/resource.cpp:234
+msgid "Ill-formed resource file syntax."
+msgstr ""
+
+#: ../src/common/log.cpp:482 src/common/log.cpp:477
+msgid "Information"
+msgstr "Information"
+
+#: ../src/generic/fontdlgg.cpp:217 src/generic/fontdlgg.cpp:217
+msgid "Italic"
+msgstr "Kursiv"
+
+#: ../src/generic/dcpsg.cpp:1909 ../src/generic/prntdlgg.cpp:403
+#: ../src/generic/prntdlgg.cpp:606 src/generic/dcpsg.cpp:1866
+#: src/generic/prntdlgg.cpp:289 src/generic/prntdlgg.cpp:499
+msgid "Landscape"
+msgstr "Querformat"
+
+#: ../src/generic/prntdlgg.cpp:622 src/generic/prntdlgg.cpp:515
+msgid "Left margin (mm):"
+msgstr "Linker Rand (mm):"
+
+#: src/generic/dcpsg.cpp:2391
+msgid "Legal 8 1/2 x 14 in"
+msgstr ""
+
+#: src/generic/dcpsg.cpp:2390
+msgid "Letter 8 1/2 x 11 in"
+msgstr ""
+
+#: ../src/generic/fontdlgg.cpp:220 src/generic/fontdlgg.cpp:220
+msgid "Light"
+msgstr "Dünn"
+
+#: ../src/gtk/filedlg.cpp:212 ../src/msw/filedlg.cpp:359
+#: src/gtk/filedlg.cpp:177 src/msw/filedlg.cpp:352
+#, c-format
+msgid "Load %s file"
+msgstr "%s-Datei laden"
+
+#: ../src/common/log.cpp:725 src/common/log.cpp:720
+#, c-format
+msgid "Log saved to the file '%s'."
+msgstr "Logtext in Datei '%s' gesichert."
+
+#: ../src/gtk/mdi.cpp:347 src/gtk/mdi.cpp:321
+msgid "MDI child"
+msgstr ""
+
+#: ../src/common/mimetype.cpp:1265 src/common/mimetype.cpp:1203
+#, c-format
+msgid "Mailcap file %s, line %d: incomplete entry ignored."
+msgstr "Mailcap-Datei %s, Zeile %d: unvollständiger Eintrag ignoriert."
+
+#: src/common/mimetype.cpp:968
+#, c-format
+msgid ""
+"Mime.types file %s, line %d: extra characters after the field value ignored."
+msgstr ""
+"Mime.types-Datei %s, Zeile %d: extra Zeichen nach dem Wert ignoriert."
+
+#: ../src/common/mimetype.cpp:979 src/common/mimetype.cpp:941
+#, c-format
+msgid "Mime.types file %s, line %d: unterminated quoted string."
+msgstr "Mime.types-Datei %s, Zeile %d: unterminierter Text"
+
+#: ../src/generic/fontdlgg.cpp:212 src/generic/fontdlgg.cpp:212
+msgid "Modern"
+msgstr ""
+
+#: ../src/generic/dirdlgg.cpp:226 src/generic/dirdlgg.cpp:226
+msgid "Mounted Devices"
+msgstr "Dateisysteme"
+
+#: ../src/generic/dirdlgg.cpp:225 src/generic/dirdlgg.cpp:225
+msgid "My Home"
+msgstr "Mein Verzeichnis"
+
+#: ../src/generic/dirdlgg.cpp:342 src/generic/dirdlgg.cpp:342
+msgid "New..."
+msgstr "Neu..."
+
+#: ../src/generic/msgdlgg.cpp:111 src/generic/msgdlgg.cpp:131
+msgid "No"
+msgstr "Nein"
+
+#: ../src/common/resourc2.cpp:814 ../src/common/resourc2.cpp:969
+#: ../src/common/resource.cpp:2180 ../src/common/resource.cpp:2335
+#: src/common/resourc2.cpp:814 src/common/resourc2.cpp:969
+#: src/common/resource.cpp:2162 src/common/resource.cpp:2317
+msgid "No XBM facility available!"
+msgstr ""
+
+#: ../src/common/resourc2.cpp:830 ../src/common/resource.cpp:2196
+#: src/common/resourc2.cpp:830 src/common/resource.cpp:2178
+msgid "No XPM facility available!"
+msgstr ""
+
+#: ../src/common/resourc2.cpp:991 ../src/common/resource.cpp:2357
+#: src/common/resourc2.cpp:991 src/common/resource.cpp:2339
+msgid "No XPM icon facility available!"
+msgstr ""
+
+#: ../src/generic/helphtml.cpp:254 src/generic/helphtml.cpp:254
+msgid "No entries found."
+msgstr "Keine Einträge gefunden."
+
+#: ../src/generic/fontdlgg.cpp:216 ../src/generic/fontdlgg.cpp:219
+#: src/generic/fontdlgg.cpp:216 src/generic/fontdlgg.cpp:219
+msgid "Normal"
+msgstr ""
+
+#: ../src/generic/choicdgg.cpp:301 ../src/generic/colrdlgg.cpp:231
+#: ../src/generic/dcpsg.cpp:1917 ../src/generic/dirdlgg.cpp:340
+#: ../src/generic/fontdlgg.cpp:260 ../src/generic/msgdlgg.cpp:117
+#: ../src/generic/prntdlgg.cpp:171 ../src/generic/prntdlgg.cpp:429
+#: ../src/generic/prntdlgg.cpp:579 ../src/generic/textdlgg.cpp:136
+#: ../src/gtk/filedlg.cpp:148 src/generic/choicdgg.cpp:301
+#: src/generic/colrdlgg.cpp:231 src/generic/dcpsg.cpp:1874
+#: src/generic/dirdlgg.cpp:340 src/generic/fontdlgg.cpp:260
+#: src/generic/msgdlgg.cpp:138 src/generic/prntdlgg.cpp:110
+#: src/generic/prntdlgg.cpp:316 src/generic/prntdlgg.cpp:472
+#: src/generic/textdlgg.cpp:136 src/gtk/filedlg.cpp:125
+msgid "OK"
+msgstr ""
+
+#: ../src/generic/prntdlgg.cpp:409 src/generic/prntdlgg.cpp:295
+msgid "Options"
+msgstr "Optionen"
+
+#: ../src/generic/prntdlgg.cpp:405 ../src/generic/prntdlgg.cpp:607
+#: src/generic/prntdlgg.cpp:291 src/generic/prntdlgg.cpp:500
+msgid "Orientation"
+msgstr "Orientierung"
+
+#: ../src/common/prntbase.cpp:695 src/common/prntbase.cpp:693
+#, c-format
+msgid "Page %d"
+msgstr "Seite %d"
+
+#: ../src/common/prntbase.cpp:693 src/common/prntbase.cpp:691
+#, c-format
+msgid "Page %d of %d"
+msgstr "Seite %d aus %d"
+
+#: ../src/generic/prntdlgg.cpp:564 src/generic/prntdlgg.cpp:457
+msgid "Page Setup"
+msgstr "Seiteneinstellungen"
+
+#: ../src/generic/prntdlgg.cpp:141 src/generic/prntdlgg.cpp:84
+msgid "Pages"
+msgstr "Seiten"
+
+#: ../src/generic/prntdlgg.cpp:395 ../src/generic/prntdlgg.cpp:756
+#: src/generic/prntdlgg.cpp:281 src/generic/prntdlgg.cpp:629
+msgid "Paper size"
+msgstr "Papierformat"
+
+#: ../src/unix/utilsunx.cpp:259 src/gtk/utilsgtk.cpp:315
+msgid "Pipe creation failed"
+msgstr "Konnte keine Pipe anlegen"
+
+#: ../src/common/prntbase.cpp:112 src/common/prntbase.cpp:111
+msgid "Please wait..."
+msgstr "Bitte warten..."
+
+#: ../src/generic/dcpsg.cpp:1908 ../src/generic/prntdlgg.cpp:402
+#: ../src/generic/prntdlgg.cpp:605 src/generic/dcpsg.cpp:1865
+#: src/generic/prntdlgg.cpp:288 src/generic/prntdlgg.cpp:498
+msgid "Portrait"
+msgstr "Hochformat"
+
+#: ../src/generic/dcpsg.cpp:366 src/generic/dcpsg.cpp:338
+msgid "PostScript"
+msgstr ""
+
+#: ../src/generic/prntdlgg.cpp:234 src/generic/prntdlgg.cpp:159
+msgid "PostScript file"
+msgstr "PostScript-Datei"
+
+#: ../src/generic/dcpsg.cpp:1950 src/generic/dcpsg.cpp:1907
+msgid "PostScript:"
+msgstr ""
+
+#: ../src/generic/dcpsg.cpp:1913 src/generic/dcpsg.cpp:1870
+msgid "Preview Only"
+msgstr "Nur Voransicht"
+
+#: ../src/generic/prntdlgg.cpp:102 ../src/generic/prntdlgg.cpp:116
+#: src/generic/prntdlgg.cpp:71
+msgid "Print"
+msgstr "Drucken"
+
+#: ../src/generic/printps.cpp:189 src/generic/printps.cpp:165
+msgid "Print Error"
+msgstr "Fehler beim Drucken"
+
+#: ../src/common/docview.cpp:831 src/common/docview.cpp:785
+msgid "Print Preview"
+msgstr "Druckvoransicht"
+
+#: ../src/common/prntbase.cpp:636 ../src/common/prntbase.cpp:658
+#: ../src/common/prntbase.cpp:675 src/common/prntbase.cpp:633
+#: src/common/prntbase.cpp:655 src/common/prntbase.cpp:673
+msgid "Print Preview Failure"
+msgstr "Fehler bei Druckvoransicht"
+
+#: ../src/generic/prntdlgg.cpp:149 src/generic/prntdlgg.cpp:90
+msgid "Print Range"
+msgstr "Seitenbereich"
+
+#: ../src/generic/prntdlgg.cpp:370 ../src/generic/prntdlgg.cpp:377
+#: src/generic/prntdlgg.cpp:276
+msgid "Print Setup"
+msgstr "Druckereinstellungen"
+
+#: ../src/generic/prntdlgg.cpp:417 src/generic/prntdlgg.cpp:303
+msgid "Print in colour"
+msgstr "In Farbe drucken"
+
+#: ../src/generic/prntdlgg.cpp:419 src/generic/prntdlgg.cpp:306
+msgid "Print spooling"
+msgstr "Druckersteuerung"
+
+#: ../src/generic/dcpsg.cpp:1912 ../src/generic/prntdlgg.cpp:135
+#: src/generic/dcpsg.cpp:1869 src/generic/prntdlgg.cpp:78
+msgid "Print to File"
+msgstr "In Datei drucken"
+
+#: ../src/common/prntbase.cpp:350 src/common/prntbase.cpp:349
+msgid "Print..."
+msgstr "Drucken..."
+
+#: ../src/generic/dcpsg.cpp:1923 src/generic/dcpsg.cpp:1880
+msgid "Printer Command: "
+msgstr "Druck-Befehl "
+
+#: ../src/generic/dcpsg.cpp:1928 src/generic/dcpsg.cpp:1885
+msgid "Printer Options: "
+msgstr "Befehlsoptionen: "
+
+#: ../src/generic/dcpsg.cpp:335 src/generic/dcpsg.cpp:306
+msgid "Printer Settings"
+msgstr "Druckereinstellungen"
+
+#: ../src/generic/prntdlgg.cpp:421 src/generic/prntdlgg.cpp:308
+msgid "Printer command:"
+msgstr "Druck-Befehl:"
+
+#: ../src/generic/prntdlgg.cpp:133 src/generic/prntdlgg.cpp:76
+msgid "Printer options"
+msgstr "Druckereinstellungen"
+
+#: ../src/generic/prntdlgg.cpp:425 src/generic/prntdlgg.cpp:312
+msgid "Printer options:"
+msgstr "Druckereinstellungen:"
+
+#: ../src/generic/prntdlgg.cpp:582 src/generic/prntdlgg.cpp:475
+msgid "Printer..."
+msgstr "Drucker..."
+
+#: ../src/common/prntbase.cpp:111 ../src/common/prntbase.cpp:153
+#: src/common/prntbase.cpp:110 src/common/prntbase.cpp:152
+msgid "Printing"
+msgstr "Drucke"
+
+#: ../src/common/prntbase.cpp:125 src/common/prntbase.cpp:124
+msgid "Printing Error"
+msgstr "Fehler beim Drucken"
+
+#: ../src/common/log.cpp:319 src/common/log.cpp:326
+msgid "Program aborted."
+msgstr "Programm abgebrochen."
+
+#: ../src/common/log.cpp:677 src/common/log.cpp:672
+msgid "Question"
+msgstr "Frage"
+
+#: ../src/msw/registry.cpp:435 src/msw/registry.cpp:435
+#, c-format
+msgid ""
+"Registry key '%s' is needed for normal system operation,\n"
+"deleting it will leave your system in unusable state:\n"
+"operation aborted."
+msgstr ""
+
+#: ../src/generic/helphtml.cpp:259 src/generic/helphtml.cpp:259
+msgid "Relevant entries:"
+msgstr "Relevante Einträge:"
+
+#: ../src/msw/filedlg.cpp:336 src/msw/filedlg.cpp:329
+#, c-format
+msgid "Replace file '%s'?"
+msgstr "Datei '%s' ersetzen?"
+
+#: ../src/generic/prntdlgg.cpp:628 src/generic/prntdlgg.cpp:521
+msgid "Right margin (mm):"
+msgstr "Rechter Rand (mm):"
+
+#: ../src/generic/fontdlgg.cpp:210 src/generic/fontdlgg.cpp:210
+msgid "Roman"
+msgstr "Römisch"
+
+#: ../src/gtk/filedlg.cpp:228 ../src/msw/filedlg.cpp:359
+#: src/gtk/filedlg.cpp:193 src/msw/filedlg.cpp:352
+#, c-format
+msgid "Save %s file"
+msgstr "Datei %s sichern"
+
+#: ../src/common/docview.cpp:231 src/common/docview.cpp:198
+msgid "Save as"
+msgstr "Sichern als"
+
+#: ../src/common/log.cpp:635 src/common/log.cpp:630
+msgid "Save log contents to file"
+msgstr "Logtexte in Datei sichern"
+
+#: ../src/generic/fontdlgg.cpp:213 src/generic/fontdlgg.cpp:213
+msgid "Script"
+msgstr ""
+
+#: ../src/common/docview.cpp:1268 src/common/docview.cpp:1243
+msgid "Select a document template"
+msgstr ""
+
+#: ../src/common/docview.cpp:1291 src/common/docview.cpp:1266
+msgid "Select a document view"
+msgstr ""
+
+#: ../src/common/docview.cpp:1185 ../src/common/docview.cpp:1223
+#: src/common/docview.cpp:1168 src/common/docview.cpp:1198
+msgid "Select a file"
+msgstr ""
+
+#: ../src/generic/dcpsg.cpp:1911 src/generic/dcpsg.cpp:1868
+msgid "Send to Printer"
+msgstr "Zum Drucker schicken"
+
+#: ../src/generic/prntdlgg.cpp:137 src/generic/prntdlgg.cpp:80
+msgid "Setup..."
+msgstr "Einstellungen..."
+
+#: ../src/common/layout.cpp:1366 src/common/layout.cpp:1326
+msgid "Sizer error"
+msgstr ""
+
+#: ../src/generic/fontdlgg.cpp:218 src/generic/fontdlgg.cpp:218
+msgid "Slant"
+msgstr "Geneigt"
+
+#: ../src/common/docview.cpp:285 src/common/docview.cpp:252
+msgid "Sorry, could not open this file for saving."
+msgstr ""
+
+#: ../src/common/docview.cpp:316 ../src/common/docview.cpp:322
+#: src/common/docview.cpp:283 src/common/docview.cpp:289
+msgid "Sorry, could not open this file."
+msgstr ""
+
+#: ../src/common/docview.cpp:292 src/common/docview.cpp:259
+msgid "Sorry, could not save this file."
+msgstr ""
+
+#: ../src/common/prntbase.cpp:658 src/common/prntbase.cpp:655
+msgid "Sorry, not enough memory to create a preview."
+msgstr "Nicht genug Speicher für Voransicht."
+
+#: ../src/common/log.cpp:787 src/common/log.cpp:781
+msgid "Status: "
+msgstr ""
+
+#: ../src/generic/fontdlgg.cpp:214 src/generic/fontdlgg.cpp:214
+msgid "Swiss"
+msgstr "Schweizer"
+
+#: ../src/generic/fontdlgg.cpp:215 src/generic/fontdlgg.cpp:215
+msgid "Teletype"
+msgstr "Schreibmaschine"
+
+#: ../src/common/docview.cpp:1268 src/common/docview.cpp:1243
+msgid "Templates"
+msgstr ""
+
+#: ../src/generic/dirdlgg.cpp:231 src/generic/dirdlgg.cpp:231
+msgid "Temporary"
+msgstr ""
+
+#: ../src/generic/dirdlgg.cpp:223 src/generic/dirdlgg.cpp:223
+msgid "The Computer"
+msgstr "Der Computer"
+
+#: ../src/generic/dirdlgg.cpp:447 src/generic/dirdlgg.cpp:447
+msgid "The directory "
+msgstr "Das Verzeichnis"
+
+#: ../src/msw/thread.cpp:730 src/msw/thread.cpp:719
+msgid ""
+"Thread module initialization failed: can not store value in thread local "
+"storage"
+msgstr ""
+
+#: src/gtk/threadpsx.cpp:708
+msgid "Thread module initialization failed: failed to create pthread key."
+msgstr ""
+
+#: ../src/msw/thread.cpp:716 src/msw/thread.cpp:705
+msgid ""
+"Thread module initialization failed: impossible to allocate index in thread "
+"local storage"
+msgstr ""
+
+#: ../src/generic/prntdlgg.cpp:162 src/generic/prntdlgg.cpp:101
+msgid "To:"
+msgstr "Bis:"
+
+#: ../src/generic/prntdlgg.cpp:637 src/generic/prntdlgg.cpp:530
+msgid "Top margin (mm):"
+msgstr "Oberer Rand (mm):"
+
+#: ../src/generic/fontdlgg.cpp:246 src/generic/fontdlgg.cpp:246
+msgid "Underline"
+msgstr "Unterstreichen"
+
+#: ../src/common/resourc2.cpp:305 ../src/common/resourc2.cpp:319
+#: ../src/common/resourc2.cpp:335 ../src/common/resourc2.cpp:349
+#: ../src/common/resourc2.cpp:1378 ../src/common/resourc2.cpp:1392
+#: ../src/common/resourc2.cpp:1408 ../src/common/resourc2.cpp:1422
+#: ../src/common/resource.cpp:1670 ../src/common/resource.cpp:1684
+#: ../src/common/resource.cpp:1701 ../src/common/resource.cpp:1715
+#: ../src/common/resource.cpp:2748 ../src/common/resource.cpp:2762
+#: ../src/common/resource.cpp:2779 ../src/common/resource.cpp:2793
+#: src/common/resourc2.cpp:305 src/common/resourc2.cpp:319
+#: src/common/resourc2.cpp:335 src/common/resourc2.cpp:349
+#: src/common/resourc2.cpp:1378 src/common/resourc2.cpp:1392
+#: src/common/resourc2.cpp:1408 src/common/resourc2.cpp:1422
+#: src/common/resource.cpp:1653 src/common/resource.cpp:1667
+#: src/common/resource.cpp:1683 src/common/resource.cpp:1697
+#: src/common/resource.cpp:2726 src/common/resource.cpp:2740
+#: src/common/resource.cpp:2756 src/common/resource.cpp:2770
+msgid "Unexpected end of file whilst parsing resource."
+msgstr ""
+
+#: ../src/common/mimetype.cpp:1021 src/common/mimetype.cpp:985
+#, c-format
+msgid "Unknown field in file %s, line %d: '%s'."
+msgstr "Unbekanntest Feld '%s' in Datei %s, Zeile %d."
+
+#: ../src/common/mimetype.cpp:381 src/common/mimetype.cpp:363
+#, c-format
+msgid "Unmatched '{' in an entry for mime type %s."
+msgstr "Fehlendes '}' in Eintrag für MIME-Typ %s."
+
+#: ../src/common/docview.cpp:1703 ../src/common/docview.cpp:1718
+#: ../src/common/docview.cpp:1745 src/common/docview.cpp:1665
+#: src/common/docview.cpp:1680 src/common/docview.cpp:1707
+msgid "Unnamed command"
+msgstr ""
+
+#: ../src/common/resourc2.cpp:687 ../src/common/resource.cpp:2053
+#: src/common/resourc2.cpp:687 src/common/resource.cpp:2035
+#, c-format
+msgid "Unrecognized style %s whilst parsing resource."
+msgstr ""
+
+#: ../src/msw/clipbrd.cpp:220 ../src/msw/clipbrd.cpp:330
+#: src/msw/clipbrd.cpp:220 src/msw/clipbrd.cpp:330
+msgid "Unsupported clipboard format."
+msgstr "Nicht unterstütztes Format in Zwischenablage."
+
+#: ../src/generic/dirdlgg.cpp:227 src/generic/dirdlgg.cpp:227
+msgid "User"
+msgstr "Benutzer"
+
+#: ../src/generic/dirdlgg.cpp:228 src/generic/dirdlgg.cpp:228
+msgid "User Local"
+msgstr "Lokaler Benutzer"
+
+#: ../src/common/valtext.cpp:188 src/common/valtext.cpp:144
+#: src/common/valtext.cpp:155 src/common/valtext.cpp:164
+#: src/common/valtext.cpp:172 src/common/valtext.cpp:180
+#: src/common/valtext.cpp:189
+msgid "Validation conflict"
+msgstr ""
+
+#: ../src/generic/dirdlgg.cpp:229 src/generic/dirdlgg.cpp:229
+msgid "Variables"
+msgstr "Variablen"
+
+#: ../src/common/docview.cpp:1291 src/common/docview.cpp:1266
+msgid "Views"
+msgstr "Ansichten"
+
+#: ../src/common/docview.cpp:401 ../src/common/log.cpp:478
+#: ../src/common/resource.cpp:121 src/common/docview.cpp:368
+#: src/common/resource.cpp:121
+msgid "Warning"
+msgstr "Warnung"
+
+#: ../src/common/log.cpp:329 src/common/log.cpp:336
+msgid "Warning: "
+msgstr "Warning: "
+
+#: ../src/generic/dcpsg.cpp:1968 src/generic/dcpsg.cpp:1925
+msgid "X Scaling"
+msgstr "X Skalierung"
+
+#: ../src/generic/dcpsg.cpp:1977 src/generic/dcpsg.cpp:1934
+msgid "X Translation"
+msgstr "X Verschiebung"
+
+#: ../src/generic/dcpsg.cpp:1972 src/generic/dcpsg.cpp:1929
+msgid "Y Scaling"
+msgstr "Y Skalierung"
+
+#: ../src/generic/dcpsg.cpp:1981 src/generic/dcpsg.cpp:1938
+msgid "Y Translation"
+msgstr "Y Verschiebung"
+
+#: ../src/generic/msgdlgg.cpp:109 src/generic/msgdlgg.cpp:130
+msgid "Yes"
+msgstr "Ja"
+
+#: ../src/common/docview.cpp:1814 src/common/docview.cpp:1777
+msgid "[EMPTY]"
+msgstr "[leer]"
+
+#: ../src/common/time.cpp:358 src/common/time.cpp:358
+msgid "am"
+msgstr "am"
+
+#: ../src/common/fileconf.cpp:1266 src/common/CVS/Base/fileconf.cpp:1269
+#: src/common/fileconf.cpp:1269
+#, c-format
+msgid "attempt to change immutable key '%s' ignored."
+msgstr "Versuch, Eintrag '%s' zu ändern, verweigert. Ist nicht schreibbar."
+
+#: ../src/common/string.cpp:1703 src/common/string.cpp:1430
+msgid "bad index in wxArrayString::Remove"
+msgstr ""
+
+#: ../src/common/file.cpp:273 src/common/file.cpp:268
+#, c-format
+msgid "can't close file descriptor %d"
+msgstr ""
+
+#: ../src/msw/registry.cpp:403 src/msw/registry.cpp:403
+#, c-format
+msgid "can't close registry key '%s'"
+msgstr ""
+
+#: ../src/common/file.cpp:563 src/common/file.cpp:520
+#, c-format
+msgid "can't commit changes to file '%s'"
+msgstr "Kann Änderungen in Datei '%s' nicht sichern."
+
+#: ../src/common/file.cpp:224 src/common/file.cpp:215
+#, c-format
+msgid "can't create file '%s'"
+msgstr "Kann Datei '%s' nicht anlegen."
+
+#: ../src/msw/registry.cpp:386 src/msw/registry.cpp:386
+#, c-format
+msgid "can't create registry key '%s'"
+msgstr ""
+
+#: ../src/msw/registry.cpp:467 src/msw/registry.cpp:467
+#, c-format
+msgid "can't delete key '%s'"
+msgstr ""
+
+#: ../src/common/fileconf.cpp:736 src/common/CVS/Base/fileconf.cpp:742
+#: src/common/fileconf.cpp:742
+#, c-format
+msgid "can't delete user configuration file '%s'"
+msgstr "Kann Konfigurationsdatei '%s' nicht löschen."
+
+#: ../src/msw/registry.cpp:492 src/msw/registry.cpp:492
+#, c-format
+msgid "can't delete value '%s' from key '%s'"
+msgstr "Kann Wert '%s' von Eintrag '%s' nicht löschen."
+
+#: ../src/msw/registry.cpp:503 src/msw/registry.cpp:503
+#, c-format
+msgid "can't delete value of key '%s'"
+msgstr "Kann Wert von Eintrag '%s' nicht löschen"
+
+#: src/common/file.cpp:447
+#, c-format
+msgid "can't determine if the end of file is reached on descriptor %d"
+msgstr ""
+
+#: ../src/msw/registry.cpp:780 src/msw/registry.cpp:780
+#, c-format
+msgid "can't enumerate subkeys of key '%s'"
+msgstr "Kann Untereinträge von '%s' nicht auflisten"
+
+#: ../src/msw/registry.cpp:735 src/msw/registry.cpp:735
+#, c-format
+msgid "can't enumerate values of key '%s'"
+msgstr "Kann Werte von Eintrag '%s' nicht auflisten"
+
+#: ../src/common/file.cpp:418 src/common/file.cpp:413
+#, c-format
+msgid "can't find length of file on file descriptor %d"
+msgstr ""
+
+#: ../src/msw/utils.cpp:584 src/msw/utils.cpp:561
+msgid "can't find user's HOME, using current directory."
+msgstr "Kann Benutzerverzeichnis nicht finden, verwende aktuelles Verzeichnis."
+
+#: ../src/common/file.cpp:332 src/common/file.cpp:327
+#, c-format
+msgid "can't flush file descriptor %d"
+msgstr ""
+
+#: ../src/msw/registry.cpp:335 src/msw/registry.cpp:335
+#, c-format
+msgid "can't get info about registry key '%s'"
+msgstr ""
+
+#: ../src/common/file.cpp:386 src/common/file.cpp:381
+#, c-format
+msgid "can't get seek position on file descriptor %d"
+msgstr ""
+
+#: ../src/common/file.cpp:259 src/common/file.cpp:254
+#, c-format
+msgid "can't open file '%s'"
+msgstr "Kann Datei '%s' nicht öffnen"
+
+#: ../src/common/fileconf.cpp:183 src/common/CVS/Base/fileconf.cpp:186
+#: src/common/fileconf.cpp:186
+#, c-format
+msgid "can't open global configuration file '%s'."
+msgstr "Kann globale Konfigurationsdatei '%s' nicht öffnen."
+
+#: ../src/msw/registry.cpp:361 src/msw/registry.cpp:361
+#, c-format
+msgid "can't open registry key '%s'"
+msgstr ""
+
+#: ../src/common/fileconf.cpp:195 src/common/CVS/Base/fileconf.cpp:198
+#: src/common/fileconf.cpp:198
+#, c-format
+msgid "can't open user configuration file '%s'."
+msgstr "Kann Konfigurationsdatei '%s' nicht öffnen."
+
+#: ../src/common/fileconf.cpp:642 src/common/CVS/Base/fileconf.cpp:646
+#: src/common/fileconf.cpp:646
+msgid "can't open user configuration file."
+msgstr "Kann Benutzer-Konfigurationsdatei nicht öffnen."
+
+#: ../src/common/file.cpp:299 src/common/file.cpp:294
+#, c-format
+msgid "can't read from file descriptor %d"
+msgstr ""
+
+#: ../src/msw/registry.cpp:658 src/msw/registry.cpp:658
+#, c-format
+msgid "can't read value of '%s'"
+msgstr ""
+
+#: ../src/msw/registry.cpp:569 ../src/msw/registry.cpp:608
+#: src/msw/registry.cpp:569 src/msw/registry.cpp:608
+#, c-format
+msgid "can't read value of key '%s'"
+msgstr ""
+
+#: ../src/common/file.cpp:558 src/common/file.cpp:515
+#, c-format
+msgid "can't remove file '%s'"
+msgstr "Kann Datei '%s' nicht löschen."
+
+#: ../src/common/file.cpp:574 src/common/file.cpp:531
+#, c-format
+msgid "can't remove temporary file '%s'"
+msgstr "Kann Temporärdatei '%s' nicht löschen"
+
+#: ../src/common/file.cpp:372 src/common/file.cpp:367
+#, c-format
+msgid "can't seek on file descriptor %d"
+msgstr ""
+
+#: ../src/msw/registry.cpp:594 ../src/msw/registry.cpp:682
+#: src/msw/registry.cpp:594 src/msw/registry.cpp:682
+#, c-format
+msgid "can't set value of '%s'"
+msgstr ""
+
+#: src/common/CVS/Base/fileconf.cpp:594 src/common/fileconf.cpp:594
+msgid "can't set value of a group!"
+msgstr ""
+
+#: ../src/common/textfile.cpp:237 src/common/textfile.cpp:229
+#, c-format
+msgid "can't write file '%s' to disk."
+msgstr "Kann Datei '%s' nicht schreiben."
+
+#: ../src/common/file.cpp:317 src/common/file.cpp:312
+#, c-format
+msgid "can't write to file descriptor %d"
+msgstr ""
+
+#: ../src/common/fileconf.cpp:649 src/common/CVS/Base/fileconf.cpp:653
+#: src/common/fileconf.cpp:653
+msgid "can't write user configuration file."
+msgstr "Kann Benutzers Konfigurationsdatei nicht schreiben."
+
+#: ../src/common/intl.cpp:301 src/common/intl.cpp:300
+#, c-format
+msgid "catalog file for domain '%s' not found."
+msgstr "Nachrichtenkatalog für Sprachbereich '%s' nicht gefunden."
+
+#: ../src/common/filefn.cpp:1527 src/common/filefn.cpp:1497
+msgid "empty file name in wxFindFileInPath"
+msgstr ""
+
+#: ../src/common/fileconf.cpp:1253 src/common/CVS/Base/fileconf.cpp:1256
+#: src/common/fileconf.cpp:1256
+#, c-format
+msgid "entry '%s' appears more than once in group '%s'"
+msgstr "Eintrag '%s' erscheint in Gruppe '%s' mehrfach"
+
+#: ../src/common/fileconf.cpp:335 src/common/CVS/Base/fileconf.cpp:338
+#: src/common/fileconf.cpp:338
+#, c-format
+msgid "file '%s', line %d: '%s' ignored after group header."
+msgstr "Datei '%s', Zeile %d: '%s' hinter Gruppenkopf ignoriert."
+
+#: ../src/common/fileconf.cpp:361 src/common/CVS/Base/fileconf.cpp:357
+#: src/common/fileconf.cpp:357
+#, c-format
+msgid "file '%s', line %d: '=' expected."
+msgstr "Datei '%s', Zeile %d: '=' erwartet."
+
+#: ../src/common/fileconf.cpp:388 src/common/CVS/Base/fileconf.cpp:384
+#: src/common/fileconf.cpp:384
+#, c-format
+msgid "file '%s', line %d: key '%s' was first found at line %d."
+msgstr "Datei '%s', Zeile %d: Eintrag '%s' taucht erstmals in Zeile %d auf."
+
+#: ../src/common/fileconf.cpp:377 src/common/CVS/Base/fileconf.cpp:373
+#: src/common/fileconf.cpp:373
+#, c-format
+msgid "file '%s', line %d: value for immutable key '%s' ignored."
+msgstr "Datei '%s', Zeile %d: Eintrag für nicht-änderbaren Eintrag '%s' ignoriert."
+
+#: ../src/common/fileconf.cpp:303 src/common/CVS/Base/fileconf.cpp:307
+#: src/common/fileconf.cpp:307
+#, c-format
+msgid "file '%s': unexpected character %c at line %d."
+msgstr "Datei '%s': unerwartetes Zeichen %c in Zeile %d."
+
+#: ../src/common/date.cpp:374 ../src/common/date.cpp:392
+#: ../src/common/date.cpp:406 src/common/date.cpp:373 src/common/date.cpp:391
+#: src/common/date.cpp:405
+msgid "invalid date"
+msgstr "ungültiges Datum"
+
+#: ../src/common/date.cpp:356 src/common/date.cpp:355
+msgid "invalid day"
+msgstr "ungültiger Tag"
+
+#: ../src/common/file.cpp:457 src/common/file.cpp:452
+msgid "invalid eof() return value."
+msgstr ""
+
+#: ../src/common/log.cpp:690 src/common/log.cpp:685
+msgid "invalid message box return value"
+msgstr ""
+
+#: ../src/common/date.cpp:364 src/common/date.cpp:363
+msgid "invalid month"
+msgstr "ungültiger Monat"
+
+#: ../src/common/intl.cpp:432 src/common/intl.cpp:431
+#, c-format
+msgid "locale '%s' can not be set."
+msgstr "Lokale Umgebung '%s' kann nicht gesetzt werden."
+
+#: ../src/common/intl.cpp:296 src/common/intl.cpp:295
+#, c-format
+msgid "looking for catalog '%s' in path '%s'."
+msgstr "Suche Nachrichtenkatalog '%s' in Pfad '%s'."
+
+#: ../src/common/time.cpp:360 src/common/time.cpp:360
+msgid "pm"
+msgstr "pm"
+
+#: ../src/common/string.cpp:1719 src/common/string.cpp:1446
+msgid "removing inexistent element in wxArrayString::Remove"
+msgstr ""
+
+#: ../src/common/intl.cpp:521 src/common/intl.cpp:519
+#, c-format
+msgid "string '%s' not found in domain '%s' for locale '%s'."
+msgstr "Text '%s' in Bereich '%s' für Umgebung '%s' nicht gefunden."
+
+#: ../src/common/intl.cpp:526 src/common/intl.cpp:524
+#, c-format
+msgid "string '%s' not found in locale '%s'."
+msgstr "Text '%s' in Umgebung '%s' nicht gefunden."
+
+#: ../src/common/fileconf.cpp:1373 src/common/CVS/Base/fileconf.cpp:1376
+#: src/common/fileconf.cpp:1376
+#, c-format
+msgid "unexpected \" at position %d in '%s'."
+msgstr ""
+
+#: src/common/log.cpp:362
+msgid "unknown log level in wxLog::DoLog"
+msgstr ""
+
+#: src/common/log.cpp:559
+msgid "unknown log level in wxLogGui::DoLog"
+msgstr ""
+
+#: ../src/common/file.cpp:367 src/common/file.cpp:362
+msgid "unknown seek origin"
+msgstr ""
+
+#: ../src/common/docview.cpp:370 src/common/docview.cpp:337
+msgid "unnamed"
+msgstr "Unbenannt"
+
+#: ../src/common/docview.cpp:1055 src/common/docview.cpp:1009
+#, c-format
+msgid "unnamed%d"
+msgstr "Unbenannt"
+
+#: ../src/common/intl.cpp:306 src/common/intl.cpp:305
+#, c-format
+msgid "using catalog '%s' from '%s'."
+msgstr "Verwende Nachrichtenkatalog '%s' von '%s'."
+
+#: ../src/common/layout.cpp:1366 src/common/layout.cpp:1326
+msgid "wxExpandSizer has no parent!"
+msgstr ""
+
+#: ../src/common/prntbase.cpp:635 src/common/prntbase.cpp:632
+msgid ""
+"wxPrintPreviewBase::RenderPage: must use wxPrintPreviewBase::SetCanvas to "
+"let me know about the canvas!"
+msgstr ""
+
+#: ../src/common/filefn.cpp:1134 src/common/filefn.cpp:1123
+msgid "wxWindows: error finding temporary file name.\n"
+msgstr ""
+
+#: ../src/gtk/filedlg.cpp:79
+msgid "Please choose an existing file."
+msgstr "Bitte wählen Sie eine bestehende Datei."
+
+#: ../src/generic/printps.cpp:173
+msgid "Printing..."
+msgstr "Drucke..."
+
+#: ../src/generic/printps.cpp:207
+#, c-format
+msgid "Printing page %d..."
+msgstr "Drucke Seite %d..."
+
+#: ../src/generic/dcpsg.cpp:2189
+msgid "A4 sheet, 210 x 297 mm"
+msgstr ""
+
+#: ../src/common/dynlib.cpp:187
+#, c-format
+msgid "Couldn't find symbol '%s' in a dynamic library"
+msgstr ""
+
+#: ../src/common/dynlib.cpp:274
+#, c-format
+msgid "Failed to load shared library '%s'"
+msgstr ""
+
+#: ../src/common/file.cpp:452
+#, c-format
+msgid ""
+"can't determine if the end of file is reached on descriptor "
+"%d"
+msgstr ""
+
+#: ../src/common/fileconf.cpp:611
+#, c-format
+msgid "Config entry name cannot start with '%c'."
+msgstr ""
+
+#: ../src/common/filefn.cpp:1003
+#, c-format
+msgid "Directory '%s' couldn't be created"
+msgstr "Verzeichnis '%s' konnte nicht angelegt werden."
+
+#: ../src/common/string.cpp:1687
+msgid "bad index in wxArrayString::Insert"
+msgstr ""
+
+#: ../src/common/valtext.cpp:140
+#, c-format
+msgid "'%s' is invalid"
+msgstr ""
+
+#: ../src/common/valtext.cpp:160
+#, c-format
+msgid "'%s' should only contain ASCII characters."
+msgstr ""
+
+#: ../src/common/valtext.cpp:166
+#, c-format
+msgid "'%s' should only contain alphabetic characters."
+msgstr ""
+
+#: ../src/common/valtext.cpp:172
+#, c-format
+msgid "'%s' should only contain alphabetic or numeric characters."
+msgstr ""
+
+#: ../src/common/valtext.cpp:178
+#, c-format
+msgid "'%s' should be numeric."
+msgstr ""
+
+#: ../src/common/imagjpeg.cpp:174
+msgid "Couldn't load a JPEG image - probably file is corrupted."
+msgstr ""
+
+#: ../src/common/imagjpeg.cpp:287
+msgid "Couldn't save a JPEG image - probably file is corrupted."
+msgstr ""
+
+#: ../src/motif/app.cpp:559
+#, c-format
+msgid "wxWindows could not open display for '%s': exiting."
+msgstr ""
+
+#: ../src/msw/app.cpp:198
+msgid "Could not initialise Rich Edit DLL"
+msgstr ""
+
+#: ../src/msw/app.cpp:698
+msgid "Unrecoverable program error detected: the application will terminate."
+msgstr ""
+
+#: ../src/msw/app.cpp:700
+msgid "Fatal Error"
+msgstr ""
+
+#: ../src/msw/app.cpp:1165
+msgid "Fatal error: exiting"
+msgstr ""
+
+#: ../src/msw/dialog.cpp:145
+msgid "Failed to create dialog."
+msgstr ""
+
+#: ../src/unix/threadpsx.cpp:296
+msgid "Cannot start thread: error writing TLS"
+msgstr ""
+
+#: ../src/unix/threadpsx.cpp:477
+msgid "Cannot retrieve thread scheduling policy."
+msgstr ""
+
+#: ../src/unix/threadpsx.cpp:485
+#, c-format
+msgid "Cannot get priority range for scheduling policy %d."
+msgstr ""
+
+#: ../src/unix/threadpsx.cpp:768
+msgid "Thread module initialization failed: failed to create thread key"
+msgstr ""
+
+#: ../src/unix/utilsunx.cpp:211
+msgid "Waiting for subprocess termination failed"
+msgstr ""
+
+#: ../src/unix/utilsunx.cpp:449
+msgid "Cannot get the hostname"
+msgstr ""
+
+#: ../src/unix/utilsunx.cpp:485
+msgid "Cannot get the official hostname"
+msgstr ""
+
+#: ../src/unix/utilsunx.cpp:547 ../src/unix/utilsunx.cpp:555
+msgid "Error "
+msgstr ""
+
+#: ../src/unix/utilsunx.cpp:547 ../src/unix/utilsunx.cpp:555
+msgid "noname"
+msgstr "ohnename"
--- /dev/null
+# for wxHelp
+# Copyright (C) 2000 Free Software Foundation, Inc.
+# Mark Johnson <mj10777@gmx.net>, 2000.
+#
+#-----------------------------------------------------------
+#: ../Help
+msgid "Help"
+msgstr "Hilfe"
+
+#: ../Help
+msgid "Help: %s"
+msgstr "Hilfe: %s"
+
+#: ../Help
+msgid "(Help)"
+msgstr "(Hilfe)"
+
+#: ../Help
+msgid "Search"
+msgstr "Suchen"
+
+#: ../Help
+msgid "<bookmarks>"
+msgstr "<Lesezeichen>"
+
+#: ../Help
+msgid "Contents"
+msgstr "Inhalt"
+
+#: ../Help
+msgid "Find"
+msgstr "Suchen"
+
+#: ../Help
+msgid "Show all"
+msgstr "Alles zeigen"
+
+#: ../Help
+msgid "%i of %i"
+msgstr "%i von %i"
+
+#: ../Help
+msgid "Show/hide navigation panel"
+msgstr "Suchbaum Ein-/Ausschalten"
+
+#: ../Help
+msgid "Go back to the previous HTML page"
+msgstr "Vorherige HTLM Seite zeigen"
+
+#: ../Help
+msgid "Go forward to the next HTML page"
+msgstr "Nächste HTLM Seite zeigen"
+
+#: ../Help
+msgid "Add current page to bookmarks"
+msgstr "Aktuelle HTLM Seite als Lesezeichen hinzufügen"
+
+#: ../Help
+msgid "Remove current page from bookmarks"
+msgstr "Aktuelle HTLM Seite als Lesezeichen entfernen"
+
+#: ../Help
+msgid "Display options dialog"
+msgstr "Anzeige Options Dialog"
+
+#: ../Help
+msgid "Help Browser Options"
+msgstr "Hilfe Browser Optionen"
+
+#: ../Help
+msgid "Font size:"
+msgstr "Font Größe:"
+
+#: ../Help
+msgid "small"
+msgstr "Klein"
+
+#: ../Help
+msgid "medium"
+msgstr "Mittel"
+
+#: ../Help
+msgid "large"
+msgstr "Groß"
+
+#: ../Help
+msgid "Preview:"
+msgstr "Vorschau:"
+
+#: ../Help
+msgid "Show all items in index"
+msgstr "Alle Themen im Index anzeigen"
+
+#: ../Help
+msgid "Display all index items that contain given substring. Search is case insensitive."
+msgstr "Alle Themen im Index nach Suchbegriff durchsuchen. Groß-/Kleinschreibung wird nicht beachtet"
+
+#: ../Help
+msgid "Search contents of help book(s) for all occurences of the text you typed above"
+msgstr "Alle Hilfebücher nach Suchbegriff durchsuchen."
+
+#: ../Help
+msgid "all books"
+msgstr "alle Bücher"
+
+#: ../Help
+msgid "Case sensitive"
+msgstr "Groß-/Kleinschreibung"
+
+#: ../Help
+msgid "Whole words only"
+msgstr "Als Wort"
+
+#: ../Help
+msgid "Searching..."
+msgstr "Suchen..."
+
+#: ../Help
+msgid "No matching page found yet"
+msgstr "Passende Seite noch nicht gefunden"
+
+#: ../Help
+msgid "Found %i matches"
+msgstr "Suchbegriff %i mal gefunden"
+
+#-----------------------------------------------------------
+#: ../Help
+msgid "Done"
+msgstr ":-) Ich habe Fertig"
+#-----------------------------------------------------------
+#: ../Help
+msgid ""
+msgstr ""
--- /dev/null
+msgfmt -o PgmText.mo PgmText.po
+msgfmt -o Help.mo Help.po
--- /dev/null
+msgfmt -o wxStd.mo de.po
--- /dev/null
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#-----------------------------------------------------------
+#: ../BrowserDB.cpp:68 ../BrowserDB.cpp:72 ../DBGrid.cpp:151 ../DBGrid.cpp:174 ../DBGrid.cpp:197 ../DBGrid.cpp:220 ../DBGrid.cpp:232 ../DBGrid.cpp:247 ../DBGrid.cpp:262 ../DBGrid.cpp:277 ../DBGrid.cpp:292 ../DBGrid.cpp:305 ../DBGrid.cpp:315 ../DBGrid.cpp:329
+msgid "\n"
+msgstr ""
+
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#: ../BrowserDB.cpp:67 ../BrowserDB.cpp:79 ../BrowserDB.cpp:80 ../BrowserDB.cpp:81 ../BrowserDB.cpp:95 ../BrowserDB.cpp:127 ../BrowserDB.cpp:128 ../BrowserDB.cpp:129 ../BrowserDB.cpp:208 ../BrowserDB.cpp:358 ../BrowserDB.cpp:385 ../DBBrowser.cpp:87 ../DBBrowser.cpp:124 ../DBBrowser.cpp:127 ../DBTree.cpp:40 ../DBTree.cpp:200 ../Doc.cpp:100 ../Doc.cpp:121 ../Doc.cpp:149 ../Doc.cpp:150 ../Doc.cpp:189 ../Doc.cpp:238 ../Doc.cpp:251 ../PgmCtrl.cpp:45
+#, fuzzy, c-format
+msgid "\n"
+ "\n"
+ "-E-> BrowserDB::OnStartDB(%s) : Failed ! "
+msgstr "\n"
+ "\n"
+ "-E-> BrowserDB::OnStartDB(%s) : Gescheitert ! "
+
+#: ../BrowserDB.cpp:131
+msgid "\n"
+ "-E-> BrowserDB::OnConnectDataSource() DB CONNECTION ERROR : Unable to connect to the data source.\n"
+msgstr "\n"
+ "-E-> BrowserDB::OnConnectDataSource() DB VERBINDUNGSFEHLER : Verbindungsaufbau zur Datenquelle nicht möglich.\n"
+
+#: ../BrowserDB.cpp:131
+msgid "\n"
+ "-E-> BrowserDB::OnConnectDataSource() DB CONNECTION ERROR : Unable to connect to the data source.\n"
+ "\n"
+ "Check the name of your data source to verify it has been correctly entered/spelled.\n"
+ "\n"
+ "With some databases, the user name and password must\n"
+ "be created with full rights to the table prior to making a connection\n"
+ "(using tools provided by the database manufacturer)"
+msgstr ""
+
+#: ../BrowserDB.cpp:341
+#, c-format
+msgid "\n"
+ "-E-> BrowserDB::OnExecSQL - ODBC-Error with ExecSql of >%s<.\n"
+ "-E-> "
+msgstr ""
+
+#: ../BrowserDB.cpp:225 ../BrowserDB.cpp:235 ../BrowserDB.cpp:238 ../BrowserDB.cpp:249 ../BrowserDB.cpp:252
+msgid "\n"
+ "-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n"
+ "-E-> "
+msgstr "\n"
+ "-E-> BrowserDB::OnGetData - ODBC-Fehler mit GetNext \n"
+ "-E-> "
+
+#: ../BrowserDB.cpp:180
+msgid "\n"
+ "-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext \n"
+ "-E-> "
+msgstr ""
+
+#: ../BrowserDB.cpp:214
+#, c-format
+msgid "\n"
+ "-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext of >%s<.\n"
+ "-E-> "
+msgstr ""
+
+#: ../BrowserDB.cpp:279 ../BrowserDB.cpp:293 ../BrowserDB.cpp:307 ../BrowserDB.cpp:321
+#, c-format
+msgid "\n"
+ "-E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of >%s<.\n"
+ "-E-> "
+msgstr "\n"
+ "-E-> BrowserDB::OnSelect - ODBC-Fehler mit ExecSql >%s<.\n"
+ "-E-> "
+
+#: ../BrowserDB.cpp:115
+msgid "\n"
+ "-E-> BrowserDB::OnStartDB() : DB CONNECTION ERROR : A problem occured while trying to get a connection to the data source"
+msgstr "\n"
+ "-E-> BrowserDB::OnStartDB() DB VERBINDUNGSFEHLER : Verbindungsaufbau zur Datenquelle nicht möglich"
+
+#: ../DBGrid.cpp:113 ../DBGrid.cpp:120
+msgid "\n"
+ "-E-> DBGrid::OnTableView():: Invalid Column Pointer : Failed"
+msgstr "\n"
+ "-E-> DBGrid::OnTableView():: Ungültige Spalten-Zeiger : Gescheiter"
+
+#: ../DBGrid.cpp:118 ../DBGrid.cpp:125
+msgid "\n"
+ "-E-> DBGrid::OnTableView():: Invalid DSN Pointer : Failed"
+msgstr "\n"
+ "-E-> DBGrid::OnTableView():: Ungültige DSN Zeiger : Gescheitert"
+
+#: ../DBTree.cpp:190 ../DBTree.cpp:191
+msgid "\n"
+ "-E-> DBTree::OnPopulate() : A valid Pointer could not be created : Failed"
+msgstr "\n"
+ "-E-> DBTree::OnPopulate() : Eine gültiger Zeiger konnte nicht erstellt werden : Gescheitert"
+
+#: ../DBTree.cpp:186 ../DBTree.cpp:187
+msgid "\n"
+ "-E-> DBTree::OnPopulate() : Invalid Catalog Pointer : Failed"
+msgstr "\n"
+ "-E-> DBTree::OnPopulate() : Ungüliter Zeiger auf Katalog : Gescheitert"
+
+#: ../BrowserDB.cpp:148
+msgid "\n"
+ "-I-> BrowserDB::OnCloseDB() : Begin "
+msgstr ""
+
+#: ../BrowserDB.cpp:161
+msgid "\n"
+ "-I-> BrowserDB::OnCloseDB() : Ende "
+msgstr ""
+
+#: ../BrowserDB.cpp:139
+#, c-format
+msgid "\n"
+ "-I-> BrowserDB::OnGetDataSourceODBC() - DatabaseName(%s) ; DataSource(%s)"
+msgstr "\n"
+ "-I-> BrowserDB::OnGetDataSourceODBC() - DatabaseName(%s) ; Datenquelle(%s)"
+
+#: ../BrowserDB.cpp:303 ../BrowserDB.cpp:331
+#, c-format
+msgid "\n"
+ "-I-> BrowserDB::OnSelect(%s) Records(%d): End "
+msgstr "\n"
+ "-I-> BrowserDB::OnSelect(%s) Sätze(%d): Ende "
+
+#: ../BrowserDB.cpp:104
+#, c-format
+msgid "\n"
+ "-I-> BrowserDB::OnStartDB(%s) : Begin "
+msgstr "\n"
+ "-I-> BrowserDB::OnStartDB(%s) : Begin "
+
+#: ../BrowserDB.cpp:140
+#, c-format
+msgid "\n"
+ "-I-> BrowserDB::OnStartDB(%s) : End "
+msgstr "\n"
+ "-I-> BrowserDB::OnStartDB(%s) : Ende "
+
+#: ../BrowserDB.cpp:108
+msgid "\n"
+ "-I-> BrowserDB::OnStartDB() : DB is allready open."
+msgstr "\n"
+ "-I-> BrowserDB::OnStartDB() : DB ist bereits geöffnet."
+
+#: ../BrowserDB.cpp:52
+msgid "\n"
+ "ODBC errors:\n"
+msgstr "\n"
+ "ODBC fehlern:\n"
+
+#: ../Doc.cpp:268 ../Doc.cpp:281
+#, c-format
+msgid "\n"
+ "mjDoc::OnLeer(%s) : even this function will one day be available !"
+msgstr "\n"
+ "mjDoc::OnLeer(%s) : eines Tages steht auch diese Funktion zur Verfügung !"
+
+#: ../BrowserDB.cpp:47
+msgid " Line: "
+msgstr " Zeile: "
+
+#: ../DBGrid.cpp:142 ../DBGrid.cpp:149 ../DBGrid.cpp:165 ../DBGrid.cpp:172 ../DBGrid.cpp:188 ../DBGrid.cpp:195 ../DBGrid.cpp:211 ../DBGrid.cpp:218
+msgid " (shift down)"
+msgstr " (shift down)"
+
+#: ../Doc.cpp:208
+msgid " ? "
+msgstr " ?"
+
+#: ../DBGrid.cpp:229 ../DBGrid.cpp:244 ../DBGrid.cpp:259 ../DBGrid.cpp:274 ../DBGrid.cpp:289 ../DBGrid.cpp:325 ../DBGrid.cpp:327
+msgid " col "
+msgstr " Spalte"
+
+#: ../DBGrid.cpp:326
+msgid " to row "
+msgstr "Teile"
+
+#: ../DBGrid.cpp:102
+#, c-format
+msgid "%06d"
+msgstr "%06d"
+
+#: ../DBTree.cpp:174
+#, c-format
+msgid "%10s %d,%d"
+msgstr "%10s %d,%d"
+
+#: ../BrowserDB.cpp:48
+#, c-format
+msgid "%d"
+msgstr "%d"
+
+#: ../DBTree.cpp:215 ../DBTree.cpp:260 ../DBTree.cpp:300 ../DBTree.cpp:322 ../PgmCtrl.cpp:143 ../PgmCtrl.cpp:195
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../DBTree.cpp:118
+#, c-format
+msgid "%s - (%s) (%s)"
+msgstr "%s - (%s) (%s)"
+
+#: ../PgmCtrl.cpp:104 ../PgmCtrl.cpp:107
+#, c-format
+msgid "%s Functions"
+msgstr "%s Funktionen"
+
+#: ../DBBrowser.cpp:201 ../DBBrowser.cpp:211
+#, c-format
+msgid "%s has started !"
+msgstr "%s wurde gestartet !"
+
+#: ../DBTree.cpp:169
+#, c-format
+msgid "%s(%d)"
+msgstr "%s(%d)"
+
+#: ../DBTree.cpp:162
+#, c-format
+msgid "%s(%d) ; "
+msgstr "%s(%d) ;"
+
+#: ../DBBrowser.cpp:193 ../DBBrowser.cpp:203 ../DBBrowser.cpp:289 ../DBBrowser.cpp:305
+msgid "&About"
+msgstr "&Info"
+
+#: ../DBBrowser.cpp:197 ../DBBrowser.cpp:207 ../DBBrowser.cpp:295 ../DBBrowser.cpp:311
+msgid "&File"
+msgstr "&Datei"
+
+#: ../DBBrowser.cpp:191 ../DBBrowser.cpp:198 ../DBBrowser.cpp:201 ../DBBrowser.cpp:208
+msgid "&Help"
+msgstr "&Hilfe"
+
+#: ../DBTree.cpp:328 ../DBTree.cpp:332
+#, c-format
+msgid "(%d) Here is where a wxTable Class for >%s< will be made! "
+msgstr "(%d) Hier ist wo eine wxTable Klasse für >%s< erstellt wird!"
+
+#: ../DBTree.cpp:328 ../DBTree.cpp:332
+#, c-format
+msgid "Here is where all wxTable Classes in >%s< will be made!"
+msgstr "Hier ist wo alle wxTable Klassen für >%s< erstellt wird!"
+
+#: ../DBTree.cpp:328 ../DBTree.cpp:332
+#, c-format
+msgid "Here is where a wxDB Class for >%s< will be made!"
+msgstr "Hier ist wo eine wxDB Klasse für >%s< erstellt wird!"
+
+#: ../BrowserDB.cpp:189
+msgid "-E->"
+msgstr "-E->"
+
+#: ../BrowserDB.cpp:346
+msgid "-E-> BrowserDB::OnExecSql - ExecSql()"
+msgstr "-E-> BrowserDB::OnExecSql - ExecSql()"
+
+#: ../BrowserDB.cpp:285
+#, c-format
+msgid "-E-> BrowserDB::OnGetNext - DB_DATA_TYPE_?? (%d) in Col(%s)"
+msgstr "-E-> BrowserDB::OnGetNext - DB_DATA_TYPE_?? (%d) in Spalte(%s)"
+
+#: ../BrowserDB.cpp:310
+msgid "-E-> BrowserDB::OnSelect - GetData()"
+msgstr "-E-> BrowserDB::OnSelect - GetData()"
+
+#: ../Doc.cpp:173 ../Doc.cpp:186
+msgid "-E-> Fatal situation"
+msgstr "-E-> Tötliche Situation"
+
+#: ../BrowserDB.cpp:261 ../BrowserDB.cpp:289
+#, c-format
+msgid "-E-> unknown Format(%d) - sql(%d)"
+msgstr "-E-> unbekannte Format(%d) - sql(%d)"
+
+#: ../PgmCtrl.cpp:162 ../PgmCtrl.cpp:165
+msgid "-E-> wxConfigBase.p_ProgramCfg->DeleteAll() was not succesfull !"
+msgstr "-E-> wxConfigBase.p_ProgramCfg->DeleteAll() war nicht Erfolgreich !"
+
+#: ../PgmCtrl.cpp:146 ../PgmCtrl.cpp:149
+msgid "-I-> After a programm restart, the language will be changed to English."
+msgstr "-I-> Nach ein Programm neustart, wird die Sprache ins Englische geändert."
+
+#: ../PgmCtrl.cpp:153 ../PgmCtrl.cpp:156
+msgid "-I-> After a programm restart, the language will be changed to German."
+msgstr "-I-> Nach ein Programm neustart, wird die Sprache ins Deutsche geändert."
+
+#: ../BrowserDB.cpp:148
+msgid "-I-> BrowserDB::OnCloseDB() : Begin "
+msgstr "-I-> BrowserDB::OnCloseDB() : Begin"
+
+#: ../BrowserDB.cpp:139
+#, c-format
+msgid "-I-> BrowserDB::OnGetDataSourceODBC() - DatabaseName(%s) ; DataSource(%s)"
+msgstr "-I-> BrowserDB::OnGetDataSourceODBC() - DatabaseName(%s) ; DataSource(%s)"
+
+#: ../BrowserDB.cpp:140
+#, c-format
+msgid "-I-> BrowserDB::OnStartDB(%s) : End "
+msgstr "-I-> BrowserDB::OnStartDB(%s) : Ende"
+
+#: ../DBGrid.cpp:114
+#, c-format
+msgid "-I-> DBGrid::OnTableView(%s) - %6d Records have been read."
+msgstr "-I-> DBGrid::OnTableView(%s) - %6d Sätze wurde insgesamt gelesen."
+
+#: ../DBGrid.cpp:110
+#, c-format
+msgid "-I-> DBGrid::OnTableView(%s) - Record %6d has been read."
+msgstr "-I-> DBGrid::OnTableView(%s) - Satz %6d wurde gelesen."
+
+#: ../DBGrid.cpp:129
+msgid "-I-> DBGrid::OnTableView() - End"
+msgstr "-I-> DBGrid::OnTableView() - Ende"
+
+#: ../PgmCtrl.cpp:194
+#, c-format
+msgid "-I-> PgmCtrl::OnSelChanged - %s"
+msgstr "-I-> PgmCtrl::OnSelChanged - %s"
+
+#: ../Doc.cpp:126
+#, c-format
+msgid "-I-> mjDoc::OnInitView() - End - %d DSN's found"
+msgstr "-I-> mjDoc::OnInitView() - Ende - %d DSN's found"
+
+#: ../PgmCtrl.cpp:160 ../PgmCtrl.cpp:163
+msgid "-I-> wxConfigBase.p_ProgramCfg->DeleteAll() was succesfull."
+msgstr "-I-> wxConfigBase.p_ProgramCfg->DeleteAll() war erfolgreich."
+
+#: ../DBBrowser.cpp:116 ../DBBrowser.cpp:170
+msgid "/"
+msgstr "/"
+
+#: ../DBBrowser.cpp:124 ../DBBrowser.cpp:131 ../PgmCtrl.cpp:111 ../PgmCtrl.cpp:148 ../PgmCtrl.cpp:155
+msgid "/Local/langid"
+msgstr ""
+
+#: ../DBBrowser.cpp:156 ../DBBrowser.cpp:161 ../PgmCtrl.cpp:111
+msgid "/Local/language"
+msgstr ""
+
+#: ../DBBrowser.cpp:167
+msgid "/MainFrame/NONE"
+msgstr ""
+
+#: ../DBBrowser.cpp:289 ../Doc.cpp:81
+msgid "/MainFrame/Sash"
+msgstr ""
+
+#: ../DBBrowser.cpp:182 ../DBBrowser.cpp:288
+msgid "/MainFrame/h"
+msgstr ""
+
+#: ../DBBrowser.cpp:182 ../DBBrowser.cpp:287
+msgid "/MainFrame/w"
+msgstr ""
+
+#: ../DBBrowser.cpp:181 ../DBBrowser.cpp:285
+msgid "/MainFrame/x"
+msgstr ""
+
+#: ../DBBrowser.cpp:181 ../DBBrowser.cpp:286
+msgid "/MainFrame/y"
+msgstr ""
+
+#: ../DBBrowser.cpp:165
+msgid "/NONE"
+msgstr ""
+
+#: ../DBBrowser.cpp:166
+msgid "/Paths/NONE"
+msgstr ""
+
+#: ../DBBrowser.cpp:169 ../PgmCtrl.cpp:114
+msgid "/Paths/Work"
+msgstr ""
+
+#: ../DBBrowser.cpp:311 ../DBBrowser.cpp:327
+msgid "About DBBrowser"
+msgstr "Info über DBBrowser"
+
+#: ../Doc.cpp:164
+msgid "Adaptive S"
+msgstr ""
+
+#: ../DBGrid.cpp:228 ../DBGrid.cpp:243 ../DBGrid.cpp:258 ../DBGrid.cpp:273 ../DBGrid.cpp:288
+msgid "Cell at row "
+msgstr ""
+
+#: ../PgmCtrl.cpp:113 ../PgmCtrl.cpp:116
+msgid "Change the language to English"
+msgstr "Sprache ins Englische ändern"
+
+#: ../PgmCtrl.cpp:114 ../PgmCtrl.cpp:117
+msgid "Change the language to German"
+msgstr "Sprache ins deutsch ändern"
+
+#: ../DBGrid.cpp:59 ../DBTree.cpp:61 ../Doc.cpp:105 ../PgmCtrl.cpp:63
+msgid "Comic Sans MS"
+msgstr ""
+
+#: ../DBBrowser.cpp:113
+msgid "DBBrowser"
+msgstr ""
+
+#: ../DBBrowser.cpp:326
+msgid "DBBrowser\n"
+ "Mark Johnson\n"
+ "Berlin, Germany\n"
+ "mj10777@gmx.net\n"
+ " (c) 1999"
+msgstr "DBBrowser\n"
+ "Mark Johnson\n"
+ "Berlin, Germany\n"
+ "mj10777@gmx.net\n"
+ " (c) 1999"
+
+#: ../DBBrowser.cpp:185
+msgid "DBBrowser - mj10777"
+msgstr "DBBrowser - mj10777"
+
+#: ../DBBrowser.cpp:185
+msgid "Help: %s"
+msgstr "Hilfe: %s"
+
+#: ../DBBrowser.cpp:185
+msgid "noname"
+msgstr "ohnename"
+
+#: ../DBGrid.cpp:287
+msgid "DBGrid::OnCellChange : "
+msgstr "DBGrid::OnCellChange :"
+
+#: ../DBGrid.cpp:227
+msgid "DBGrid::OnCellLeftClick : "
+msgstr "DBGrid::OnCellLeftClick :"
+
+#: ../DBGrid.cpp:257
+msgid "DBGrid::OnCellLeftDClick : "
+msgstr "DBGrid::OnCellLeftDClick :"
+
+#: ../DBGrid.cpp:242
+msgid "DBGrid::OnCellRightClick : "
+msgstr "DBGrid::OnCellRightClick :"
+
+#: ../DBGrid.cpp:272
+msgid "DBGrid::OnCellRightDClick : "
+msgstr "DBGrid::OnCellRightDClick :"
+
+#: ../DBGrid.cpp:312
+msgid "DBGrid::OnColSize : "
+msgstr "DBGrid::OnColSize :"
+
+#: ../DBGrid.cpp:135
+msgid "DBGrid::OnLabelLeftClick : "
+msgstr "DBGrid::OnLabelLeftClick :"
+
+#: ../DBGrid.cpp:181
+msgid "DBGrid::OnLabelLeftDClick : "
+msgstr "DBGrid::OnLabelLeftDClick :"
+
+#: ../DBGrid.cpp:158
+msgid "DBGrid::OnLabelRightClick : "
+msgstr "DBGrid::OnLabelRightClick :"
+
+#: ../DBGrid.cpp:204
+msgid "DBGrid::OnLabelRightDClick : "
+msgstr "DBGrid::OnLabelRightDClick :"
+
+#: ../DBGrid.cpp:323
+msgid "DBGrid::OnRangeSelected : "
+msgstr "DBGrid::OnRangeSelected :"
+
+#: ../DBGrid.cpp:302
+msgid "DBGrid::OnRowSize : "
+msgstr "DBGrid::OnRowSize :"
+
+#: ../DBTree.cpp:157
+#, c-format
+msgid "DB_DATA_TYPE_???? (%d)"
+msgstr "DB_DATA_TYPE_???? (%d)"
+
+#: ../BrowserDB.cpp:438
+msgid "DB_DATA_TYPE_DATE"
+msgstr "DB_DATA_TYPE_DATE"
+
+#: ../BrowserDB.cpp:437
+msgid "DB_DATA_TYPE_FLOAT"
+msgstr "DB_DATA_TYPE_FLOAT"
+
+#: ../BrowserDB.cpp:436
+msgid "DB_DATA_TYPE_INTEGER"
+msgstr "DB_DATA_TYPE_INTEGER"
+
+#: ../BrowserDB.cpp:435
+msgid "DB_DATA_TYPE_VARCHAR"
+msgstr "DB_DATA_TYPE_VARCHAR"
+
+#: ../PgmCtrl.cpp:115 ../PgmCtrl.cpp:118
+msgid "Delete all wxConfigBase Entry's"
+msgstr "Lösche alle wxConfigBase Eintragungen"
+
+#: ../Doc.cpp:150
+#, c-format
+msgid "DsDesc(%s) - %s"
+msgstr ""
+
+#: ../DBBrowser.cpp:194 ../DBBrowser.cpp:204 ../DBBrowser.cpp:291 ../DBBrowser.cpp:307
+msgid "E&xit"
+msgstr "&Beenden"
+
+#: ../DBTree.cpp:139
+#, c-format
+msgid "FN(%s"
+msgstr ""
+
+#: ../DBBrowser.cpp:230
+msgid "Failed adding book helpfiles/DBBrowser.hhp"
+msgstr "helpfiles/DBBrowser.hhp konnte nicht hinzugefügt"
+
+#: ../DBBrowser.cpp:234
+msgid "Failed adding book helpfiles/another.hhp"
+msgstr ""
+
+#: ../DBBrowser.cpp:232
+msgid "Failed adding book helpfiles/testing.hhp"
+msgstr ""
+
+#: ../BrowserDB.cpp:45
+msgid "File: "
+msgstr ""
+
+#: ../PgmCtrl.cpp:186
+#, c-format
+msgid "Item '%s': %sselected, %sexpanded, %sbold,%u children (%u immediately under this item)."
+msgstr ""
+
+#: ../DBTree.cpp:145
+msgid "KEY"
+msgstr ""
+
+#: ../DBTree.cpp:152
+msgid "KEYF"
+msgstr ""
+
+#: ../PgmCtrl.cpp:116 ../PgmCtrl.cpp:145
+msgid "Language English"
+msgstr ""
+
+#: ../PgmCtrl.cpp:117 ../PgmCtrl.cpp:152
+msgid "Language German"
+msgstr ""
+
+#: ../Doc.cpp:113
+msgid "LogBook"
+msgstr "LogBuch"
+
+#: ../DBBrowser.cpp:334
+msgid "Main page"
+msgstr ""
+
+#: ../DBTree.cpp:199 ../DBTree.cpp:203
+msgid "Make wxDB.cpp/h "
+msgstr "wxDB.cpp/h Erstellen"
+
+#: ../DBTree.cpp:199 ../DBTree.cpp:203
+msgid "Make all wxTable.cpp/h "
+msgstr "Alle wxTable.cpp/h Erstellen"
+
+#: ../DBTree.cpp:199 ../DBTree.cpp:203
+msgid "Make wxTable.cpp/h "
+msgstr "wxTable.cpp/h Erstellen"
+
+#: ../DBBrowser.cpp:164
+msgid "NONE"
+msgstr ""
+
+#: ../Doc.cpp:171 ../Doc.cpp:184
+msgid "No Dataset names found in ODBC!\n"
+ " Program will exit!\n"
+ "\n"
+ " Ciao"
+msgstr "Keine Datenquellen in ODBC gefunden\n"
+ " Programm wird beendet!\n"
+ "\n"
+ " Ciao"
+
+#: ../PgmCtrl.cpp:119
+msgid "ODBC DSN"
+msgstr ""
+
+#: ../DBTree.cpp:217 ../PgmCtrl.cpp:170
+msgid "ODBC-"
+msgstr ""
+
+#: ../PgmCtrl.cpp:122
+#, c-format
+msgid "ODBC-%s"
+msgstr ""
+
+#: ../PgmCtrl.cpp:119
+msgid "ODBC-DSN"
+msgstr ""
+
+#: ../PgmCtrl.cpp:115
+msgid "Path Work"
+msgstr ""
+
+#: ../Doc.cpp:94 ../Doc.cpp:96
+msgid "PgmCtrl"
+msgstr ""
+
+#: ../DBBrowser.cpp:154
+msgid "PgmText"
+msgstr ""
+
+#: ../PgmCtrl.cpp:107 ../PgmCtrl.cpp:110
+msgid "Program settings"
+msgstr "Programm Einstellungen"
+
+#: ../DBGrid.cpp:313
+msgid "Resized col "
+msgstr ""
+
+#: ../DBGrid.cpp:303
+msgid "Resized row "
+msgstr ""
+
+#: ../DBTree.cpp:119 ../PgmCtrl.cpp:108
+msgid "Root"
+msgstr ""
+
+#: ../BrowserDB.cpp:304
+#, c-format
+msgid "SELECT * FROM %s"
+msgstr "SELECT * FROM %s"
+
+#: ../DBTree.cpp:156
+#, c-format
+msgid "SQL_C_???? (%d)"
+msgstr "SQL_C_???? (%d)"
+
+#: ../BrowserDB.cpp:407
+msgid "SQL_C_BINARY"
+msgstr "SQL_C_BINARY"
+
+#: ../BrowserDB.cpp:408
+msgid "SQL_C_BIT"
+msgstr "SQL_C_BIT"
+
+#: ../BrowserDB.cpp:409
+msgid "SQL_C_BOOKMARK"
+msgstr "SQL_C_BOOKMARK"
+
+#: ../BrowserDB.cpp:410
+msgid "SQL_C_CHAR"
+msgstr "SQL_C_CHAR"
+
+#: ../BrowserDB.cpp:411
+msgid "SQL_C_DATE"
+msgstr "SQL_C_DATE"
+
+#: ../BrowserDB.cpp:412
+msgid "SQL_C_DEFAULT"
+msgstr "SQL_C_DEFAULT"
+
+#: ../BrowserDB.cpp:413
+msgid "SQL_C_DOUBLE"
+msgstr "SQL_C_DOUBLE"
+
+#: ../BrowserDB.cpp:414
+msgid "SQL_C_FLOAT"
+msgstr "SQL_C_FLOAT"
+
+#: ../BrowserDB.cpp:415
+msgid "SQL_C_LONG"
+msgstr "SQL_C_LONG"
+
+#: ../BrowserDB.cpp:416
+msgid "SQL_C_SHORT"
+msgstr "SQL_C_SHORT"
+
+#: ../BrowserDB.cpp:417
+msgid "SQL_C_SLONG"
+msgstr "SQL_C_SLONG"
+
+#: ../BrowserDB.cpp:418
+msgid "SQL_C_SSHORT"
+msgstr "SQL_C_SSHORT"
+
+#: ../BrowserDB.cpp:419
+msgid "SQL_C_STINYINT"
+msgstr "SQL_C_STINYINT"
+
+#: ../BrowserDB.cpp:420
+msgid "SQL_C_TIME"
+msgstr "SQL_C_TIME"
+
+#: ../BrowserDB.cpp:421
+msgid "SQL_C_TIMESTAMP"
+msgstr "SQL_C_TIMESTAMP"
+
+#: ../BrowserDB.cpp:422
+msgid "SQL_C_TINYINT"
+msgstr "SQL_C_TINYINT"
+
+#: ../BrowserDB.cpp:423
+msgid "SQL_C_ULONG"
+msgstr "SQL_C_ULONG"
+
+#: ../BrowserDB.cpp:424
+msgid "SQL_C_USHORT"
+msgstr "SQL_C_USHORT"
+
+#: ../BrowserDB.cpp:425
+msgid "SQL_C_UTINYINT"
+msgstr "SQL_C_UTINYINT"
+
+#: ../BrowserDB.cpp:428
+msgid "SQL_LONGVARCHAR"
+msgstr "SQL_LONGVARCHAR"
+
+#: ../BrowserDB.cpp:427
+msgid "SQL_NUMERIC"
+msgstr "SQL_NUMERIC"
+
+#: ../BrowserDB.cpp:429
+msgid "SQL_REAL"
+msgstr "SQL_REAL"
+
+#: ../BrowserDB.cpp:426
+msgid "SQL_VARCHAR"
+msgstr "SQL_VARCHAR"
+
+#: ../DBGrid.cpp:324
+msgid "Selected cells from row "
+msgstr ""
+
+#: ../DBBrowser.cpp:153
+msgid "SetLocale error"
+msgstr ""
+
+#: ../PgmCtrl.cpp:110 ../PgmCtrl.cpp:113
+msgid "Setting Language"
+msgstr "Sprache setzen"
+
+#: ../PgmCtrl.cpp:110
+msgid "Settings"
+msgstr ""
+
+#: ../DBTree.cpp:197 ../DBTree.cpp:201
+msgid "Show Data"
+msgstr "Daten Zeigen"
+
+#: ../DBTree.cpp:122
+msgid "TABLE"
+msgstr ""
+
+#: ../DBTree.cpp:127 ../DBTree.cpp:264 ../DBTree.cpp:303 ../DBTree.cpp:325
+#, c-format
+msgid "TN(%s"
+msgstr ""
+
+#: ../DBTree.cpp:124 ../DBTree.cpp:133 ../DBTree.cpp:134
+#, c-format
+msgid "Tablename(%s) with (%d)Columns ; Remarks(%s)"
+msgstr "Tablename(%s) mit (%d)Spalten ; Bemerkungen(%s)"
+
+#: ../DBTree.cpp:151 ../DBTree.cpp:152
+#, c-format
+msgid "This Foreign Key comes from the following Table : %s"
+msgstr "diese Fremd-Schlüssel stammt aus der folgende Tabelle : %s"
+
+#: ../DBTree.cpp:144 ../DBTree.cpp:145
+#, c-format
+msgid "This Key is used in the following Tables : %s"
+msgstr "Diese Schlüssel wird in folgende Tabellen Verwendet : %s"
+
+#: ../PgmCtrl.cpp:111 ../PgmCtrl.cpp:114
+#, c-format
+msgid "Work Path : %s"
+msgstr "Arbeits Pfad : %s"
+
+#: ../DBBrowser.cpp:136
+msgid "a"
+msgstr ""
+
+#: ../PgmCtrl.cpp:73
+msgid "bitmap1"
+msgstr ""
+
+#: ../PgmCtrl.cpp:74
+msgid "bitmap2"
+msgstr ""
+
+#: ../DBGrid.cpp:142 ../DBGrid.cpp:165 ../DBGrid.cpp:188 ../DBGrid.cpp:211
+msgid "col label "
+msgstr ""
+
+#: ../DBGrid.cpp:146 ../DBGrid.cpp:169 ../DBGrid.cpp:192 ../DBGrid.cpp:215
+msgid "corner label"
+msgstr ""
+
+#: ../DBBrowser.cpp:148
+msgid "cz"
+msgstr "cz"
+
+#: ../DBBrowser.cpp:150
+msgid "czech"
+msgstr "czech"
+
+#: ../Doc.cpp:166
+msgid "dba"
+msgstr "dba"
+
+#: ../DBBrowser.cpp:136 ../PgmCtrl.cpp:154
+msgid "de"
+msgstr "de"
+
+#: ../DBBrowser.cpp:160
+msgid "english"
+msgstr "english"
+
+#: ../DBBrowser.cpp:140
+msgid "fr"
+msgstr "fr"
+
+#: ../DBBrowser.cpp:142
+msgid "french"
+msgstr "french"
+
+#: ../DBBrowser.cpp:138
+msgid "german"
+msgstr "german"
+
+#: ../DBBrowser.cpp:239
+msgid "helpfiles/DBBrowser.hhp"
+msgstr ""
+
+#: ../DBBrowser.cpp:241
+msgid "helpfiles/another.hhp"
+msgstr ""
+
+#: ../DBBrowser.cpp:240
+msgid "helpfiles/testing.hhp"
+msgstr ""
+
+#: ../PgmCtrl.cpp:109 ../PgmCtrl.cpp:112
+#, c-format
+msgid "locale (%s) ; Language (%s) ; Number(%2.2f)"
+msgstr "locale (%s) ; Sprache (%s) ; Nummer(%2.2f)"
+
+#: ../DBBrowser.cpp:112
+msgid "mj10777"
+msgstr "mj10777"
+
+#: ../DBTree.cpp:40 ../PgmCtrl.cpp:45
+msgid "not "
+msgstr "not"
+
+#: ../DBBrowser.cpp:144
+msgid "pl"
+msgstr "pl"
+
+#: ../DBBrowser.cpp:146
+msgid "polish"
+msgstr "polish"
+
+#: ../DBGrid.cpp:138 ../DBGrid.cpp:161 ../DBGrid.cpp:184 ../DBGrid.cpp:207
+msgid "row label "
+msgstr "row label"
+
+#: ../Doc.cpp:167
+msgid "sql"
+msgstr "sql"
+
+#: ../DBBrowser.cpp:126 ../DBBrowser.cpp:134 ../DBBrowser.cpp:162 ../PgmCtrl.cpp:147
+msgid "std"
+msgstr "std"
+
+#: ../PgmCtrl.cpp:115 ../PgmCtrl.cpp:118 ../PgmCtrl.cpp:157 ../PgmCtrl.cpp:160
+msgid "wxConfigBase Delete"
+msgstr "wxConfigBase Löschen"
--- /dev/null
+../BrowserDB.cpp
+../BrowserDB.h
+../DBBrowser.cpp
+../DBBrowser.h
+../DBGrid.cpp
+../DBGrid.h
+../DBTree.cpp
+../DBTree.h
+../Doc.cpp
+../Doc.h
+../PgmCtrl.cpp
+../PgmCtrl.h
--- /dev/null
+ xgettext -C -i -s -j -a -d PgmText -f xget.cfg
--- /dev/null
+//---------------------------------------------------------------------------
+// Name: DlgUser.h,cpp
+// Purpose: Dialog mit Variable Gestaltung durch DlgUser.wxr
+// Author: Mark Johnson, mj10777@gmx.net
+// Modified by: 19991105.mj10777
+// Created: 19991105
+// Copyright: (c) Mark Johnson
+// Licence: wxWindows license
+//---------------------------------------------------------------------------
+//-- all #ifdefs that the whole Project needs. ------------------------------
+//---------------------------------------------------------------------------
+#ifdef __GNUG__
+ #pragma implementation
+ #pragma interface
+#endif
+//---------------------------------------------------------------------------
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+//---------------------------------------------------------------------------
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+//---------------------------------------------------------------------------
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif
+//---------------------------------------------------------------------------
+//-- all #includes that every .cpp needs ----19990807.mj10777 ---
+//---------------------------------------------------------------------------
+#include "dlguser.h"
+//---------------------------------------------------------------------------
+DlgUser::DlgUser(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size, const long WXUNUSED(style) ) :
+ wxDialog(parent, ID_DIALOG_DSN, title, pos, size, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL)
+{
+ SetBackgroundColour("wheat");
+ wxButton *but1 = new wxButton(this, wxID_OK, "OK", wxPoint(55,110), wxSize(80, 30));
+ wxButton *but2 = new wxButton(this, wxID_CANCEL, "Cancel", wxPoint(210,110), wxSize(80, 30));
+ (void)new wxStaticText(this, -1,_("User ID"), wxPoint(20, 40), wxSize(50, 20),wxALIGN_LEFT);
+ (void)new wxStaticText(this, -1,_("Password"), wxPoint(20, 80), wxSize(50, 20),wxALIGN_LEFT);
+// but1->SetFocus();
+ but1->SetDefault();
+}
+void DlgUser::OnInit()
+{
+ wxString Temp; Temp.Printf(_(">>> %s <<< "),s_DSN.c_str());
+ (void)new wxStaticText(this, -1, Temp, wxPoint(10, 10), wxSize(300, 20),wxALIGN_CENTRE );
+ tc_User = new wxTextCtrl(this, ID_USER, s_User, wxPoint(75, 35), wxSize(200, 25), 0, wxDefaultValidator);
+ tc_Password = new wxTextCtrl(this, ID_PASSWORD, s_Password, wxPoint(75, 75), wxSize(200, 25),wxTE_PASSWORD, wxDefaultValidator);
+ tc_User->SetFocus();
+}
+//---------------------------------------------------------------------------
+BEGIN_EVENT_TABLE(DlgUser, wxDialog)
+ EVT_BUTTON(wxID_OK, DlgUser::OnOk)
+ EVT_BUTTON(wxID_CANCEL, DlgUser::OnCancel)
+END_EVENT_TABLE()
+//---------------------------------------------------------------------------
+void DlgUser::OnOk(wxCommandEvent& WXUNUSED(event) )
+{
+ canceled = FALSE;
+ s_User = tc_User->GetValue();
+ s_Password = tc_Password->GetValue();
+ EndModal(wxID_OK);
+}
+//---------------------------------------------------------------------------
+void DlgUser::OnCancel(wxCommandEvent& WXUNUSED(event) )
+{
+ canceled = TRUE;
+ EndModal(wxID_CANCEL);
+}
+//---------------------------------------------------------------------------
--- /dev/null
+//---------------------------------------------------------------------------
+// Name: DlgUser.h,cpp
+// Purpose: Dialog mit Variable Gestaltung durch DlgUser.wxr
+// Author: Mark Johnson, mj10777@gmx.net
+// Modified by: 19991105.mj10777
+// Created: 19991105
+// Copyright: (c) Mark Johnson
+// Licence: wxWindows license
+//---------------------------------------------------------------------------
+// DlgUser
+//---------------------------------------------------------------------------
+#define ID_DIALOG_DSN 100
+#define ID_DSN 101
+#define ID_USER 102
+#define ID_PASSWORD 103
+#define ID_TEXT 104
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+class DlgUser: public wxDialog
+{
+ public:
+ bool canceled;
+ wxString s_DSN, s_User, s_Password;
+ wxTextCtrl *tc_User, *tc_Password;
+ //---------------------------------------------------------------------------
+ DlgUser(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size,const long style = wxDEFAULT_DIALOG_STYLE);
+ void OnInit();
+ void OnOk(wxCommandEvent& event);
+ void OnCancel(wxCommandEvent& event);
+ //---------------------------------------------------------------------------
+ DECLARE_EVENT_TABLE()
+};
+//---------------------------------------------------------------------------
--- /dev/null
+//---------------------------------------------------------------------------
+// Name: Doc.cpp
+// Purpose: Holds information for DBBrowser
+// Author: Mark Johnson, mj10777@gmx.net
+// Modified by: 19990808.mj10777
+// BJO : Bart A.M. JOURQUIN
+// Created: 19990808
+// Copyright: (c) Mark Johnson
+// Licence: wxWindows license
+//---------------------------------------------------------------------------
+//-- all #ifdefs that the whole Project needs. ------------------------------
+//---------------------------------------------------------------------------
+#ifdef __GNUG__
+ #pragma implementation
+ #pragma interface
+#endif
+//---------------------------------------------------------------------------
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+//---------------------------------------------------------------------------
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+//---------------------------------------------------------------------------
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+//-- all #includes that every .cpp needs ----19990807.mj10777 ---
+//---------------------------------------------------------------------------
+#include "std.h" // sorgsam Pflegen !
+//---------------------------------------------------------------------------
+//-- Some Global Vars for all Files (extern in ?.h needed) -----------------
+// Global structure for holding ODBC connection information
+ struct DbStuff DbConnectInf;
+//---------------------------------------------------------------------------
+wxConfigBase *p_ProgramCfg; // All Config and Path information
+wxLogTextCtrl *p_LogBook; // All Log messages
+wxString LogBuf; // String for all Logs
+//---------------------------------------------------------------------------
+mjDoc::mjDoc()
+{
+ db_Br = NULL;
+ p_DSN = NULL;
+ i_DSN = 0;
+ p_Splitter = NULL;
+ p_MainFrame = NULL;
+ p_PgmCtrl = NULL; // Is not active
+ p_DBTree = NULL;
+ p_DBGrid = NULL;
+ p_LogWin = NULL;
+ p_TabArea = NULL;
+ p_PageArea = NULL;
+ i_TabNr = 0;
+ i_PageNr = 0;
+}
+//---------------------------------------------------------------------------
+mjDoc::~mjDoc()
+{
+ // ----------------------------------------------------------
+ // -E-> The Tree Controls take to long to close : Why ??
+ // ----------------------------------------------------------
+ // wxMessageBox("-I-> end Doc");
+ p_TabArea->Show(FALSE); // Deactivate the Window
+ p_PageArea->Show(FALSE); // Deactivate the Window
+ p_PgmCtrl = NULL;
+ delete p_PgmCtrl;
+ delete [] p_DSN;
+ delete p_DBTree;
+ p_TabArea = NULL; delete p_TabArea;
+ p_PageArea = NULL; delete p_PageArea;
+ p_Splitter = NULL;
+ delete p_Splitter;
+ delete [] db_Br;
+ // wxMessageBox("~mjDoc");
+}
+//---------------------------------------------------------------------------
+bool mjDoc::OnNewDocument()
+{
+ //-------------------------------------------------------------------
+ if (!OnInitView()) // LogBook is now activ
+ return FALSE;
+ p_PgmCtrl->OnPopulate();
+ //-------------------------------------------------------------------
+ return TRUE;
+}
+//---------------------------------------------------------------------------
+bool mjDoc::OnInitView()
+{
+ Sash = p_ProgramCfg->Read("/MainFrame/Sash", 200);
+ // wxMessageBox("OnInitView() - Begin ","-I->mjDoc::OnInitView");
+ //--------------------------------------------------------------------------
+ // create "workplace" window
+ //--------------------------------------------------------------------------
+ p_TabArea = new wxTabbedWindow(); // Init the Pointer
+ p_TabArea->Create(p_Splitter, -1);
+ //--------------------------------------------------------------------------
+ p_PgmCtrl = new PgmCtrl(p_TabArea, TREE_CTRL_PGM,wxDefaultPosition, wxDefaultSize,
+ wxTR_HAS_BUTTONS | wxSUNKEN_BORDER);
+ p_PgmCtrl->i_TabArt = 0; // 0 = Tab ; 1 = Page
+ p_PgmCtrl->i_ViewNr = p_TabArea->GetTabCount()-1;
+ //--------------------------------------------------------------------------
+ wxBitmap *p_FolderClose = new wxBitmap("PgmCtrl"); //, wxBITMAP_TYPE_BMP_RESOURCE); // BJO20000115
+ //--------------------------------------------------------------------------
+ p_TabArea->AddTab(p_PgmCtrl,"PgmCtrl",p_FolderClose);
+ //--------------------------------------------------------------------------
+ // now create "output" window
+ //--------------------------------------------------------------------------
+ p_PageArea = new wxPaggedWindow(); // Init the Pointer
+ p_PageArea->Create(p_Splitter, -1);
+ //--------------------------------------------------------------------------
+ p_LogWin = new wxTextCtrl(p_PageArea,-1,wxEmptyString,
+ wxDefaultPosition, wxDefaultSize,wxTE_MULTILINE );
+ wxFont* ft_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS");
+ p_LogWin->SetFont(* ft_Temp);
+ // Don't forget ! This is always : i_TabArt = 0 ; i_ViewNr = 1;
+ //------------------------------------------------------------------
+ p_LogBook = new wxLogTextCtrl(p_LogWin); // make p_LogWin the LogBook
+ p_LogBook->SetActiveTarget(p_LogBook);
+ p_LogBook->SetTimestamp( NULL );
+ //------------------------------------------------------------------
+ p_PageArea->AddTab(p_LogWin,_("LogBook"), "what is this?" );
+ i_TabNr = p_TabArea->GetTabCount()-1; // Add one when a new AddTab is done;
+ i_PageNr = p_PageArea->GetTabCount()-1; // Add one when a new AddTab is done;
+ //--------------------------------------------------------------------------
+ p_PgmCtrl->pDoc = this;
+ p_TabArea->SetActiveTab(i_PageNr);
+ //--------------------------------------------------------------------------
+ p_Splitter->Initialize(p_TabArea);
+ p_Splitter->SplitHorizontally(p_TabArea,p_PageArea,Sash);
+ //--------------------------------------------------------------------------
+
+ if (!OnInitODBC())
+ return FALSE;
+ //--------------------------------------------------------------------------
+ Temp0.Printf("-I-> mjDoc::OnInitView() - End - %d DSN's found",i_DSN);
+ p_MainFrame->SetStatusText(Temp0, 0);
+ wxLogMessage(Temp0);
+ return TRUE;
+}
+//----------------------------------------------------------------------------------------
+bool mjDoc::OnInitODBC()
+{
+ char Dsn[SQL_MAX_DSN_LENGTH + 1];
+ char DsDesc[255]; // BJO20002501 instead of 512
+ Temp0 = "";
+ i_DSN = 0; // Counter
+ int i = 0;
+ //---------------------------------------------------------------------------
+ // Initialize the ODBC Environment for Database Operations
+
+ if (SQLAllocEnv(&DbConnectInf.Henv) != SQL_SUCCESS)
+ {
+ return FALSE;
+ }
+ //---------------------------------------------------------------------------
+
+ const char sep = 3; // separator character used in string between DSN ans DsDesc
+ wxStringList s_SortDSNList, s_SortDsDescList;
+ // BJO-20000127
+ // In order to have same sort result on both Dsn and DsDesc, create a 'keyed' string.
+ // The key will be removed after sorting
+ wxString KeyString;
+ //---------------------------------------------------------------------------
+ while(GetDataSource(DbConnectInf.Henv, Dsn, sizeof(Dsn), DsDesc, sizeof(DsDesc)))
+ {
+ i_DSN++; // How many Dsn have we ?
+ KeyString.Printf("%s%c%s",Dsn, sep, DsDesc);
+ s_SortDSNList.Add(Dsn);
+ s_SortDsDescList.Add(KeyString);
+ }
+ s_SortDSNList.Sort(); //BJO
+ s_SortDsDescList.Sort(); //BJO
+
+ char ** s_SortDSN = s_SortDSNList.ListToArray(); //BJO
+ char ** s_SortDsDesc = s_SortDsDescList.ListToArray(); //BJO
+ //---------------------------------------------------------------------------
+ // Allocate n ODBC-DSN objects to hold the information
+ p_DSN = new DSN[i_DSN]; //BJO
+ for (i=0;i<i_DSN;i++)
+ {
+ KeyString = s_SortDsDesc[i];
+ KeyString = KeyString.AfterFirst(sep);
+ strcpy(s_SortDsDesc[i],KeyString.c_str());
+ (p_DSN+i)->Dsn = s_SortDSN[i];
+ (p_DSN+i)->Drv = s_SortDsDesc[i];
+ (p_DSN+i)->Usr = "";
+ (p_DSN+i)->Pas = "";
+ Temp0.Printf("%02d) Dsn(%s) DsDesc(%s)",i,(p_DSN+i)->Dsn,(p_DSN+i)->Drv);
+ wxLogMessage(Temp0);
+ }
+ i = 0;
+ //---------------------------------------------------------------------------
+ // Allocate n wxDatabase objects to hold the column information
+ db_Br = new BrowserDB[i_DSN];
+ for (i=0;i<i_DSN;i++)
+ {
+ (db_Br+i)->p_LogWindow = p_LogWin;
+ (db_Br+i)->ODBCSource = (p_DSN+i)->Dsn;
+ (db_Br+i)->UserName = (p_DSN+i)->Usr;
+ (db_Br+i)->Password = (p_DSN+i)->Pas;
+ (db_Br+i)->pDoc = this;
+ (db_Br+i)->i_Which = i;
+ }
+
+ if (SQLFreeEnv(&DbConnectInf.Henv) != SQL_SUCCESS) // BJO20000125
+ {
+ // Error freeing environment handle
+ }
+
+ delete [] s_SortDSN;
+ delete [] s_SortDsDesc;
+
+ //---------------------------------------------------------------------------
+ if (!i_DSN)
+ {
+ wxMessageBox(_("No Dataset names found in ODBC!\n" \
+ " Program will exit!\n\n" \
+ " Ciao"),"-E-> Fatal situation");
+ return FALSE;
+ }
+ //---------------------------------------------------------------------------
+ return TRUE;
+}
+//----------------------------------------------------------------------------------------
+bool mjDoc::OnChosenDSN(int Which)
+{
+ // wxLogMessage("OnChosenDSN(%d) - Begin",Which);
+ //---------------------------------------------------------------------------
+ if (p_DBTree != NULL)
+ {
+ p_TabArea->Show(FALSE); // Deactivate the Window
+ p_TabArea->RemoveTab(p_DBTree->i_ViewNr);
+ p_TabArea->Show(TRUE); // Activate the Window
+ OnChosenTbl(77,"");
+ }
+ //-------------------------
+ p_TabArea->Show(FALSE); // Deactivate the Window
+ p_DBTree = new DBTree(p_TabArea, TREE_CTRL_DB,wxDefaultPosition, wxDefaultSize,
+ wxTR_HAS_BUTTONS | wxSUNKEN_BORDER);
+ p_TabArea->AddTab(p_DBTree,(p_DSN+Which)->Dsn," ? ");
+ p_DBTree->i_ViewNr = p_TabArea->GetTabCount()-1;
+ p_TabArea->Show(TRUE); // Deactivate the Window
+ p_DBTree->i_Which = Which;
+ p_DBTree->s_DSN = (p_DSN+Which)->Dsn;
+ p_DBTree->i_TabArt = 0;
+ p_DBTree->pDoc = this;
+ p_DBTree->OnPopulate();
+ p_TabArea->SetActiveTab(p_DBTree->i_ViewNr);
+ //---------------------------------------------------------------------------
+ // wxLogMessage("OnChosenDSN(%d) - End",Which);
+ return TRUE;
+}
+//----------------------------------------------------------------------------------------
+bool mjDoc::OnChosenTbl(int Tab,wxString Table)
+{
+ // wxLogMessage("OnChosenTbl(%d,%s)",Tab,Table.c_str());
+ //-------------------------
+ if (p_DBGrid != NULL)
+ {
+ if (p_DBGrid->i_TabArt == 0)
+ {
+ p_TabArea->Show(FALSE); // Deactivate the Window
+ p_TabArea->RemoveTab(p_DBGrid->i_ViewNr);
+ p_TabArea->Show(TRUE); // Activate the Window
+ }
+ if (p_DBGrid->i_TabArt == 1)
+ {
+ p_PageArea->Show(FALSE); // Deactivate the Window
+ p_PageArea->RemoveTab(p_DBGrid->i_ViewNr);
+ p_PageArea->Show(TRUE); // Activate the Window
+ }
+ p_DBGrid = NULL;
+ delete p_DBGrid;
+ }
+ if (Tab == 77) // Delete only
+ return TRUE;
+ //-------------------------
+ if (Tab == 0) // Tabview
+ {
+ p_TabArea->Show(FALSE); // Deactivate the Window
+ p_DBGrid = new DBGrid(p_TabArea,GRID_CTRL_DB,wxDefaultPosition, wxDefaultSize,
+ wxSUNKEN_BORDER);
+ p_TabArea->AddTab(p_DBGrid, Table, "");
+ p_DBGrid->i_ViewNr = p_TabArea->GetTabCount()-1;
+ p_DBGrid->pDoc = this;
+ p_DBGrid->db_Br = db_Br;
+ p_DBGrid->OnTableView(Table);
+ p_TabArea->SetActiveTab(p_DBGrid->i_ViewNr);
+ p_TabArea->Show(TRUE); // Activate the Window
+ }
+ if (Tab == 1) // Pageview
+ {
+ p_PageArea->Show(FALSE); // Deactivate the Window
+ p_DBGrid = new DBGrid(p_PageArea,GRID_CTRL_DB,wxDefaultPosition, wxDefaultSize,
+ wxSUNKEN_BORDER);
+ p_PageArea->AddTab(p_DBGrid, Table, "");
+ p_DBGrid->i_ViewNr = p_PageArea->GetTabCount()-1;
+ p_DBGrid->pDoc = this;
+ p_DBGrid->db_Br = db_Br;
+ p_DBGrid->i_Which = p_DBTree->i_Which;
+ p_PageArea->Show(TRUE); // Activate the Window
+ p_DBGrid->OnTableView(Table);
+ p_PageArea->SetActiveTab(p_DBGrid->i_ViewNr);
+ }
+ p_DBGrid->i_TabArt = Tab;
+ //---*----------------------
+ return TRUE;;
+}
+//----------------------------------------------------------------------------------------
+void mjDoc::OnLeer(wxString Aufrufer)
+{
+ // Temp0.Printf(_("\nmjDoc::OnLeer(%s) : auch diese funktion steht eines Tages zur Verfügung !"),Aufrufer.c_str());
+ Temp0.Printf(_("\nmjDoc::OnLeer(%s) : even this function will one day be available !"),Aufrufer.c_str());
+ wxLogMessage(Temp0); Temp0.Empty();
+ return;
+}
+//----------------------------------------------------------------------------------------
+BEGIN_EVENT_TABLE(DocSplitterWindow, wxSplitterWindow)
+END_EVENT_TABLE()
+//----------------------------------------------------------------------------------------
+// Define a constructor for my p_Splitter
+DocSplitterWindow::DocSplitterWindow(wxWindow *parent, wxWindowID id) : wxSplitterWindow(parent, id)
+{
+}
+//----------------------------------------------------------------------------------------
--- /dev/null
+//---------------------------------------------------------------------------
+// Name: Doc.h
+// Purpose: First attempt to make a MDIProgram with a Tree and ListView
+// Author: Mark Johnson, mj10777@gmx.net
+// Modified by: 19990808.mj10777
+// Created: 19990808
+// Copyright: (c) Mark Johnson
+// Licence: wxWindows license
+//------------------------------------------------------------------------------
+//-- Some Global Vars ------------------------------------------------------
+//------------------------------------------------------------------------------
+class DSN
+{
+ public:
+ wxString Dsn;
+ wxString Drv;
+ wxString Pas;
+ wxString Usr;
+};
+ // Global structure for holding ODBC connection information
+extern struct DbStuff DbConnectInf;
+//------------------------------------------------------------------------------
+extern wxConfigBase *p_ProgramCfg; // All Config and Path information
+extern wxLogTextCtrl *p_LogBook; // All Log messages
+extern wxString LogBuf; // String for all Logs
+//---------------------------------------------------------------------------
+class PgmCtrl; // Declared in PgmCtrl.h file
+class DocSplitterWindow; // Declared at the end of the file
+//---------------------------------------------------------------------------
+class mjDoc
+{
+ public:
+ //---------------------------------------------------------------------------
+ mjDoc();
+ virtual ~mjDoc();
+ int Sash;
+ //---------------------------------------------------------------------------
+ //-- declare document Vars here ---------------------------------------------
+ //---------------------------------------------------------------------------
+ wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5;
+ BrowserDB *db_Br; // Pointer to wxDB
+ DSN *p_DSN;
+ int i_DSN; // Counter
+ //---------------------------------------------------------------------------
+ DocSplitterWindow *p_Splitter;
+ wxFrame *p_MainFrame; // SDI Version
+ PgmCtrl *p_PgmCtrl;
+ DBTree *p_DBTree;
+ DBGrid *p_DBGrid;
+ wxTextCtrl *p_LogWin;
+ wxTabbedWindow *p_TabArea;
+ wxPaggedWindow *p_PageArea;
+ int i_TabNr; // Amount of active Views in Tab
+ int i_PageNr; // Amount of active Views in Page
+ //---------------------------------------------------------------------------
+ //-- declare document Functions here ----------------------------------------
+ //---------------------------------------------------------------------------
+ bool OnNewDocument();
+ bool OnInitView();
+ bool OnInitODBC();
+ bool OnChosenDSN(int Which);
+ bool OnChosenTbl(int Tab,wxString Table);
+ //---------------------------------------------------------------------------
+ void OnLeer(wxString Aufrufer); // Dummy Funktion
+ //---------------------------------------------------------------------------
+};
+class DocSplitterWindow: public wxSplitterWindow
+{
+ public:
+ mjDoc *pDoc;
+ DocSplitterWindow(wxWindow *parent, wxWindowID id);
+ virtual bool OnSashPositionChange(int newSashPosition)
+ {
+ if ( !wxSplitterWindow::OnSashPositionChange(newSashPosition) )
+ return FALSE;
+ pDoc->Sash = newSashPosition;
+ return TRUE;
+ }
+ DECLARE_EVENT_TABLE()
+};
+//---------------------------------------------------------------------------
--- /dev/null
+ DBBrowse
+
--- /dev/null
+ set WXWIN=F:\wxWindows
+ nmake -f makefile.vc FINAL=1
--- /dev/null
+ set WXWIN=F:/wxWindows22B
+ set WXWIN=F:/wxWindows
+ make -f makefile.g95
+ rem st
+ set WXWIN=F:\wxWindows
--- /dev/null
+ set WXWIN=F:\wxWindows22B
+ set WXWIN=F:\wxWindows
+ nmake -f makefile.vc FINAL=1
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Hilfe : Compiler</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser : Wo wurde DBBrowser Compiliert und mit was ?</H3><BR>(deutsch)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-23.01-mj10777</B><HR>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/winnt.png"><IMG SRC="../help.png/server.png"> Windows NT 4.0 Server - SP 4</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/msvc.png"> VC++ 6.0 Compiler</B></FONT></TH></TR>
+ </TABLE></TBODY>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>wxWindows CVS 21.01.2000 18:00</B></TH><TH><B>Statische Bibliothek<BR>nmake -f makefile.vc FINAL=1</B></FONT></TH></TR>
+ </TBODY></TABLE></TR>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>Mark Johnson, Berlin Germany</B></TH><TH><B>Kleine .EXE und stable</B></FONT></TH></TR>
+ </TBODY></TABLE></TR><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/winnt.png"><IMG SRC="../help.png/server.png"> Windows NT 4.0 Server - SP 4</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/gnu.png"> mingw32 gcc-2.95 Compiler</B></FONT></TH></TR>
+ </TABLE></TBODY>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>wxWindows CVS 21.01.2000 18:00</B></TH><TH><B>Statische Bibliothek<BR>make -f makefile.g95</B></FONT></TH></TR>
+ </TBODY></TABLE></TR>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>Mark Johnson, Berlin Germany</B></TH><TH><B>Große .EXE und instable</B></FONT></TH></TR>
+ </TBODY></TABLE></TR><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/linux.png"><IMG SRC="../help.png/redh.png"> Linux - Redhat 6.1</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/gnu.png"> gcc Compiler ? </B></FONT></TH></TR>
+ </TABLE></TBODY>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>wxWindows <IMG SRC="../help.png/gtk.png"> CVS ??.01.2000 ??:00</B></TH><TH><B>??</B></FONT></TH></TR>
+ </TBODY></TABLE></TR>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>??</B></TH><TH><B>??</B></FONT></TH></TR>
+ </TBODY></TABLE></TR><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/linux.png"><IMG SRC="../help.png/suse.png" "WIDTH="45" HEIGHT="25""> Linux - SuSE 6.1</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/gnu.png"> gcc Compiler ? </B></FONT></TH></TR>
+ </TABLE></TBODY>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>wxWindows <IMG SRC="../help.png/gtk.png"> CVS ??.01.2000 ??:00</B></TH><TH><B>??</B></FONT></TH></TR>
+ </TBODY></TABLE></TR>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>??</B></TH><TH><B>??</B></FONT></TH></TR>
+ </TBODY></TABLE></TR><HR>
+<!----------------------------------------------------------------------------------------------------------->
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<OBJECT type="text/site properties">
+ <param name="ImageType" value="Folder">
+</OBJECT>
+<UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Pictograms die in diese Hilfe Dateien Verwendung finden">
+ <param name="ID" value=34>
+ <param name="Local" value="picgrams.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="DBBrowser">
+ <param name="ID" value=34>
+ <param name="Local" value="dbbrowse.htm">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Wo wurde DBBrowser schon mal Compiliert ?">
+ <param name="Local" value="compiler.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Icon Verwendung (.ICO / .XPM)">
+ <param name="Local" value="icons.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Start Parameter (Sprache/Lokale Unterstützung)">
+ <param name="Local" value="startprm.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Was Funktioniert nicht ?">
+ <param name="Local" value="problems.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Was für / Wann sind neue Funktionen geplanned ?">
+ <param name="Local" value="todo.htm">
+ </OBJECT>
+ </UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Remstar ODBC">
+ <param name="Local" value="remstar.htm">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="wxDB Class">
+ <param name="Local" value="wxdb.htm">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="new wxDB::GetColumns (Beschreibung)">
+ <param name="Local" value="getcol.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="new wxDB::GetColumns (Wie verwendet man es)">
+ <param name="Local" value="getcolsh.htm">
+ </OBJECT>
+ </UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="wxTable Class">
+ <param name="Local" value="wxtable.htm">
+ </OBJECT>
+ </UL>
+</UL>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="1">
+ <param name="Name" value="DBBrowser">
+ <param name="Local" value="dbbrowse.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="2">
+ <param name="Name" value="Remstar ODBC">
+ <param name="Local" value="remstar.htm">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="3">
+ <param name="Name" value="wxDB Class">
+ <param name="Local" value="wxdb.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="3">
+ <param name="Name" value="wxTable Class ">
+ <param name="Local" value="wxtable.htm">
+ </OBJECT>
+ </UL>
+</UL>
+</BODY></HTML>
--- /dev/null
+[OPTIONS]
+Compatibility=1.1
+Compiled file=testing.chm
+Contents file=dbbrowse.hhc
+Display compile progress=No
+Index file=dbbrowse.hhk
+Language=0x405 Hesky
+Title=DBBrowser Handbuch
+Default topic=sample.htm
+
+[FILES]
+dbbrowse.htm
+compiler.htm
+icons.htm
+problems.htm
+startprm.htm
+picgrams.htm
+remstar.htm
+wxdb.htm
+getcol.htm
+getcolsh.htm
+wxtable.htm
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Hilfe : Ãœbersicht</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser</H3><BR>(deutsch)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B></A></B></TH>
+ <TH bgcolor=#FFFFE0><B></B></FONT></TH>
+ </TR></TABLE></TBODY>
+ <TABLE border=1><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B></A></B></TH>
+ <TH bgcolor=#FFFFE0><B></B></FONT></TH>
+ </TR></TABLE></TBODY>
+ <TABLE border=1><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B></A></B></TH>
+ <TH bgcolor=#FFFFE0><B></B></FONT></TH>
+ </TR></TABLE></TBODY>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Remstar ODBC Classes</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/remstar.png"><BR>Remstar ODBC Classes :<BR>Die neue wxDB::GetColumns() Funktion<BR>Beschreibung</H3><BR>(deutsch)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-23.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>Es gibt 2 neue wxDB Funktionen : </B></TH></TR>
+ </TBODY></TABLE>
+<!-------------------------------->
+ <A NAME="GETCOLUMNS">
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B><A HREF="#GETCOLUMNS">wxColInf *wxDB::GetColumns(char *tableName, int *numCols, const char *userID)</A></B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0><B>Diese Funktion sichert alle (<I><FONT color=#FF0000>int numCols</FONT>) Informationen aus der Tabelle (<I><FONT color=#FF0000>char *tableName</FONT></I>).<BR>Es gibt das Ergebnis in eine <A HREF="#WXCOLINF">wxColInf</A> Stuktur (Klasse)</B></FONT></TH></TR>
+ </TBODY></TABLE>
+<!-------------------------------->
+ <A NAME="GETKEYFIELDS"><P>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B><A HREF="#GETKEYFIELDS">int wxDB::GetKeyFields(char *tableName, wxColInf* colInf,int noCols)</A></B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0><B>Versucht herauszufinden ob irgend welche (<I><FONT color=#FF0000>int noCols</FONT></I>) Spalten (<I><FONT color=#FF0000>wxColInf* colInf</FONT></I>)<BR> aus der Tabelle (<I><FONT color=#FF0000>char *tableName</FONT></I>) <IMG SRC="../help.png/key.png"> Primär- oder <IMG SRC="../help.png/keyf.png"> Fremdschlüssel sind.<HR>Diese Funktion wird aus GetColumns() aufgerufen.</B></FONT></TH></TR>
+ </TBODY></TABLE><HR>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>Es gibt 4 neue wxDB Klassen (Strukturen) : </B></TH></TR>
+ </TBODY></TABLE>
+<!-------------------------------->
+ <A NAME="WXDBINF"><P>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B><A HREF="#WXDBINF">wxDbInf</A></B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0>
+ <B>Diese Klasse speichert alle ODBC-Informationen für einen Datenbank :<HR>
+ Katalogeintrag (<I><FONT color=#FF0000>char catalog[128+1]</I></FONT>),<BR>
+ Schema (<I><FONT color=#FF0000>char schema[128+1]</I></FONT>)<BR>
+ der Anzahl gefundene Tabellen (<I><FONT color=#FF0000>int numTables</I></FONT>)<BR>
+ und eine Zeiger auf der (<I><A HREF="#WXTABLEINF">wxTableInf*</A><FONT color=#FF0000> pTableInf</FONT></I>) Struktur.
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+<!-------------------------------->
+ <A NAME="WXTABLEINF"><P>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B><A HREF="#WXTABLEINF">wxTableInf</A></B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0>
+ <B>Diese Klasse speichert alle ODBC-Informationen für einen Tabelle :<HR>
+ Tabellename (<I><FONT color=#FF0000>char tableName[DB_MAX_TABLE_NAME_LEN+1]</I></FONT>),<BR>
+ Tabelletyp (<I><FONT color=#FF0000>char tableType[254+1]</I></FONT>) - "TABLE", "SYSTEM TABLE" etc. ,<BR>
+ Tabellen Bemerkungen (<I><FONT color=#FF0000>char tableRemarks[254+1]</I></FONT>),<BR>
+ der Anzahl gefundene Spalten (<I><FONT color=#FF0000>int numCols</I></FONT>)<BR>
+ und eine Zeiger auf der (<I><A HREF="#WXCOLINF">wxColInf*</A><FONT color=#FF0000> pColInf</FONT></I>) Struktur.
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+<!-------------------------------->
+ <A NAME="WXCOLINF"><P>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B><A HREF="#WXCOLINF">wxColInf</A></B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0>
+ <B>Diese Klasse speichert alle ODBC-Informationen für einen Spalte :<HR>
+ Katalogeintrag (<I><FONT color=#FF0000>char catalog[128+1]</I></FONT>),<BR>
+ Schema (<I><FONT color=#FF0000>char schema[128+1]</I></FONT>)<BR>
+ Tabellename (<I><FONT color=#FF0000>char tableName[DB_MAX_TABLE_NAME_LEN+1]</I></FONT>),<BR>
+ Spaltenname (<I><FONT color=#FF0000>char colName[DB_MAX_COLUMN_NAME_LEN+1]</I></FONT>),<BR>
+ Datentyp (aus SQL) (<I><FONT color=#FF0000>SWORD sqlDataType</I></FONT>),<BR>
+ Datatyp-Name(aus SQL) (<I><FONT color=#FF0000>char typeName[128+1]</I></FONT>),<BR>
+ Spaltengröße(aus SQL) (<I><FONT color=#FF0000>SWORD columnSize</I></FONT>),<BR>
+ Pufferlänge(aus SQL) (<I><FONT color=#FF0000>SWORD bufferLength</I></FONT>),<BR>
+ Dezimalstellen(aus SQL) (<I><FONT color=#FF0000>short decimalDigets</I></FONT>),<BR>
+ numPrecRadix (aus SQL) (<I><FONT color=#FF0000>short numPrecRadix</I></FONT>),<BR>
+ Null-Fähig (aus SQL) (<I><FONT color=#FF0000>short nullable</I></FONT>),<BR>
+ Bemerkungen (<I><FONT color=#FF0000>char remarks[254+1]</I></FONT>),<BR>
+ Datatype (from wxDB) (<I><FONT color=#FF0000>int dbDataType</I></FONT>),<BR>
+ Primärschlüssel (<I><FONT color=#FF0000>int PkCol</I></FONT>) 0=Nein; 1= Erste Schlüssel, 2 = Zweite Schlüssel usw.,<BR>
+ Tabllennamen die diese Schlüssel als Fremdschlüssel verwenden (<I><FONT color=#FF0000>char PkTableName[DB_MAX_TABLE_NAME_LEN+1]</I></FONT>),<BR>
+ Foreign-Key (<I><FONT color=#FF0000>int FkCol</I></FONT>) 0=Nein; 1= Erste Schlüssel, 2 = Zweite Schlüssel usw.,<BR>
+ Tabellename wo diese Fremdschlüssel als Primärschlüssel (<I><FONT color=#FF0000>char FkTableName[DB_MAX_TABLE_NAME_LEN+1]</I></FONT>),<BR>
+ und eine Zeiger auf der (<I><A HREF="#WXCOLFOR">wxColFor*</A><FONT color=#FF0000> pColFor</FONT></I>) Struktur.
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+<!-------------------------------->
+ <A NAME="WXCOLFOR"><P>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B><A HREF="#WXCOLFOR">wxColFor</A></B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0>
+ <B>Diese Klasse speichert wie diese Spalte als String formatiert werden soll :<HR>
+ Ausgabestring (<I><FONT color=#FF0000>wxString s_Field</I></FONT>),<BR>
+ Formatierte Objekten (TIMESTAMP needs 7) (<I><FONT color=#FF0000>wxString s_Format[7]</I></FONT>),<BR>
+ Formatierte Objekten (<I><FONT color=#FF0000>wxString s_Menge[7]</I></FONT>),<BR>
+ Formatierte Objekten (TT MM YYYY HH MM SS m) (<I><FONT color=#FF0000>int i_Menge[7]</I></FONT>),<BR>
+ Nation (0=timestamp,1=EU,2=UK,3=International,4=US)<I><FONT color=#FF0000>int i_Nation</I></FONT>),<BR>
+ Datatyp (aus wxDB) (<I><FONT color=#FF0000>int I_dbDataType</I></FONT>),<BR>
+ Datatyp (aus SQL) (<I><FONT color=#FF0000>SWORD i_sqlDataType</I></FONT>),<HR>
+ int Format(int Nation, int dbDataType,SWORD sqlDataType,short columnSize,short decimalDigits);<BR>
+ Die Formatierte Objekten bekommen Standardwerte und Format() wird aufgerufen.<BR>
+ Die Programmierer können, wenn sie was besonderes haben wollen , diese Werte Ändern und Format() nochmal aufrufen.
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFBBBB><B>Diese Klasse ist eindeutig unterentwickelt !<BR>Es wurde erstmal zur Verwirklichung von DBGrid erstellt.<BR>Änderungen sind Wahrscheinlich. (Vorschläge sind Willkommen)</A></B></TH></TR>
+ </TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFF777><B><A HREF="getcolsh.htm">Damit ist wohl alles klar</A>, oder ?</B></FONT></TH></TR>
+ </TBODY></TABLE><HR>
+<!----------------------------------------------------------------------------------------------------------->
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Remstar ODBC Classes</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/remstar.png"><BR>Remstar ODBC Classes :<BR>The new wxDB::GetColumns() Function<BR>How do you use it ?</H3><BR>(English)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-23.01-mj10777</B><HR>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFBBBB><B><IMG SRC="../help.png/imbau.png"></B></TH></TR>
+ </TBODY></TABLE><HR>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>How does it work ?</B></TH></TR>
+ </TBODY></TABLE>
+<!-------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Basicly you use a 3 Dimentional Dynamic Array</B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0><B>wxDBInf --> wxTableInf --> wxColInf</B></FONT></TH></TR>
+ </TBODY></TABLE><P>
+<!-------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>Using DBBrowser as the Example, I will try to explain how it works</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Sorry, the rest will have to come later !!</B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0><B></B></FONT></TH></TR>
+ </TBODY></TABLE><HR>
+<!-------------------------------->
+<!-------------------------------->
+<!-------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B></B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0><B></B></FONT></TH></TR>
+ </TBODY></TABLE><HR>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFBBBB><B></B></TH></TR>
+ </TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFF777><B>Well now, <A HREF="getcol.htm">that makes everything clear</A> does't it?</B></FONT></TH></TR>
+ </TBODY></TABLE><HR>
+<!----------------------------------------------------------------------------------------------------------->
+<!----------------------------------------------------------------------------------------------------------->
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Hilfe : Icons</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser : Icon Verwendung (.ICO / .XPM)</H3><BR>(deutsch)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>Welche Icons werden für was verwendet ?</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFBBBB><B>*.xpm sind nicht auf <IMG SRC="../help.png/linux.png"> Linux getestet !</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+<!//--->
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/col.png"> col.ico / col.xpm</B></TH><TH bgcolor=#FFFFE0><B>dbtree.cpp :<BR> ODBC Spalte in eine Tabelle (weder Primär- noch Fremdschlüssel)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B><IMG SRC="../help.png/d_closed.png"> d_closed.ico / d_closed.xpm</B></TH><TH><B>pgmctrl + dbtree.cpp :<BR>letzte Baumzweig (nicht angeklickt)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/d_open.png"> d_open.ico / d_open.xpm</B></TH><TH bgcolor=#FFFFE0><B>pgmctrl + dbtree.cpp :<BR>letzte Baumzweig (angeklickt)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B><IMG SRC="../help.png/dsn.png"> dsn.ico / dsn.xpm</B></TH><TH><B>gute Frage</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/dsnclose.png"> dsnclose.ico / dsnclose.xpm</B></TH><TH bgcolor=#FFFFE0><B>pgmctrl.cpp :<BR>Hauptzweig der ODBC-Datenquellebaum (nicht angeklickt)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B><IMG SRC="../help.png/dsnopen.png"> dsnopen.ico / dsnopen.xpm</B></TH><TH><B>pgmctrl.cpp :<BR>Hauptzweig der ODBC-Datenquellebaum (angeklickt)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/f_closed.png"> f_closed.ico / f_closed.xpm</B></TH><TH bgcolor=#FFFFE0><B>pgmctrl.cpp :<BR>Hauptzweig der Programm-Einstellungsbaum (nicht angeklickt)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B><IMG SRC="../help.png/f_open.png"> f_open.ico / f_open.xpm</B></TH><TH><B>pgmctrl.cpp :<BR>Hauptzweig der Programm-Einstellungsbaum (angeklickt)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/key.png"> key.ico / key.xpm</B></TH><TH bgcolor=#FFFFE0><B>dbtree.cpp :<BR> ODBC Primärschlüssel-Spalte in eine Tablle</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B><IMG SRC="../help.png/keyf.png"> keyf.ico / keyf.xpm</B></TH><TH><B>dbtree.cpp :<BR> ODBC Fremdschlüssel-Spalte in eine Tablle</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/logo.png"> logo.ico / logo.xpm</B></TH><TH bgcolor=#FFFFE0><B>Programm Logo</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/pgmctrl.png"> pgmctrl.ico / pgmctrl.xpm / pgmctrl.bmp</B></TH><TH bgcolor=#FFFFE0><B>pgmctrl.cpp :<BR> Tab Bitmap</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B><IMG SRC="../help.png/tab.png"> tab.ico / tab.xpm</B></TH><TH><B>dbtree.cpp :<BR> ODBC Tabelle</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFF777>
+ <TH><B><A HREF="icons.htm">Alle andere Pictograms werden nicht in DBBrowser verwendet.<BR>(sind .png Files)</A></B></FONT></TH>
+ </TABLE></TBODY></TR>
+ <P><TABLE border=1><B><TBODY><TR bgcolor=#FFF777>
+ <TH><B>Hoffentlich wird der Zeit bald kommen, wo man auschlie_lich XPM Dateien verwenden darf.</B></FONT></TH>
+ </TABLE></TBODY></TR>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Pictograms</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser : Verwendete Pictograms (*.png)</H3><BR>(deutsch)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-23.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>Die wahre Bedeutung der verwendete Pictograms in diese Hilfe Dateien</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFF777><B>Alle Pictograms sind .PNG Dateien (Portable Network Graphics)<BR>Ich verwende Paint Shop Pro 5.01 um diese Dateien zuerstellen.</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/imbau.png"> imbau.png</B></TH><TH bgcolor=#FFFFE0><B>Seite ist nicht fertig</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/gnu.png"> gnu.png</B></TH><TH bgcolor=#FFFFE0><B>GNU Logo : gcc 2.95 Compiler</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/gtk.png"> gtk.png</B></TH><TH bgcolor=#FFFFE0><B>GTK Logo : Grafische Bibliothek in Linux</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/kde.png"> kde.png</B></TH><TH bgcolor=#FFFFE0><B>KDE Logo : Grafische System in Linux</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/linux.png"> linux.png</B></TH><TH bgcolor=#FFFFE0><B>Linux Logo : Linux (Allgemein)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/motif.png"> motif.png</B></TH><TH bgcolor=#FFFFE0><B>Motif Logo : Grafische Bibliothek in Linux (ist diese Logo korrect ?)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/msvc.png"> msvc.png</B></TH><TH bgcolor=#FFFFE0><B>Microsoft VC++ Logo : VC++ 6.0 Compiler</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/odbc.png"> odbc.png</B></TH><TH bgcolor=#FFFFE0><B>ODBC Logo </B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/remstar.png"> remstar.png</B></TH><TH bgcolor=#FFFFE0><B>Remstar Logo : Remstar ODBC-Klassen (http://www.remstar.com)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/redh.png"> redh.png</B></TH><TH bgcolor=#FFFFE0><B>Redhat Logo : Linux Vertreiber (http://www.redhat.com / .de)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/suse.png"> suse.png</B></TH><TH bgcolor=#FFFFE0><B>SuSE Logo : Linux Vertreiber (http://www.suse.com / .de)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/server.png"> server.png</B></TH><TH bgcolor=#FFFFE0><B>Server Logo </B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/wins.png"> wins.png</B></TH><TH bgcolor=#FFFFE0><B>Windows Logo : Windows (Allgemein) </B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/winnt.png"> winnt.png</B></TH><TH bgcolor=#FFFFE0><B>Windows-NT Logo : Windows-NT speziefisch</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <P><TABLE border=1><B><TBODY><TR bgcolor=#FFF777>
+ <TH><B><A HREF="icons.htm">Alle andere Pictograms sind .PNG-Kopien von der DBBrowser-Icons.</A></B></FONT></TH>
+ </TABLE></TBODY></TR>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Hilfe : Probleme</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser : Was Funktionert nicht ?</H3><BR>(deutsch)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>Allgemein</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem : <IMG SRC="../help.png/gnu.png"> </B></TH><TH bgcolor=#FFFFE0><B>Nur gcc 2.95 Compiler :<BR>Assurt failed in file ../../src/msw/fontutil.cpp at line 238: unknown font slant</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Lösung :</B></TH><TH><B>nicht bekannt</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem : <IMG SRC="../help.png/gnu.png"> </B></TH><TH bgcolor=#FFFFE0><B>Nur gcc 2.95 Compiler :<BR>Assurt failed in file ../../src/msw/fontutil.cpp at line 249: unknown font weight</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Lösung :</B></TH><TH><B>nicht bekannt</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>wxHtmlHelpController</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem :</B></TH><TH bgcolor=#FFFFE0><B>Wenn der Hilfe geschlossen wird wenn der Voll-HTML-Seite Modus an ist - sieht man nichts wenn Hilfe wieder gestartet wird. (Seite ist Grau)</B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFF777><B>Taste Links-Oben drücken um in die geteilte Seitenmodus wiederzugelangen.</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#CCFFCC><B>Lösung :</B></TH><TH><B>unbekannt</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!-------------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem :</B></TH><TH bgcolor=#FFFFE0><B>Die Rechteseite (HTLM-Seite) bldttert nicht bei der Verwendung der Maus-Mittelrad.<BR>Auf der Linkeseite funktioniert es.</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Lösung :</B></TH><TH><B>unbekannt</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!-------------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem :</B></TH><TH bgcolor=#FFFFE0><B>Warum Funktioniert die Aktulisierungs-Taste (F5) nicht?</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Lösung :</B></TH><TH><B>unbekannt</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!-------------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem :</B></TH><TH bgcolor=#FFFFE0><B>Wie kann die Hilfe Themenbezogen aufgerufen werden ? Eine bestimmte Seite wird ervffnet</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Lösung :</B></TH><TH><B>unbekannt</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!-------------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem :</B></TH><TH bgcolor=#FFFFE0><B>Bilder, die mit HelpView zusehen sind, erscheint nicht wenn OnHelp() aufgerufen wird.</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFBBBB><B>Logbuch : Warning: No handler found for image type.<BR>Warnung: Kein Handler für Bildtyp gefunden<HR>Warum kamm diese Text nicht auf Deutsch ?</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#CCFFCC><B>Lösung :</B></TH><TH><B><BR>Folgende Zeilen in DBBrowser.cpp(MyApp::OnInit()) hinzugefügt: <HR>#if wxUSE_LIBPNG<BR>wxImage::AddHandler( new wxPNGHandler );<BR>#endif</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>wxGrid (Neue Version)</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem :</B></TH><TH bgcolor=#FFFFE0><B>Wenn wxGrid in wxPaggedWindows verwendet wird, funktioniert die Scrollbars nicht.</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Lösung :</B></TH><TH><B>unbekannt</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>ndchste Problem</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem :</B></TH><TH bgcolor=#FFFFE0><B>irgend etwas taucht schon auf, wie immer.</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Lösung :</B></TH><TH><B>unbekannt</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Remstar ODBC Classes</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/remstar.png"> Remstar ODBC Klassen : </H3><BR>(deutsch)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>TODO</B></TH></TR>
+ </TBODY></TABLE>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Hilfe : Beispiel HTLM Seite</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser : Beispielseite</H3><BR>(deutsch)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>Blau (CCFFFF)</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Gelb (FFFFAA)</B></TH><TH bgcolor=#FFFFE0><B>Hellgelb (FFFFE0)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Hellgrün <TH BGCOLOR=#CCFFCC><HR>Hintergrundsfarbe für diese teil der Tabelle</B></TH><TH><B><BODY BGCOLOR=#C6DFC6><HR>Seitehintergrundsfarbe</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <P><TABLE border=1><B><TBODY><TR bgcolor=#FFF777>
+ <TH><B>Gold <TR BGCOLOR=#FFF777><HR>Hintergrundsfarbe für die Gesamte Tabelle</B></FONT></TH>
+ </TABLE></TBODY></TR>
+ <P><TABLE border=1><B><TBODY><TR bgcolor=#FFBBBB>
+ <TH><B>Rosa (FFBBBB)</B></FONT></TH>
+ </TABLE></TBODY></TR>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Hilfe : Start parameter</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser : Start Parameter (Internationalizierung)</H3><BR>(deutsch)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>DBBrowser xx</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>xx = Sprache</B></TH><TH bgcolor=#FFFFE0><B>cz, de, fr, pl und std (englisch)</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <P><TABLE border=1><B><TBODY><TR bgcolor=#FFBBBB>
+ <TH><B>Zur Zeit gibt es für Tschechisch (cz), Französch (fr) und Polnisch (pl) keine Hilfe Texte<HR>Alles wurde aber dafür vorbereitet und der lokale wird gesetzt.</B></FONT></TH>
+ </TABLE></TBODY></TR>
+ <P><TABLE border=1><B><TBODY><TR bgcolor=#FFF777>
+ <TH><B>DBBrowser wird diese Einstellung solange verwenden bis sie geändert werden (also auch nach Programm Neustart). (wxConfigBase)<HR>In "Programm Einstellungen" kann man (zur Zeit nur) zwischen englisch und deutsch hin und her umschalten.</B></FONT></TH>
+ </TABLE></TBODY></TR>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Problems</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser : Was für / Wann sind neue Funktionen geplanned ?</H3><BR>(deutsch)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>Allgemein</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Funktion :</B></TH><TH bgcolor=#FFFFE0><B>Wann wird es Möglich mehr als eine DSN / DBGrid Fenster aufzumachen?</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Zeitplan :</B></TH><TH><B>bald, da es für mich wichtig ist.</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>DBGrid</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Funktion :</B></TH><TH bgcolor=#FFFFE0><B>Unterstützung für Neue, Löschen und Ändern eines Datensatz.</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Zeitplan :</B></TH><TH><B>Irgenwann Während meine jetztige Projekt.</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>DBGrid</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Funktion :</B></TH><TH bgcolor=#FFFFE0><B>Wann werden Datensätze erst dann eingelesen wenn benötigt wird (Scrolling) ?</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Zeitplan :</B></TH><TH><B>Diese Funktion in für wxGrid geplannt. Ich hoffe bald.</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>DBTree</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Funktion :</B></TH><TH bgcolor=#FFFFE0><B>Wann kann DBBrowser eine wxDB und wxTable .cpp/.h Dateien erstellen ?</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Zeitplan :</B></TH><TH><B>Die Funktionen OnDBClass(); OnClass() und OnClassAll(); sind dafür vorbereitet..<HR>Für mich ist es nicht so wichtig. Irgend jemand wird es schon machen (vielleicht für wxStudio ?)</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>24.01.2000 : George Tasker</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B>Have USER NAME and PASSWORD text widgets, or a menu item to enter them.</B></TH>
+ <TH bgcolor=#FFFFE0><B>25.01.2000 - done but must be tested
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B>Rather than have the "40 DSN's found" message at the end of the log book, Put that in the status bar of the frame.</B></TH>
+ <TH bgcolor=#FFFFE0><B>24.01.2000 - Done
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B>Make the grid cells READ-ONLY, since this is a browser (unless you want to make it an editor too -- good idea!)</B></TH>
+ <TH bgcolor=#FFFFE0><B>25.01.2000 - done : right mouse click on any grid lable and on popupmenu clicken
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B>Sort the DSNs in alphabetical order before putting them in the tree</B></TH>
+ <TH bgcolor=#FFFFE0><B>26.01.2000 - done
+ </B></FONT></TH>
+ </TR></TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B>Have program settings available from a TOOLS / OPTIONS menu</B></TH>
+ <TH bgcolor=#FFFFE0><B>Willdo
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>neue Funktion</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Funktion :</B></TH><TH bgcolor=#FFFFE0><B>irgend etwas taucht schon auf, wie immer.</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Zeitplan :</B></TH><TH><B>unknown</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Remstar ODBC Classes</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.ng/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/remstar.png"><BR>Remstar ODBC Classes : wxDB</H3><BR>(deutsch)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-23.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>Es gibt 2 neue wxDB Funktionen : </B></TH></TR>
+ </TBODY></TABLE>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><TBODY><TR><B>
+ <TH><B><A HREF="getcol.htm"><FONT><B>Beschreibung der neue GetColumns()</B></FONT></A></TH>
+ <TH><B><FONT>und <A HREF="getcol.htm#GETKEXFIELDS">GetKeyFields()</A><BR><A HREF="getcol.htm#WXDBINF">wxDbInf</A><BR><A HREF="getcol.htm#WXTABLEINF">wxTableInf</A><BR><A HREF="getcol.htm#WXCOLINF">wxColInf</A><BR><A HREF="getcol.htm#WXCOLFOR">wxColFor</A></B></FONT></TH>
+ </TR><TR>
+ <TH><B><A HREF="getcolsh.htm"><FONT><B>Wie verwendet man die neue GetColumns()</B></FONT></A></TH>
+ <TH><B><FONT>und GetKeyFields()<BR>wxDbInf<BR>wxTableInf<BR>wxColInf<BR>wxColFor</B></FONT></TH>
+ </TR>
+ </TBODY></TABLE>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFF777><B>Die andere GetColumns() hat sich nicht geÄndert.<BR>Die dort verwendete CcolInf is allerdings, in wirklichkeit, ein wxColInf ! (<I><FONT color=#FF0000>typedef wxColInf CcolInf;</I></FONT>)</B></FONT></TH></TR>
+ </TBODY></TABLE><HR>
+<!----------------------------------------------------------------------------------------------------------->
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Hilfe : Remstar ODBC Klassen</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/remstar.png"> Remstar ODBC Klassen : wxTable</H3><BR>(deutsch)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFBBBB><B>Diese Klasse wird in DBBrowser nicht verwendet!</B></TH></TR>
+ </TBODY></TABLE>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Hilfe : Compiler</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser : Where has DBBrowser been Compilied ?</H3><BR>(English)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B><HR>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/winnt.png"><IMG SRC="../help.png/server.png"> Windows NT 4.0 Server - SP 4</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/msvc.png"> VC++ 6.0 Compiler</B></FONT></TH></TR>
+ </TABLE></TBODY>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>wxWindows CVS 21.01.2000 18:00</B></TH><TH><B>Static Library<BR>nmake -f makefile.vc FINAL=1</B></FONT></TH></TR>
+ </TBODY></TABLE></TR>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>Mark Johnson, Berlin Germany</B></TH><TH><B>Small .EXE and stable</B></FONT></TH></TR>
+ </TBODY></TABLE></TR><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/winnt.png"><IMG SRC="../help.png/server.png"> Windows NT 4.0 Server - SP 4</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/gnu.png"> mingw32 gcc-2.95 Compiler</B></FONT></TH></TR>
+ </TABLE></TBODY>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>wxWindows CVS 21.01.2000 18:00</B></TH><TH><B>Static Library<BR>make -f makefile.g95</B></FONT></TH></TR>
+ </TBODY></TABLE></TR>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>Mark Johnson, Berlin Germany</B></TH><TH><B>Big .EXE and unstable</B></FONT></TH></TR>
+ </TBODY></TABLE></TR><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/linux.png"><IMG SRC="../help.png/redh.png"> Linux - Redhat 6.1</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/gnu.png"> gcc Compiler ? </B></FONT></TH></TR>
+ </TABLE></TBODY>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>wxWindows <IMG SRC="../help.png/gtk.png"> CVS ??.01.2000 ??:00</B></TH><TH><B>??</B></FONT></TH></TR>
+ </TBODY></TABLE></TR>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>??</B></TH><TH><B>??</B></FONT></TH></TR>
+ </TBODY></TABLE></TR><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/linux.png"><IMG SRC="../help.png/suse.png" "WIDTH="45" HEIGHT="25""> Linux - SuSE 6.1</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/gnu.png"> gcc Compiler ? </B></FONT></TH></TR>
+ </TABLE></TBODY>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>wxWindows <IMG SRC="../help.png/gtk.png"> CVS ??.01.2000 ??:00</B></TH><TH><B>??</B></FONT></TH></TR>
+ </TBODY></TABLE></TR>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFFFE0>
+ <TH><B>??</B></TH><TH><B>??</B></FONT></TH></TR>
+ </TBODY></TABLE></TR><HR>
+<!----------------------------------------------------------------------------------------------------------->
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<OBJECT type="text/site properties">
+ <param name="ImageType" value="Folder">
+</OBJECT>
+<UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Pictograms used in these Help Files">
+ <param name="ID" value=34>
+ <param name="Local" value="picgrams.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="DBBrowser">
+ <param name="ID" value=34>
+ <param name="Local" value="dbbrowse.htm">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Where has DBBrowser been Compilied ?">
+ <param name="Local" value="compiler.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Used Icons (.ICO / .XPM)">
+ <param name="Local" value="icons.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Start Parameter (Language/Locale Support)">
+ <param name="Local" value="startprm.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="What does not Work ?">
+ <param name="Local" value="problems.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="What / When are new Functions planned ?">
+ <param name="Local" value="todo.htm">
+ </OBJECT>
+ </UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Remstar ODBC">
+ <param name="Local" value="remstar.htm">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="wxDB Class">
+ <param name="Local" value="wxdb.htm">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="new wxDB::GetColumns (Discription)">
+ <param name="Local" value="getcol.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="new wxDB::GetColumns (How to Use)">
+ <param name="Local" value="getcolsh.htm">
+ </OBJECT>
+ </UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="wxTable Class">
+ <param name="Local" value="wxtable.htm">
+ </OBJECT>
+ </UL>
+</UL>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="1">
+ <param name="Name" value="DBBrowser">
+ <param name="Local" value="dbbrowse.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="2">
+ <param name="Name" value="Remstar ODBC">
+ <param name="Local" value="remstar.htm">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="3">
+ <param name="Name" value="wxDB Class">
+ <param name="Local" value="wxdb.htm">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="3">
+ <param name="Name" value="wxTable Class ">
+ <param name="Local" value="wxtable.htm">
+ </OBJECT>
+ </UL>
+</UL>
+</BODY></HTML>
--- /dev/null
+[OPTIONS]
+Compatibility=1.1
+Compiled file=testing.chm
+Contents file=dbbrowse.hhc
+Display compile progress=No
+Index file=dbbrowse.hhk
+Language=0x405 Hesky
+Title=DBBrowser Handbook
+Default topic=sample.htm
+
+[FILES]
+dbbrowse.htm
+compiler.htm
+icons.htm
+problems.htm
+startprm.htm
+picgrams.htm
+remstar.htm
+wxdb.htm
+getcol.htm
+getcolsh.htm
+wxtable.htm
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : </TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser</H3><BR>(English)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B></A></B></TH>
+ <TH bgcolor=#FFFFE0><B></B></FONT></TH>
+ </TR></TABLE></TBODY>
+ <TABLE border=1><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B></A></B></TH>
+ <TH bgcolor=#FFFFE0><B></B></FONT></TH>
+ </TR></TABLE></TBODY>
+ <TABLE border=1><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B></A></B></TH>
+ <TH bgcolor=#FFFFE0><B></B></FONT></TH>
+ </TR></TABLE></TBODY>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Remstar ODBC Classes</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/remstar.png"><BR>Remstar ODBC Classes :<BR>The new wxDB::GetColumns() Function<BR>Description</H3><BR>(English)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-23.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>There are 2 new wxDB Functions : </B></TH></TR>
+ </TBODY></TABLE>
+<!-------------------------------->
+ <A NAME="GETCOLUMNS">
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B><A HREF="#GETCOLUMNS">wxColInf *wxDB::GetColumns(char *tableName, int *numCols, const char *userID)</A></B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0><B>This Function stores all (<I><FONT color=#FF0000>int numCols</FONT>) information from the Table (<I><FONT color=#FF0000>char *tableName</FONT></I>).<BR>It returns the result in a <A HREF="#WXCOLINF">wxColInf</A> Stucture (Class)</B></FONT></TH></TR>
+ </TBODY></TABLE>
+<!-------------------------------->
+ <A NAME="GETKEYFIELDS"><P>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B><A HREF="#GETKEYFIELDS">int wxDB::GetKeyFields(char *tableName, wxColInf* colInf,int noCols)</A></B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0><B>Tries to find out if any (<I><FONT color=#FF0000>int noCols</FONT></I>) of the columns (<I><FONT color=#FF0000>wxColInf* colInf</FONT></I>)<BR> in the Table (<I><FONT color=#FF0000>char *tableName</FONT></I>) are <IMG SRC="../help.png/key.png"> Primary or <IMG SRC="../help.png/keyf.png"> Foreign Keys.<HR>This Function is only called from GetColumns().</B></FONT></TH></TR>
+ </TBODY></TABLE><HR>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>There are 4 new wxDB Classes (Structures) : </B></TH></TR>
+ </TBODY></TABLE>
+<!-------------------------------->
+ <A NAME="WXDBINF"><P>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B><A HREF="#WXDBINF">wxDbInf</A></B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0>
+ <B>This Class stores all ODBC-Information for a Database :<HR>
+ Catalog Entry (<I><FONT color=#FF0000>char catalog[128+1]</I></FONT>),<BR>
+ Schema (<I><FONT color=#FF0000>char schema[128+1]</I></FONT>)<BR>
+ the number of Tables found(<I><FONT color=#FF0000>int numTables</I></FONT>)<BR>
+ and a Pointer (<I><A HREF="#WXTABLEINF">wxTableInf*</A><FONT color=#FF0000> pTableInf</FONT></I>) Structure is stored.
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+<!-------------------------------->
+ <A NAME="WXTABLEINF"><P>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B><A HREF="#WXTABLEINF">wxTableInf</A></B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0>
+ <B>This Class stores all ODBC-Information about a Table :<HR>
+ Table-Name (<I><FONT color=#FF0000>char tableName[DB_MAX_TABLE_NAME_LEN+1]</I></FONT>),<BR>
+ Table-Type (<I><FONT color=#FF0000>char tableType[254+1]</I></FONT>) - "TABLE", "SYSTEM TABLE" etc. ,<BR>
+ Table-Remarks (<I><FONT color=#FF0000>char tableRemarks[254+1]</I></FONT>),<BR>
+ the number of Columns found(<I><FONT color=#FF0000>int numCols</I></FONT>)<BR>
+ and a Pointer (<I><A HREF="#WXCOLINF">wxColInf*</A><FONT color=#FF0000> pColInf</FONT></I>) Structure is stored.
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+<!-------------------------------->
+ <A NAME="WXCOLINF"><P>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B><A HREF="#WXCOLINF">wxColInf</A></B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0>
+ <B>This Class stores all ODBC-Information about a Column :<HR>
+ Catalog Entry (<I><FONT color=#FF0000>char catalog[128+1]</I></FONT>),<BR>
+ Schema (<I><FONT color=#FF0000>char schema[128+1]</I></FONT>)<BR>
+ Table-Name (<I><FONT color=#FF0000>char tableName[DB_MAX_TABLE_NAME_LEN+1]</I></FONT>),<BR>
+ Column-Name (<I><FONT color=#FF0000>char colName[DB_MAX_COLUMN_NAME_LEN+1]</I></FONT>),<BR>
+ Datatype (from SQL) (<I><FONT color=#FF0000>SWORD sqlDataType</I></FONT>),<BR>
+ Data-Name(from SQL) (<I><FONT color=#FF0000>char typeName[128+1]</I></FONT>),<BR>
+ Column size(from SQL) (<I><FONT color=#FF0000>SWORD columnSize</I></FONT>),<BR>
+ Buffer length(from SQL) (<I><FONT color=#FF0000>SWORD bufferLength</I></FONT>),<BR>
+ Decimal digits(from SQL) (<I><FONT color=#FF0000>short decimalDigits</I></FONT>),<BR>
+ numPrecRadix (from SQL) (<I><FONT color=#FF0000>short numPrecRadix</I></FONT>),<BR>
+ Nullable (from SQL) (<I><FONT color=#FF0000>short nullable</I></FONT>),<BR>
+ Remarks (<I><FONT color=#FF0000>char remarks[254+1]</I></FONT>),<BR>
+ Datatype (from wxDB) (<I><FONT color=#FF0000>int dbDataType</I></FONT>),<BR>
+ Primary-Key (<I><FONT color=#FF0000>int PkCol</I></FONT>) 0=No; 1= First Key, 2 = Second Key etc.,<BR>
+ Tables that use this Key as a Foreign Key(<I><FONT color=#FF0000>char PkTableName[DB_MAX_TABLE_NAME_LEN+1]</I></FONT>),<BR>
+ Foreign-Key (<I><FONT color=#FF0000>int FkCol</I></FONT>) 0=No; 1= First Key, 2 = Second Key etc.,<BR>
+ Table-Name where this Foreign-Key is Primary Key(<I><FONT color=#FF0000>char FkTableName[DB_MAX_TABLE_NAME_LEN+1]</I></FONT>),<BR>
+ and a Pointer (<I><A HREF="#WXCOLFOR">wxColFor*</A><FONT color=#FF0000> pColFor</FONT></I>) Structure is stored.
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+<!-------------------------------->
+ <A NAME="WXCOLFOR"><P>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B><A HREF="#WXCOLFOR">wxColFor</A></B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0>
+ <B>This Class stores how this Column should be formated in a String : <HR>
+ Output String (<I><FONT color=#FF0000>wxString s_Field</I></FONT>),<BR>
+ Formatted Objects (TIMESTAMP needs 7) (<I><FONT color=#FF0000>wxString s_Format[7]</I></FONT>),<BR>
+ Formatted Objects (<I><FONT color=#FF0000>wxString s_Menge[7]</I></FONT>),<BR>
+ Formatted Objects (TT MM YYYY HH MM SS m) (<I><FONT color=#FF0000>int i_Menge[7]</I></FONT>),<BR>
+ National (0=timestamp,1=EU,2=UK,3=International,4=US)<I><FONT color=#FF0000>int i_Nation</I></FONT>),<BR>
+ Datatype (from wxDB) (<I><FONT color=#FF0000>int I_dbDataType</I></FONT>),<BR>
+ Datatype (from SQL) (<I><FONT color=#FF0000>SWORD i_sqlDataType</I></FONT>),<HR>
+ int Format(int Nation, int dbDataType,SWORD sqlDataType,short columnSize,short decimalDigits);<BR>
+ The Formatted Objects receive Standard Values and Format() is called.<BR>
+ The Programmers can, if they want something special , change these Values and call Format() again
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFBBBB><B>This class is most definitely very much underdeveloped !<BR>It was made so that the DBGrid could be realised.<BR>Changes here are probable. (Suggestions welcomed)</A></B></TH></TR>
+ </TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFF777><B>Well now, <A HREF="getcolsh.htm">that makes everything clear</A> does't it?</B></FONT></TH></TR>
+ </TBODY></TABLE><HR>
+<!----------------------------------------------------------------------------------------------------------->
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Remstar ODBC Classes</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/remstar.png"><BR>Remstar ODBC Classes :<BR>The new wxDB::GetColumns() Function<BR>How do you use it ?</H3><BR>(English)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-23.01-mj10777</B><HR>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFBBBB><B><IMG SRC="../help.png/imbau.png"></B></TH></TR>
+ </TBODY></TABLE><HR>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>How does it work ?</B></TH></TR>
+ </TBODY></TABLE>
+<!-------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Basicly you use a 3 Dimentional Dynamic Array</B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0><B>wxDBInf --> wxTableInf --> wxColInf</B></FONT></TH></TR>
+ </TBODY></TABLE><P>
+<!-------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>Using DBBrowser as the Example, I will try to explain how it works</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Sorry, the rest will have to come later !!</B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0><B></B></FONT></TH></TR>
+ </TBODY></TABLE><HR>
+<!-------------------------------->
+<!-------------------------------->
+<!-------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B></B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFE0><B></B></FONT></TH></TR>
+ </TBODY></TABLE><HR>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFBBBB><B></B></TH></TR>
+ </TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFF777><B>Well now, <A HREF="getcol.htm">that makes everything clear</A> does't it?</B></FONT></TH></TR>
+ </TBODY></TABLE><HR>
+<!----------------------------------------------------------------------------------------------------------->
+<!----------------------------------------------------------------------------------------------------------->
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Icons useage</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser : Used Icons (.ICO / .XPM)</H3><BR>(English)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>Which Icons are used for what ?</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFBBBB><B>*.xpm have not been tested with <IMG SRC="../help.png/linux.png"> Linux as of yet !</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/col.png"> col.ico / col.xpm</B></TH><TH bgcolor=#FFFFE0><B>dbtree.cpp :<BR> ODBC Column in a Table (not a Primary or Foreign Key)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B><IMG SRC="../help.png/d_closed.png"> d_closed.ico / d_closed.xpm</B></TH><TH><B>pgmctrl + dbtree.cpp :<BR> last branch of Tree (not selected)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/d_open.png"> d_open.ico / d_open.xpm</B></TH><TH bgcolor=#FFFFE0><B>pgmctrl + dbtree.cpp :<BR> last Branch of tree (selected)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B><IMG SRC="../help.png/dsn.png"> dsn.ico / dsn.xpm</B></TH><TH><B>good question</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/dsnclose.png"> dsnclose.ico / dsnclose.xpm</B></TH><TH bgcolor=#FFFFE0><B>pgmctrl.cpp :<BR> Main Branch of ODBC-DSN Tree (not selected)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B><IMG SRC="../help.png/dsnopen.png"> dsnopen.ico / dsnopen.xpm</B></TH><TH><B>pgmctrl.cpp :<BR> Main Branch of ODBC-DSN Tree (selected)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/f_closed.png"> f_closed.ico / f_closed.xpm</B></TH><TH bgcolor=#FFFFE0><B>pgmctrl.cpp :<BR> Main Branch of Program-Setting-DSN Tree (not selected)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B><IMG SRC="../help.png/f_open.png"> f_open.ico / f_open.xpm</B></TH><TH><B>pgmctrl.cpp :<BR> Main Branch of Program-Setting-DSN Tree (not selected)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/key.png"> key.ico / key.xpm</B></TH><TH bgcolor=#FFFFE0><B>dbtree.cpp :<BR> ODBC Primary-Key Column in a Table</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B><IMG SRC="../help.png/keyf.png"> keyf.ico / keyf.xpm</B></TH><TH><B>dbtree.cpp :<BR> ODBC Foreign-Key Column in a Table</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/logo.png"> logo.ico / logo.xpm</B></TH><TH bgcolor=#FFFFE0><B>Programm Logo</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/pgmctrl.png"> pgmctrl.ico / pgmctrl.xpm / pgmctrl.bmp</B></TH><TH bgcolor=#FFFFE0><B>pgmctrl.cpp :<BR> Tab Bitmap</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B><IMG SRC="../help.png/tab.png"> tab.ico / tab.xpm</B></TH><TH><B>dbtree.cpp :<BR> ODBC Table</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR bgcolor=#FFF777>
+ <TH><B><A HREF="pictograms.htm">All other Pictograms are not used in DBBrowser<BR>(they are .png files)</A></B></FONT></TH>
+ </TABLE></TBODY></TR>
+ <P><TABLE border=1><B><TBODY><TR bgcolor=#FFF777>
+ <TH><B>It will be nice, when the time comes where we can use XPM files for everything.</B></FONT></TH>
+ </TABLE></TBODY></TR>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Pictograms</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser : Used Pictograms (*.png)</H3><BR>(English)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-23.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>The real meaning of the used Pictograms in these help files</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFF777><B>All Pictograms are .PNG Files (Portable Network Graphics)<BR>I use Paint Shop Pro 5.01 to make them.</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+<!//--->
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/imbau.png"> imbau.png</B></TH><TH bgcolor=#FFFFE0><B>Under construction : Page is not compleated</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/gnu.png"> gnu.png</B></TH><TH bgcolor=#FFFFE0><B>GNU Logo : gcc 2.95 Compiler</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/gtk.png"> gtk.png</B></TH><TH bgcolor=#FFFFE0><B>GTK Logo : a Graphic Library in Linux </B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/kde.png"> kde.png</B></TH><TH bgcolor=#FFFFE0><B>KDE Logo : Graphic System in Linux</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/linux.png"> linux.png</B></TH><TH bgcolor=#FFFFE0><B>Linux Logo : Linux (in General)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/motif.png"> motif.png</B></TH><TH bgcolor=#FFFFE0><B>Motif Logo : Graphic Library in Linux (is the Logo correct ?)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/msvc.png"> msvc.png</B></TH><TH bgcolor=#FFFFE0><B>Microsoft VC++ Logo : VC++ 6.0 Compiler</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/odbc.png"> odbc.png</B></TH><TH bgcolor=#FFFFE0><B>ODBC Logo </B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/remstar.png"> remstar.png</B></TH><TH bgcolor=#FFFFE0><B>Remstar Logo : Remstar ODBC-Classes (http://www.remstar.com)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/redh.png"> redh.png</B></TH><TH bgcolor=#FFFFE0><B>Redhat Logo : Linux Distribution (http://www.redhat.com / .de)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/suse.png"> suse.png</B></TH><TH bgcolor=#FFFFE0><B>SuSE Logo : Linux Distribution (http://www.suse.com / .de)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/server.png"> server.png</B></TH><TH bgcolor=#FFFFE0><B>Server Logo </B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/wins.png"> wins.png</B></TH><TH bgcolor=#FFFFE0><B>Windows Logo : Windows (in General) </B></FONT></TH></TR>
+ <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/winnt.png"> winnt.png</B></TH><TH bgcolor=#FFFFE0><B>Windows-NT Logo : Windows-NT specific </B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <P><TABLE border=1><B><TBODY><TR bgcolor=#FFF777>
+ <TH><B><A HREF="icons.htm">All other Pictograms are PNG-Copies of DBBrowser-Icons.</A></B></FONT></TH>
+ </TABLE></TBODY></TR>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Problems</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser : What does not Work ?</H3><BR>(English)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B>
+<!-------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>General</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem : <IMG SRC="../help.png/gnu.png"> </B></TH><TH bgcolor=#FFFFE0><B>Only gcc 2.95 Compiler :<BR>Assurt failed in file ../../src/msw/fontutil.cpp at line 238: unknown font slant</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Solution :</B></TH><TH><B>unknown</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem : <IMG SRC="../help.png/gnu.png"> </B></TH><TH bgcolor=#FFFFE0><B>Only gcc 2.95 Compiler :<BR>Assurt failed in file ../../src/msw/fontutil.cpp at line 249: unknown font weight</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Solution :</B></TH><TH><B>unknown</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>wxHtmlHelpController</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem :</B></TH><TH bgcolor=#FFFFE0><B>When Help is closed with a Full HTML-View, you see nothing when Help is again started. (Page is Grey)</B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFF777><B>Press the Upper left Button, so that the screen is again split.</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#CCFFCC><B>Solution :</B></TH><TH><B>unknown</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!-------------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem :</B></TH><TH bgcolor=#FFFFE0><B>The Middle (Center) Mouse-Wheel does not scroll the HTLM-Page (Rightside)<BR>It does work on the Leftside</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Solution :</B></TH><TH><B>unknown</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!-------------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem :</B></TH><TH bgcolor=#FFFFE0><B>How can Help be called and a certin Page be opened (Context Help)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Solution :</B></TH><TH><B>unknown</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!-------------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem :</B></TH><TH bgcolor=#FFFFE0><B>Why doesn't the Refresh-Button (F5) work?</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Lvsung :</B></TH><TH><B>unbekannt</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!-------------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem :</B></TH><TH bgcolor=#FFFFE0><B>Images that show with HelpView, do not show up when called from OnHelp()</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFBBBB><B>Logbook : Warning: No handler found for image type.<HR>Why wasn't this message translated to German ?</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#CCFFCC><B>Solution :</B></TH><TH><B><BR>Added following Code in DBBrowser.cpp(MyApp::OnInit()): <HR>#if wxUSE_LIBPNG<BR>wxImage::AddHandler( new wxPNGHandler );<BR>#endif</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>wxGrid (new Versions)</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem :</B></TH><TH bgcolor=#FFFFE0><B>When wxGrid is used in wxPaggedWindows, the Scrollbars do not work.</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Solution :</B></TH><TH><B>unknown</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>next Problem</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Problem :</B></TH><TH bgcolor=#FFFFE0><B>something will turn up, it allways do.</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Solution :</B></TH><TH><B>unknown</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Remstar ODBC Classes</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/remstar.png"> Remstar ODBC Classes : wxDB</H3><BR>(English)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>TODO</B></TH></TR>
+ </TBODY></TABLE>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Sample HTLM Page</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser : Beispiel HTML Seite</H3><BR>(English)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>Blau (CCFFFF)</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Gelb (FFFFAA)</B></TH><TH bgcolor=#FFFFE0><B>Hellgelb (FFFFE0)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>hellgr|n <TH BGCOLOR=#CCFFCC><HR>Hintergrundsfarbe f|r diese Tabellenteil</B></TH><TH><B><BODY BGCOLOR=#C6DFC6><HR>Background Colour of Page</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <P><TABLE border=1><B><TBODY><TR bgcolor=#FFF777>
+ <TH><B>Gold <TR BGCOLOR=#FFF777><HR>Hintergrundsfarbe f|r den Gesamte Tabelle</B></FONT></TH>
+ </TABLE></TBODY></TR>
+ <P><TABLE border=1><B><TBODY><TR bgcolor=#FFBBBB>
+ <TH><B>Rosa (FFBBBB)</B></FONT></TH>
+ </TABLE></TBODY></TR>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Start parameter</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser : Start Parameter (Internationalisation)</H3><BR>(English)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>DBBrowser xx</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>xx = language</B></TH><TH bgcolor=#FFFFE0><B>cz, de, fr, pl and std (english)</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <P><TABLE border=1><B><TBODY><TR bgcolor=#FFBBBB>
+ <TH><B>There are no Help files for Czech (cz), French (fr) and Polish (pl)<HR>Everything has been prepared and the locale will be set.</B></FONT></TH>
+ </TABLE></TBODY></TR>
+ <P><TABLE border=1><B><TBODY><TR bgcolor=#FFF777>
+ <TH><B>DBBrowse will use these setting until it is again changed (even after a Program restart). (wxConfigBase)<HR>In "Program Settings" you can also switch (at the moment) between English and German.</B></FONT></TH>
+ </TABLE></TBODY></TR>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Problems</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/logo.png"> DBBrowser : What / When are new Functions planned ?</H3><BR>(English)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>General</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Function :</B></TH><TH bgcolor=#FFFFE0><B>When will it be possible to open more than one DSN / DBGrid ?</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Timetable :</B></TH><TH><B>soon, it is high priorty.</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>DBGrid</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Function :</B></TH><TH bgcolor=#FFFFE0><B>Support for Adding, Deleting and Changes to Record.</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Timetable :</B></TH><TH><B>Sometime during my present Project.</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>DBGrid</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Function :</B></TH><TH bgcolor=#FFFFE0><B>When will Records only be read in when needed (Scrolling)</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Timetable :</B></TH><TH><B>This is a Function that is planned in wxGrid. I too hope it will come soon.</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>DBTree</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Function :</B></TH><TH bgcolor=#FFFFE0><B>When can DBBrowser create a wxDB and wxTable .cpp/.h File ?</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Timetable :</B></TH><TH><B>OnDBClass(); OnClass() and OnClassAll(); have been prepaired.<HR>This has for me low priorty. But I am sure somebody will do (for wxStudio ?)</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>24.01.2000 : George Tasker</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B>Have USER NAME and PASSWORD text widgets, or a menu item to enter them.</B></TH>
+ <TH bgcolor=#FFFFE0><B>25.01.2000 - should work, please test
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B>Rather than have the "40 DSN's found" message at the end of the log book, Put that in the status bar of the frame.</B></TH>
+ <TH bgcolor=#FFFFE0><B>24.01.2000 - Done
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B>Make the grid cells READ-ONLY, since this is a browser (unless you want to make it an editor too -- good idea!)</B></TH>
+ <TH bgcolor=#FFFFE0><B>25.01.2000 - done : right mouse click on any grid lable and on popupmenu clicken
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B>Sort the DSNs in alphabetical order before putting them in the tree</B></TH>
+ <TH bgcolor=#FFFFE0><B>26.01.2000 - done
+ </B></FONT></TH>
+ </TR></TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TH bgcolor=#FFFFAA><B>Have program settings available from a TOOLS | OPTIONS menu</B></TH>
+ <TH bgcolor=#FFFFE0><B>Willdo
+ </B></FONT></TH></TR>
+ </TBODY></TABLE>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR><TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>new Functions</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFFFAA><B>Function :</B></TH><TH bgcolor=#FFFFE0><B>something will turn up, it allways do.</B></FONT></TH></TR>
+ <TR><TH bgcolor=#CCFFCC><B>Timetable :</B></TH><TH><B>unknown</B></FONT></TH></TR>
+ </TR></TBODY></TABLE><P>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Remstar ODBC Classes</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/remstar.png"><BR>Remstar ODBC Classes : wxDB</H3><BR>(English)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-23.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#CCFFFF><B>There are 2 new wxDB Functions : </B></TH></TR>
+ </TBODY></TABLE>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><TBODY><TR><B>
+ <TH><B><A HREF="getcol.htm"><FONT><B>Discription of the new GetColumns()</B></FONT></A></TH>
+ <TH><B><FONT> and <A HREF="getcol.htm#GETKEXFIELDS">GetKeyFields()</A><BR><A HREF="getcol.htm#WXDBINF">wxDbInf</A><BR><A HREF="getcol.htm#WXTABLEINF">wxTableInf</A><BR><A HREF="getcol.htm#WXCOLINF">wxColInf</A><BR><A HREF="getcol.htm#WXCOLFOR">wxColFor</A></B></FONT></TH>
+ </TR><TR>
+ <TH><B><A HREF="getcolsh.htm"><FONT><B>How to use the new GetColumns()</B></FONT></A></TH>
+ <TH><B><FONT> and GetKeyFields()<BR>wxDbInf<BR>wxTableInf<BR>wxColInf<BR>wxColFor</B></FONT></TH>
+ </TR>
+ </TBODY></TABLE>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR>
+ <TR><TH bgcolor=#FFF777><B>The other GetColumns() has not changed.<BR>The CcolInf used is, however, really a wxColInf ! (<I><FONT color=#FF0000>typedef wxColInf CcolInf;</I></FONT>)</B></FONT></TH></TR>
+ </TBODY></TABLE><HR>
+<!----------------------------------------------------------------------------------------------------------->
+</BODY></HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML><HEAD><TITLE>DBBrowser Help : Remstar ODBC Classes</TITLE></HEAD>
+<BODY BGCOLOR=#C6DFC6><CENTER><IMG SRC="../help.png/logo.png"></CENTER><BR><CENTER><B>DBBrowser<BR>Mark Johnson, Berlin Germany<BR>mj10777@gmx.net</B><HR></CENTER>
+<!----------------------------------------------------------------------------------------------------------->
+ <TABLE border=1><B><TBODY><TR bgcolor=#CCFFFF>
+ <TH><B><H3><IMG SRC="../help.png/remstar.png"><BR>Remstar ODBC Classes : wxTable</H3><BR>(English)</B></FONT></TH>
+ </TABLE></TBODY></TR><P>
+ <B>Stand: 2000-01-22.01-mj10777</B><HR>
+<!-------------------------------------------------------------->
+ <TABLE border=1><B><TBODY>
+ <TR><TH bgcolor=#FFBBBB><B>This class is not used in DBBrowser !</B></TH></TR>
+ </TBODY></TABLE>
+<!----------------------------------------------------------------------------------------------------------->
+ <HR>
+</BODY></HTML>
--- /dev/null
+#
+# File: makefile.g95
+# Author: Julian Smart
+# Created: 1999
+# Updated:
+# Copyright: (c) Julian Smart, 1999
+#
+# Makefile for wxWindows sample (Cygwin/Mingw32).
+
+# Set WXDIR for your system
+WXDIR = $(WXWIN)
+
+TARGET=dbbrowser
+OBJECTS = dbbrowse.o doc.o pgmctrl.o tabpgwin.o \
+ browsedb.o dbtree.o dbgrid.o dlguser.o
+
+
+include $(WXDIR)/src/makeprog.g95
+
--- /dev/null
+
+# Top dir of wxWindows
+top_builddir = /gtm/bart/wxGTK
+
+PROGRAM=dbbrowser_gtk
+
+
+OBJECTS= dbbrowser.o doc.o pgmctrl.o wxtbpgwin.o\
+ browserdb.o dbtree.o dbgrid.o dlguser.o
+
+
+
+
+include $(top_builddir)/src/makeprog.env
+
--- /dev/null
+#
+# File: makefile.vc
+# Author: Mark Johnson, mj10777@gmx.net
+# Created: 19990808
+# Updated:
+# Copyright: (c) Mark Johnson
+#
+# Makefile : Builds sample (VC++, WIN32)
+# Use FINAL=1 argument to nmake to build final version with no debug info.
+
+# Set WXDIR for your system
+WXDIR = $(WXWIN)
+
+PROGRAM=dbbrowse
+OBJECTS = $(PROGRAM).obj doc.obj pgmctrl.obj tabpgwin.obj \
+ browsedb.obj dbtree.obj dbgrid.obj dlguser.obj
+
+!include $(WXDIR)\src\makeprog.vc
+
--- /dev/null
+ erase *.res
+ erase *.obj
+ erase *.o
+ go
--- /dev/null
+//---------------------------------------------------------------------------
+// Name: pgmctrl.h
+// Purpose: Programm Control with a Tree
+// Author: Mark Johnson
+// Modified by: 19990806.mj10777
+// Created: 19991010
+// RCS-ID:
+// Copyright: (c) Mark Johnson, Berlin Germany, mj10777@gmx.net
+// Licence: wxWindows license
+//---------------------------------------------------------------------------
+//-- all #ifdefs that the whole Project needs. ------------------------------
+//---------------------------------------------------------------------------
+#ifdef __GNUG__
+ #pragma implementation
+ #pragma interface
+#endif
+//---------------------------------------------------------------------------
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+//---------------------------------------------------------------------------
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+//---------------------------------------------------------------------------
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif
+//---------------------------------------------------------------------------
+#ifndef __WXMSW__
+ #include "bitmaps/d_closed.xpm"
+ #include "bitmaps/d_open.xpm"
+ #include "bitmaps/f_closed.xpm"
+ #include "bitmaps/f_open.xpm"
+ #include "bitmaps/logo.xpm"
+ #include "bitmaps/dsnclose.xpm"
+ #include "bitmaps/dsnopen.xpm"
+#endif
+//---------------------------------------------------------------------------
+//-- all #includes that every .cpp needs --- 19990807.mj10777 ---
+//---------------------------------------------------------------------------
+#include "std.h" // sorgsam Pflegen !
+//---------------------------------------------------------------------------
+//-- Global functions -------------------------------------------------------
+//---------------------------------------------------------------------------
+static inline const char *bool2String(bool b)
+{
+ return b ? "" : "not ";
+}
+//---------------------------------------------------------------------------
+BEGIN_EVENT_TABLE(PgmCtrl, wxTreeCtrl)
+ EVT_MOTION (PgmCtrl::OnMouseMove)
+ EVT_LEFT_DCLICK(PgmCtrl::OnSelChanged)
+ EVT_TREE_ITEM_RIGHT_CLICK(TREE_CTRL_PGM,PgmCtrl::OnRightSelect)
+ EVT_MENU(PGMCTRL_ODBC_USER,PgmCtrl::OnUserPassword)
+END_EVENT_TABLE()
+//---------------------------------------------------------------------------
+// PgmCtrl implementation
+//---------------------------------------------------------------------------
+IMPLEMENT_DYNAMIC_CLASS(PgmCtrl, wxTreeCtrl)
+//---------------------------------------------------------------------------
+PgmCtrl::PgmCtrl(wxWindow *parent) : wxTreeCtrl(parent)
+{
+}
+PgmCtrl::PgmCtrl(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size, long style)
+ : wxTreeCtrl(parent, id, pos, size, style)
+{
+ wxFont* ft_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS");
+ SetFont(* ft_Temp);
+
+ // Make an image list containing small icons
+ p_imageListNormal = new wxImageList(16, 16, TRUE);
+
+ // should correspond to TreeIc_xxx enum
+#if defined(__WXMSW__) && defined(__WIN16__)
+ // This is required in 16-bit Windows mode only because we can't load a specific (16x16)
+ // icon image, so it comes out stretched
+ p_imageListNormal->Add(wxBitmap("bitmap1", wxBITMAP_TYPE_BMP_RESOURCE));
+ p_imageListNormal->Add(wxBitmap("bitmap2", wxBITMAP_TYPE_BMP_RESOURCE));
+#else
+ p_imageListNormal->Add(wxICON(Logo));
+ p_imageListNormal->Add(wxICON(DsnClosed));
+ p_imageListNormal->Add(wxICON(DsnOpen));
+ p_imageListNormal->Add(wxICON(DocClosed));
+ p_imageListNormal->Add(wxICON(DocOpen));
+ p_imageListNormal->Add(wxICON(FolderClosed));
+ p_imageListNormal->Add(wxICON(FolderOpen));
+#endif
+
+ SetImageList(p_imageListNormal);
+
+ // Add some items to the tree
+ // AddTestItemsToTree(3, 2);
+}
+//---------------------------------------------------------------------------
+PgmCtrl::~PgmCtrl()
+{
+ // wxMessageBox("PgmCtrl::~PgmCtrl() - vor DeleteAllItems");
+ // DeleteAllItems();
+ // wxMessageBox("nach DeleteAllItems");
+ delete p_imageListNormal;
+}
+//---------------------------------------------------------------------------
+#undef TREE_EVENT_HANDLER
+//---------------------------------------------------------------------------
+int PgmCtrl::OnPopulate()
+{
+ wxTreeItemId Root, Folder, Docu;
+ //----------------------------------------------------------------------------------------------------------------------------
+ int i;
+ double dTmp = 1234567.89;
+ Temp0.Printf(_("%s Functions"),p_ProgramCfg->GetAppName().c_str());
+ Root = AddRoot(Temp0,TreeIc_Logo,TreeIc_Logo, new TreeData("Root"));
+ //----------------------------------------------------------------------------------------------------------------------------
+ Folder = AppendItem(Root, _("Program settings") ,TreeIc_FolderClosed, TreeIc_FolderOpen, new TreeData("Settings"));
+ p_ProgramCfg->Read("/Local/langid",&Temp0); p_ProgramCfg->Read("/Local/language",&Temp2);
+ Temp1.Printf(_("locale (%s) ; Language (%s) ; Number(%2.2f)"),Temp0.c_str(), Temp2.c_str(), dTmp); Temp0.Empty(); Temp2.Empty();
+ Docu = AppendItem(Folder, Temp1 ,TreeIc_DocClosed, TreeIc_DocOpen, new TreeData("Setting Language"));
+ p_ProgramCfg->Read("/Paths/Work",&Temp0); Temp1.Printf(_("Work Path : %s"),Temp0.c_str()); Temp0.Empty();
+ Docu = AppendItem(Folder, Temp1 ,TreeIc_DocClosed, TreeIc_DocOpen, new TreeData("Path Work"));
+ Docu = AppendItem(Folder, _("Change the language to English") ,TreeIc_DocClosed, TreeIc_DocOpen, new TreeData("Language English"));
+ Docu = AppendItem(Folder, _("Change the language to German") ,TreeIc_DocClosed, TreeIc_DocOpen, new TreeData("Language German"));
+ Docu = AppendItem(Folder, _("Delete all wxConfigBase Entry's"),TreeIc_DocClosed, TreeIc_DocOpen, new TreeData("wxConfigBase Delete"));
+ Folder = AppendItem(Root, "ODBC DSN" ,TreeIc_FolderClosed, TreeIc_FolderOpen, new TreeData("ODBC-DSN"));
+ for (i=0;i<pDoc->i_DSN;i++)
+ {
+ Temp0.Printf("ODBC-%s",(pDoc->p_DSN+i)->Dsn.c_str());
+ Docu = AppendItem(Folder,(pDoc->p_DSN+i)->Dsn ,TreeIc_DsnClosed,TreeIc_DsnOpen, new TreeData(Temp0));
+ }
+ //----------------------------------------------------------------------------------------------------------------------------
+ popupMenu1 = NULL;
+ popupMenu1 = new wxMenu("");
+ popupMenu1->Append(PGMCTRL_ODBC_USER, _("Set Username and Password"));
+ // popupMenu1->AppendSeparator();
+ //----------------------------------------------------------------------------------------------------------------------------
+ Expand(Root);
+ Expand(Folder);
+ //----------------------------------------------------------------------------------------------------------------------------
+ return 0;
+}
+//---------------------------------------------------------------------------
+void PgmCtrl::OnSelChanged(wxTreeEvent& WXUNUSED(event))
+{
+ int i;
+ Temp0.Empty(); Temp1.Empty();
+ pDoc->p_MainFrame->SetStatusText(Temp0,0);
+ // Get the Information that we need
+ wxTreeItemId itemId = GetSelection();
+ TreeData *item = (TreeData *)GetItemData(itemId);
+ if ( item != NULL )
+ {
+ int Treffer = 0;
+ Temp1.Printf("%s",item->m_desc.c_str());
+ //-----------------------------------------------------------------------------------------
+ if (Temp1 == "Language English")
+ {
+ Temp0 = "std";
+ p_ProgramCfg->Write("/Local/langid",Temp0);
+ Temp0 = _("-I-> After a programm restart, the language will be changed to English.");
+ wxMessageBox(Temp0);
+ }
+ if (Temp1 == "Language German")
+ {
+ Temp0 = "de";
+ p_ProgramCfg->Write("/Local/langid",Temp0);
+ Temp0 = _("-I-> After a programm restart, the language will be changed to German.");
+ wxMessageBox(Temp0);
+ }
+ //-----------------------------------------------------------------------------------------
+ if (Temp1 == "wxConfigBase Delete")
+ {
+ if (p_ProgramCfg->DeleteAll()) // Default Diretory for wxFileSelector
+ Temp0 = _("-I-> wxConfigBase.p_ProgramCfg->DeleteAll() was succesfull.");
+ else
+ Temp0 = _("-E-> wxConfigBase.p_ProgramCfg->DeleteAll() was not succesfull !");
+ wxBell(); // Ding_a_Ling
+ Treffer++;
+ }
+ //-----------------------------------------------------------------------------------------
+ if (Temp1.Contains("ODBC-"))
+ {
+ Temp1 = Temp1.Mid(5,wxSTRING_MAXLEN);
+ for (i=0;i<pDoc->i_DSN;i++)
+ {
+ if (Temp1 == (pDoc->p_DSN+i)->Dsn)
+ {
+ pDoc->OnChosenDSN(i);
+ }
+ }
+ Treffer++;
+ }
+ //-----------------------------------------------------------------------------------------
+ if (Treffer == 0)
+ {
+ //---------------------------------------------------
+ Temp0.Printf(_("Item '%s': %sselected, %sexpanded, %sbold,"
+ "%u children (%u immediately under this item)."),
+ item->m_desc.c_str(),
+ bool2String(IsSelected(itemId)),
+ bool2String(IsExpanded(itemId)),
+ bool2String(IsBold(itemId)),
+ GetChildrenCount(itemId),
+ GetChildrenCount(itemId));
+ LogBuf.Printf("-I-> PgmCtrl::OnSelChanged - %s",Temp0.c_str());
+ wxLogMessage( "%s", LogBuf.c_str() );
+ //---------------------------------------------------
+ }
+ }
+}
+//---------------------------------------------------------------------------
+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::OnMouseMove(wxMouseEvent &event)
+{
+ TreePos = event.GetPosition();
+}
+//------------------------------------------------------------------------------
+void PgmCtrl::OnUserPassword()
+{
+ // wxMessageBox(SaveDSN);
+ int i, rc=0;
+ //-------------------------------------------
+ DlgUser p_Dlg(this, "Username and Password", wxPoint(100, 100), wxSize(340, 170));
+ //-------------------------------------------
+ for (i=0;i<pDoc->i_DSN;i++)
+ {
+ if (SaveDSN == (pDoc->p_DSN+i)->Dsn)
+ {
+ p_Dlg.s_DSN = (pDoc->p_DSN+i)->Dsn;
+ p_Dlg.s_User = (pDoc->p_DSN+i)->Usr;
+ p_Dlg.s_Password = (pDoc->p_DSN+i)->Pas;
+ p_Dlg.OnInit();
+ //--------------------
+ // Temp0.Printf("i(%d) ; s_DSN(%s) ; s_User(%s) ; s_Password(%s)",i,p_Dlg.s_DSN,p_Dlg.s_User,p_Dlg.s_Password);
+ // wxMessageBox(Temp0);
+ if (p_Dlg.ShowModal() == wxID_OK)
+ {
+ (pDoc->p_DSN+i)->Usr = p_Dlg.s_User;
+ (pDoc->p_DSN+i)->Pas = p_Dlg.s_Password;
+ (pDoc->db_Br+i)->UserName = (pDoc->p_DSN+i)->Usr;
+ (pDoc->db_Br+i)->Password = (pDoc->p_DSN+i)->Pas;
+ }
+ p_Dlg.Destroy();
+ //--------------------
+ goto Weiter; // We have what we want, leave
+ }
+ }
+ Weiter:
+ //-------------------------------------------
+ SaveDSN.Empty();
+}
+//---------------------------------------------------------------------------
--- /dev/null
+//---------------------------------------------------------------------------
+// Name: pgmctrl.h
+// Purpose: Programm Control with a Tree
+// Author: Mark Johnson
+// Modified by: 19990806.mj10777
+// Created: 19991010
+// RCS-ID:
+// Copyright: (c) Mark Johnson, Berlin Germany, mj10777@gmx.net
+// Licence: wxWindows license
+//---------------------------------------------------------------------------
+class mjDoc; // Declared in doc.h file
+//---------------------------------------------------------------------------
+class TreeData : public wxTreeItemData
+{
+public:
+ TreeData(const wxString& desc) : m_desc(desc) { }
+
+ void ShowInfo(wxTreeCtrl *tree);
+
+ wxString m_desc;
+};
+//---------------------------------------------------------------------------
+class PgmCtrl : public wxTreeCtrl
+{
+ public:
+ enum
+ { // The order here must be the same as in m_imageListNormal !
+ TreeIc_Logo, // logo.ico
+ TreeIc_DsnClosed, // dsnclose.ico
+ TreeIc_DsnOpen, // dsnopen.ico
+ TreeIc_DocClosed, // d_closed.ico
+ TreeIc_DocOpen, // d_open.ico
+ TreeIc_FolderClosed, // f_closed.ico
+ TreeIc_FolderOpen // f_open.ico
+ };
+ wxString Temp0, Temp1, Temp2, Temp3, Temp4, Temp5;
+//---------------------------------------------------------------------------
+ PgmCtrl() { }
+ PgmCtrl(wxWindow *parent);
+ PgmCtrl(wxWindow *parent, const wxWindowID id,const wxPoint& pos, const wxSize& size,long style);
+ virtual ~PgmCtrl();
+ mjDoc *pDoc;
+//---------------------------------------------------------------------------
+ int i_TabArt; // Tab = 0 ; Page = 1;
+ int i_ViewNr; // View Nummer in Tab / Page
+//---------------------------------------------------------------------------
+ wxImageList *p_imageListNormal;
+ wxMenu *popupMenu1; // OnDBClass
+ wxPoint TreePos;
+ wxString SaveDSN; // Needed for User and Password
+//---------------------------------------------------------------------------
+ public:
+ int OnPopulate();
+ void OnSelChanged(wxTreeEvent& event);
+ void OnRightSelect(wxTreeEvent& event);
+ void OnMouseMove(wxMouseEvent& event);
+ void OnUserPassword();
+
+ public:
+//---------------------------------------------------------------------------
+ // NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS()
+ // if you want your overloaded OnCompareItems() to be called.
+ // OTOH, if you don't want it you may omit the next line - this will
+ // make default (alphabetical) sorting much faster under wxMSW.
+ DECLARE_DYNAMIC_CLASS(PgmCtrl)
+ DECLARE_EVENT_TABLE()
+};
+//---------------------------------------------------------------------------
+#define PGMCTRL_01_BEGIN 1000
+#define PGMCTRL_ODBC_USER 1001
+#define PGMCTRL_01_END 1010
+//---------------------------------------------------------------------------
--- /dev/null
+//---------------------------------------------------------------------------
+//-- all #includes that the whole Project needs. ----------------------------
+//---------------------------------------------------------------------------
+#include <wx/config.h> // to let wxWindows choose a wxConfig class for your platform
+#include <wx/confbase.h> // base config class
+// #include <wx/event.h>
+// #include <wx/date.h>
+#include <wx/dbtable.h>
+#include <wx/generic/grid.h>
+#include <wx/file.h>
+#include <wx/wxhtml.h>
+#include <wx/image.h>
+#include <wx/imaglist.h>
+#include <wx/intl.h>
+#include <wx/laywin.h>
+#include <wx/listctrl.h>
+#include <wx/resource.h> // wxResourceParsedata/File/String
+#include <wx/splitter.h>
+#include <wx/textctrl.h>
+#include <wx/toolbar.h>
+#include <wx/treectrl.h>
+#ifdef __WXMSW__
+ #include <wx/xpmhand.h>
+#endif
+//---------------------------
+#include "tabpgwin.h" // Original name : "controlarea.h"
+//---------------------------
+#include "dlguser.h"
+#include "browsedb.h"
+#include "dbtree.h"
+#include "dbgrid.h"
+#include "pgmctrl.h"
+#include "doc.h"
+#include "dbbrowse.h"
+//---------------------------------------------------------------------------
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: No names yet.
+// Purpose: Contrib. demo
+// Author: Aleksandras Gluchovas
+// Modified by: 19990908 : mj10777@gmx.net
+// - rename to tabpgwin
+// - restruction of Variable declaration
+// - to prevent Warnings under MingGW32
+// Modified by: 19990909 : mj10777@gmx.net
+// - mNoVertScroll TRUE = no / FALSE = Original Code
+// the Original Code Paints a Vertical Scroll in wxPaggedWindow
+// which is not needed in this Version. Use TRUE for this.
+// Created: 07/09/98
+// RCS-ID: $Id$
+// Copyright: (c) Aleksandras Gluchovas
+// Licence: wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef __GNUG__
+#pragma implementation "controlarea.h"
+// #pragma interface
+#endif
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+#include <math.h>
+#include <stdlib.h>
+
+#include "wx/string.h"
+#include "wx/utils.h" // import wxMin/wxMax macros and wxFileExist(..)
+
+#include "tabpgwin.h"
+//---------------------------------------------------------------------------
+// Implementation for class twTabInfo
+//---------------------------------------------------------------------------
+IMPLEMENT_DYNAMIC_CLASS( twTabInfo, wxObject )
+//---------------------------------------------------------------------------
+twTabInfo::twTabInfo()
+ : mpContent( 0 )
+{}
+//---------------------------------------------------------------------------
+twTabInfo::~twTabInfo()
+{
+ // FOR NOW:: nothing
+}
+//---------------------------------------------------------------------------
+int twTabInfo::ImgWidth()
+{
+ if ( mBitMap.Ok() ) return mBitMap.GetWidth();
+ else return 0;
+}
+//---------------------------------------------------------------------------
+int twTabInfo::ImgHeight()
+{
+ if ( mBitMap.Ok() ) return mBitMap.GetHeight();
+ else return 0;
+}
+//---------------------------------------------------------------------------
+int twTabInfo::ImageToTxtGap( int prefGap )
+{
+ if ( mBitMap.Ok() ) return prefGap;
+ else return 0;
+}
+//---------------------------------------------------------------------------
+bool twTabInfo::HasImg()
+{
+ return mBitMap.Ok();
+}
+//---------------------------------------------------------------------------
+// bool twTabInfo::HasText();
+unsigned int twTabInfo::HasText()
+{
+ return mText.Length();
+}
+//---------------------------------------------------------------------------
+wxBitmap& twTabInfo::GetImg()
+{
+ return mBitMap;
+}
+//---------------------------------------------------------------------------
+wxString& twTabInfo::GetText()
+{
+ return mText;
+}
+//---------------------------------------------------------------------------
+wxWindow& twTabInfo::GetContent()
+{
+ return *mpContent;
+}
+//---------------------------------------------------------------------------
+// Implementation for class wxTabbedWindow
+//---------------------------------------------------------------------------
+IMPLEMENT_DYNAMIC_CLASS( wxTabbedWindow, wxPanel )
+//---------------------------------------------------------------------------
+BEGIN_EVENT_TABLE( wxTabbedWindow, wxPanel )
+ EVT_SIZE ( wxTabbedWindow::OnSize )
+ EVT_PAINT( wxTabbedWindow::OnPaint )
+ EVT_LEFT_DOWN( wxTabbedWindow::OnLButtonDown )
+// TDB:: filciker reduction
+// EVT_ERASE_BACKGROUND( wxTabbedWindow::OnBkErase )
+END_EVENT_TABLE()
+//---------------------------------------------------------------------------
+wxTabbedWindow::wxTabbedWindow()
+
+ : mpTabScroll ( NULL ),
+ mpHorizScroll( NULL ),
+ mpVertScroll ( NULL ),
+
+ mVertGap ( 0 ),
+ mHorizGap( 0 ),
+
+ mTitleVertGap ( 3 ),
+ mTitleHorizGap( 4 ),
+ mImageTextGap ( 2 ),
+ mFirstTitleGap( 11 ),
+
+ mBorderOnlyWidth( 8 ),
+
+ mWhitePen( wxColour(255,255,255), 1, wxSOLID ),
+ mGrayPen ( wxColour(192,192,192), 1, wxSOLID ),
+ mDarkPen ( wxColour(128,128,128), 1, wxSOLID ),
+ mBlackPen( wxColour( 0, 0, 0), 1, wxSOLID ),
+
+ // state variables
+
+ mActiveTab ( 0 ),
+ mTitleHeight( 0 ),
+ mLayoutType( wxTITLE_IMG_AND_TEXT )
+{}
+//---------------------------------------------------------------------------
+wxTabbedWindow::~wxTabbedWindow()
+{
+ wxNode* pTab = mTabs.First();
+
+ while( pTab )
+ {
+ delete ((twTabInfo*)pTab->Data());
+ pTab = pTab->Next();
+ }
+}
+//---------------------------------------------------------------------------
+void wxTabbedWindow::SizeTabs(int x,int y, int width, int height, bool repant)
+{
+ wxNode* pTabNode = mTabs.First();
+ int n = 0;
+
+ while( pTabNode )
+ {
+ twTabInfo& info = *((twTabInfo*)pTabNode->Data());
+
+ if ( n == mActiveTab )
+ {
+ //wxSizeEvent evt;
+ //info.mpContent->GetEventHandler()->ProcessEvent( evt );
+
+ info.mpContent->SetSize( x, y, width, height, 0 );
+ info.mpContent->Show(TRUE);
+ info.mpContent->Refresh();
+
+ }
+ else
+ {
+ info.mpContent->Show(FALSE);
+ }
+
+ pTabNode = pTabNode->Next();
+ ++n;
+ }
+}
+//---------------------------------------------------------------------------
+void wxTabbedWindow::AddTab( wxWindow* pContent,
+ wxString tabText,
+ wxString imageFileName,
+ long imageType )
+{
+ twTabInfo* pTab = new twTabInfo();
+
+ pTab->mpContent = pContent;
+ pTab->mText = tabText;
+
+ if ( wxFileExists( imageFileName ) &&
+
+ pTab->mBitMap.LoadFile( imageFileName, imageType ) )
+ {
+ pTab->mImageFile = imageFileName;
+ pTab->mImageType = imageType;
+ }
+
+
+ if ( pContent->GetParent() == NULL )
+ pContent->Create( this, -1 );
+
+ mTabs.Append( (wxObject*)pTab );
+
+ RecalcLayout(TRUE);
+
+ OnTabAdded( pTab );
+}
+//---------------------------------------------------------------------------
+void wxTabbedWindow::AddTab( wxWindow* pContent,
+ wxString tabText, wxBitmap* pImage )
+{
+ twTabInfo* pTab = new twTabInfo();
+
+ pTab->mpContent = pContent;
+ pTab->mText = tabText;
+
+ if ( pImage )
+ pTab->mBitMap = *pImage;
+
+ if ( pContent->GetParent() == NULL )
+ pContent->Create( this, -1 );
+
+ mTabs.Append( (wxObject*)pTab );
+ RecalcLayout(TRUE);
+ OnTabAdded( pTab );
+}
+//---------------------------------------------------------------------------
+void wxTabbedWindow::RemoveTab( int tabNo )
+{
+ twTabInfo* pTab = ((twTabInfo*)(mTabs.Nth( tabNo )->Data()));
+ pTab->mpContent->Destroy();
+ delete pTab;
+ mTabs.DeleteNode( mTabs.Nth( tabNo ) );
+ // if ( mActiveTab >= mTabs.Number() );
+ if ( mActiveTab >= mTabs.Number() )
+ mActiveTab = mTabs.Number() - 1;
+ SetActiveTab( mActiveTab );
+}
+//---------------------------------------------------------------------------
+int wxTabbedWindow::GetTabCount()
+{
+ return mTabs.Number();
+}
+//---------------------------------------------------------------------------
+wxWindow* wxTabbedWindow::GetTab( int tabNo )
+{
+ return ((twTabInfo*)(mTabs.Nth( tabNo )->Data()))->mpContent;
+}
+//---------------------------------------------------------------------------
+wxWindow* wxTabbedWindow::GetActiveTab()
+{
+ // FIMXE:: this is lame
+ return GetTab( mActiveTab );
+}
+//---------------------------------------------------------------------------
+void wxTabbedWindow::SetActiveTab( int tabNo )
+{
+ mActiveTab = tabNo;
+ RecalcLayout(TRUE);
+ Refresh();
+}
+//---------------------------------------------------------------------------
+// width of the decorations border (4 shade-lines), should not be changed
+//---------------------------------------------------------------------------
+#define BORDER_SZ 4
+//---------------------------------------------------------------------------
+void wxTabbedWindow::DrawShadedRect( int x, int y, int width, int height,
+ wxPen& upperPen, wxPen& lowerPen, wxDC& dc
+ )
+{
+ // darw the lightened upper-left sides of the rectangle
+
+ dc.SetPen( upperPen );
+ dc.DrawLine( x,y, x, y + height - 1 ); // vert
+ dc.DrawLine( x,y, x + width - 1, y ); // horiz
+
+ // draw the unenlightened lower-right sides of the rectangle
+
+ dc.SetPen( lowerPen );
+ dc.DrawLine( x + width - 1, y, x + width - 1, y + height - 1 ); // vert
+ dc.DrawLine( x, y + height - 1, x + width, y + height - 1 ); // horiz
+}
+//---------------------------------------------------------------------------
+void wxTabbedWindow::DrawDecorations( wxDC& dc )
+{
+ // Protability NOTE::: DrawLine(..) draws a line from the first position,
+ // but not including the point specified by last position.
+ // This way Windows draws lines, not sure how Motif and Gtk
+ // prots behave...
+
+ int width, height;
+ GetClientSize( &width, &height );
+
+ // check if there's at least a bit of space to draw things
+
+ if ( width < mHorizGap*2 + BORDER_SZ*2+1 ||
+ height < mVertGap*2 + BORDER_SZ*2+1 + mTitleHeight
+ )
+ return;
+
+ // step #1 - draw border around the tab content area
+
+ // setup position for kind of "pencil"
+ int curX = mHorizGap;
+ int curY = mVertGap;
+
+ int xSize = width - mHorizGap*2;
+ int ySize = height - mVertGap *2 - mTitleHeight;
+
+ // layer 1 (upper white)
+ DrawShadedRect( curX+0, curY+0, xSize-0, ySize-0,
+ mWhitePen, mBlackPen, dc );
+
+ // layer 2 (upper gray)
+ DrawShadedRect( curX+1, curY+1, xSize-2-1, ySize-2-1,
+ mGrayPen, mGrayPen, dc );
+
+ // layer 3 (upper darkGray)
+ DrawShadedRect( curX+2, curY+2, xSize-3-2, ySize-3-2,
+ mDarkPen, mWhitePen, dc );
+
+ // layer 4 (upper black)
+ DrawShadedRect( curX+3, curY+3, xSize-4-3, ySize-4-3,
+ mBlackPen, mGrayPen, dc );
+
+ // add non-siemtric layer from the lower-right side (confroming to MFC-look)
+
+ dc.SetPen( mDarkPen );
+ dc.DrawLine( curX+1, curY + ySize - 2, curX + xSize - 1, curY + ySize - 2 ); // horiz
+ dc.DrawLine( curX + xSize - 2, curY + 1, curX + xSize - 2, curY + ySize - 2 ); // vert
+
+ // step #2 - draw tab title bars
+
+ curX = mFirstTitleGap;
+ curY = height - mVertGap - mTitleHeight;
+
+ int tabNo = 0;
+ wxNode* pNode = mTabs.First();
+
+ while( pNode )
+ {
+ // "hard-coded metafile" for decorations
+
+ twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+
+ xSize = tab.mDims.x;
+ ySize = mTitleHeight;
+
+ if ( tabNo == mActiveTab )
+ {
+ dc.SetPen( mGrayPen );
+ dc.DrawLine( curX+1, curY-2, curX+xSize-2, curY-2 );
+ dc.DrawLine( curX+1, curY-1, curX+xSize-2, curY-1 );
+ }
+
+ dc.SetPen( mWhitePen );
+
+ if ( tabNo == mActiveTab )
+ dc.DrawLine( curX, curY-2, curX, curY+ySize-2 );
+ else
+ dc.DrawLine( curX, curY, curX, curY+ySize-2 );
+
+ dc.SetPen( mDarkPen );
+ dc.DrawLine( curX+1, curY+ySize-3, curX+1, curY+ySize-1 ); // to pix down
+ dc.DrawLine( curX+2, curY+ySize-2, curX+xSize-2, curY+ySize-2 );
+ dc.DrawLine( curX+xSize-3, curY+ySize-3, curX+xSize-2, curY+ySize-3 );
+ if ( tabNo == mActiveTab )
+ dc.DrawLine( curX+xSize-2, curY+ySize-3, curX+xSize-2, curY-3 );
+ else
+ dc.DrawLine( curX+xSize-2, curY+ySize-3, curX+xSize-2, curY-1 );
+
+ dc.SetPen( mBlackPen );
+ dc.DrawLine( curX+xSize-1, curY, curX+xSize-1, curY+ySize-2 );
+ dc.DrawLine( curX+xSize-2, curY+ySize-2, curX+xSize-3, curY+ySize-2 );
+ dc.DrawLine( curX+xSize-3, curY+ySize-1, curX+1, curY+ySize-1 );
+
+ pNode = pNode->Next();
+ ++tabNo;
+
+ // darw image and (or without) text centered within the
+ // title bar rectangle
+
+ if ( mLayoutType != wxTITLE_BORDER_ONLY && tab.HasImg() )
+ {
+ wxMemoryDC tmpDc;
+ tmpDc.SelectObject( tab.GetImg() );
+
+ dc.Blit( curX + mTitleHorizGap,
+ curY + ( ySize - tab.ImgHeight() ) / 2,
+ tab.ImgWidth(),
+ tab.ImgHeight(),
+ &tmpDc, 0, 0, wxCOPY
+ );
+ }
+
+ if ( mLayoutType == wxTITLE_IMG_AND_TEXT && tab.HasText() )
+ {
+ long x,w,h;
+
+ // set select default font of the window into it's device context
+ dc.SetFont( GetLabelingFont() );
+
+ dc.SetTextBackground( GetBackgroundColour() );
+
+ dc.GetTextExtent(tab.mText, &w, &h );
+
+ x = curX + mTitleHorizGap +
+ tab.ImgWidth() + tab.ImageToTxtGap(mImageTextGap);
+
+ dc.DrawText( tab.GetText(), x, curY + ( ySize - h ) / 2 );
+ }
+ curX += xSize;
+
+ } // end of `while (pNode)'
+}
+//---------------------------------------------------------------------------
+int wxTabbedWindow::HitTest( const wxPoint& pos )
+{
+ int width, height;
+ GetClientSize( &width, &height );
+
+ int curX = mFirstTitleGap;
+ int curY = height - mVertGap - mTitleHeight;
+
+ int tabNo = 0;
+ wxNode* pNode = mTabs.First();
+
+ while( pNode )
+ {
+ twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+
+ int w,h;
+ w = tab.mDims.x;
+ h = tab.mDims.y;
+ // hit test rectangle of the currnet tab title bar
+ if ( pos.x >= curX && pos.x < curX + tab.mDims.x &&
+ pos.y >= curY && pos.y < curY + tab.mDims.y
+ )
+ {
+ return tabNo;
+ }
+
+ curX += tab.mDims.x;
+
+ pNode = pNode->Next();
+ ++tabNo;
+ }
+
+ return -1;
+}
+//---------------------------------------------------------------------------
+void wxTabbedWindow::HideInactiveTabs( bool andRepaint )
+{
+ if ( !andRepaint )
+ return;
+
+ wxNode* pNode = mTabs.First();
+ int tabNo = 0;
+
+ while( pNode )
+ {
+ if ( tabNo != mActiveTab )
+ {
+ twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+ tab.mpContent->Show(FALSE);
+ }
+
+ pNode = pNode->Next();
+ ++tabNo;
+ }
+}
+//---------------------------------------------------------------------------
+wxFont wxTabbedWindow::GetLabelingFont()
+{
+ wxFont font;
+#ifdef __WINDOWS__
+ font.SetFaceName("MS Sans Serif");
+#else
+ font.SetFamily( wxSWISS );
+#endif
+
+ font.SetStyle(40);
+ font.SetWeight(40);
+ font.SetPointSize( 8 );
+
+#ifdef __WINDOWS__
+ font.RealizeResource();
+#endif
+
+ return font;
+}
+//---------------------------------------------------------------------------
+void wxTabbedWindow::RecalcLayout(bool andRepaint)
+{
+ HideInactiveTabs(andRepaint);
+
+ // resetup position of the active tab
+
+ int width, height;
+ GetClientSize( &width, &height );
+
+ int curX = mHorizGap + BORDER_SZ;
+ int curY = mVertGap + BORDER_SZ;
+
+ int xSize = width - mHorizGap*2 - BORDER_SZ*2-1;
+ int ySize = height - mVertGap*2 - BORDER_SZ*2-1 - mTitleHeight;
+
+ SizeTabs( curX, curY, xSize, ySize, andRepaint );
+
+ // pass #1 - try to layout assuming it's wxTITLE_IMG_AND_TEXT
+
+ mLayoutType = wxTITLE_IMG_AND_TEXT;
+
+ wxNode* pNode = mTabs.First();
+
+ curX = mFirstTitleGap; // the left-side gap
+ mTitleHeight = 0;
+
+ while( pNode )
+ {
+ twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+
+ wxWindowDC dc(this);
+
+ long w,h;
+
+ // set select default font of the window into it's device context
+ dc.SetFont( GetLabelingFont() );
+
+ dc.GetTextExtent(tab.mText, &w, &h );
+
+ tab.mDims.x = w + tab.ImageToTxtGap(mImageTextGap) +
+ tab.ImgWidth() + mTitleHorizGap*2;
+
+ tab.mDims.y = wxMax( h, tab.ImgHeight() ) + mTitleVertGap*2;
+ mTitleHeight = wxMax( mTitleHeight, tab.mDims.y );
+
+ curX += tab.mDims.x;
+
+ pNode = pNode->Next();
+ }
+
+ curX += mHorizGap; // the right-side gap
+
+ // make all title bars of equel height
+
+ pNode = mTabs.First();
+
+ while( pNode )
+ {
+ ((twTabInfo*)(pNode->Data()))->mDims.y = mTitleHeight;;
+ pNode = pNode->Next();
+ }
+
+ // if curX has'nt ran out of bounds, leave TITLE_IMG layout and return
+ if ( curX < width - mHorizGap )
+ return;
+
+ // pass #2 - try to layout assuming wxTITLE_IMG_ONLY
+
+ mLayoutType = wxTITLE_IMG_ONLY;
+
+ pNode = mTabs.First();
+
+ curX = mFirstTitleGap; // the left-side gap
+
+ int denomiator = mTabs.Number();
+ if ( denomiator == 0 ) ++denomiator;
+
+ mBorderOnlyWidth = (width - mFirstTitleGap - mHorizGap) / denomiator;
+
+ while( pNode )
+ {
+ twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+
+ if ( tab.HasImg() )
+ {
+ tab.mDims.x = tab.ImgWidth() + mTitleHorizGap*2;
+ tab.mDims.y = tab.ImgHeight() + mTitleVertGap*2;
+ }
+ else
+ {
+ tab.mDims.x = mBorderOnlyWidth;
+ tab.mDims.y = mTitleHeight;
+ }
+
+ curX += tab.mDims.x;
+
+ pNode = pNode->Next();
+ }
+
+ curX += mHorizGap; // the right-side gap
+
+ // if curX has'nt ran out of bounds, leave IMG_ONLY layout and return
+ if ( curX < width - mHorizGap )
+ return;
+
+ // pass #3 - set the narrowest layout wxTITLE_BORDER_ONLY
+
+ mLayoutType = wxTITLE_BORDER_ONLY;
+
+ pNode = mTabs.First();
+
+ while( pNode )
+ {
+ twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+
+ tab.mDims.x = mBorderOnlyWidth;
+ tab.mDims.y = mTitleHeight;
+
+ pNode = pNode->Next();
+ }
+}
+//---------------------------------------------------------------------------
+// wx event handlers
+//---------------------------------------------------------------------------
+void wxTabbedWindow::OnPaint( wxPaintEvent& event )
+{
+ wxPaintDC dc(this);
+ DrawDecorations( dc );
+}
+//---------------------------------------------------------------------------
+void wxTabbedWindow::OnSize ( wxSizeEvent& event )
+{
+ SetBackgroundColour( wxColour( 192,192,192 ) );
+ RecalcLayout(TRUE);
+}
+//---------------------------------------------------------------------------
+void wxTabbedWindow::OnBkErase( wxEraseEvent& event )
+{
+ // do nothing
+}
+//---------------------------------------------------------------------------
+void wxTabbedWindow::OnLButtonDown( wxMouseEvent& event )
+{
+ // floats, why?
+ int x = (int)event.m_x;
+ int y = (int)event.m_y;
+
+ int tabNo = HitTest( wxPoint(x,y) );
+
+ if ( tabNo != -1 )
+ {
+ SetActiveTab( tabNo );
+ }
+}
+//---------------------------------------------------------------------------
+// Implementation for class wxPaggedWindow
+//---------------------------------------------------------------------------
+IMPLEMENT_DYNAMIC_CLASS( wxPaggedWindow, wxTabbedWindow )
+//---------------------------------------------------------------------------
+BEGIN_EVENT_TABLE( wxPaggedWindow, wxTabbedWindow )
+ EVT_SIZE ( wxPaggedWindow::OnSize )
+ EVT_PAINT ( wxPaggedWindow::OnPaint )
+ EVT_LEFT_DOWN( wxPaggedWindow::OnLButtonDown )
+ EVT_LEFT_UP ( wxPaggedWindow::OnLButtonUp )
+ EVT_MOTION ( wxPaggedWindow::OnMouseMove )
+ EVT_SCROLL ( wxPaggedWindow::OnScroll )
+END_EVENT_TABLE()
+//---------------------------------------------------------------------------
+// border for pagged-window is 2 shaded-lines
+//---------------------------------------------------------------------------
+#undef BORDER_SZ
+#define BORDER_SZ 2
+//---------------------------------------------------------------------------
+wxPaggedWindow::wxPaggedWindow()
+
+ : mScrollEventInProgress( FALSE ),
+
+ mTabTrianGap(4),
+
+ mWhiteBrush( wxColour(255,255,255), wxSOLID ),
+ mGrayBrush ( wxColour(192,192,192), wxSOLID ),
+
+ mCurentRowOfs( 0 ),
+ mAdjustableTitleRowLen( 300 ),
+
+ mIsDragged ( FALSE ),
+ mDagOrigin ( 0 ),
+ mCursorChanged( FALSE ),
+ mResizeCursor ( wxCURSOR_SIZEWE ),
+ mNormalCursor ( wxCURSOR_ARROW )
+{
+ mTitleVertGap = 2;
+ mTitleHorizGap = 10;
+ mNoVertScroll = TRUE; // Horizontale Scroll abschalten
+}
+//---------------------------------------------------------------------------
+wxPaggedWindow::~wxPaggedWindow()
+{
+ // nothing (base class handles destruction)
+}
+//---------------------------------------------------------------------------
+wxFont wxPaggedWindow::GetLabelingFont()
+{
+ wxFont font;
+
+#ifdef __WINDOWS__
+ font.SetFaceName("Comic Sans MS");
+#else
+ font.SetFamily( wxSWISS );
+#endif
+
+ font.SetStyle(40);
+ font.SetWeight(40);
+ font.SetPointSize( 8 );
+
+ return font;
+}
+//---------------------------------------------------------------------------
+void wxPaggedWindow::OnTabAdded( twTabInfo* pInfo )
+{
+ int units = GetWholeTabRowLen() / 20;
+
+ mpTabScroll->SetScrollbar( 0, 1, units, 1, FALSE );
+}
+//---------------------------------------------------------------------------
+wxScrollBar& wxPaggedWindow::GetVerticalScrollBar()
+{
+ return *mpVertScroll;
+}
+//---------------------------------------------------------------------------
+wxScrollBar& wxPaggedWindow::GetHorizontalScrollBar()
+{
+ return *mpHorizScroll;
+}
+//---------------------------------------------------------------------------
+int wxPaggedWindow::GetWholeTabRowLen()
+{
+ wxNode* pNode = mTabs.First();
+
+ int len = 0;
+
+ while( pNode )
+ {
+ twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+
+ len += tab.mDims.x;
+ pNode = pNode->Next();
+ }
+
+ return len;
+}
+//---------------------------------------------------------------------------
+void wxPaggedWindow::DrawPaperBar( twTabInfo& tab, int x, int y,
+ wxBrush& brush, wxPen& pen, wxDC& dc )
+{
+ wxPoint poly[4];
+
+ // draw organizer-style paper outlet
+
+ poly[0].x = x - mTabTrianGap;
+ poly[0].y = y;
+
+ poly[1].x = x + mTabTrianGap;
+ poly[1].y = y + tab.mDims.y-1;
+
+ poly[2].x = x + tab.mDims.x - mTabTrianGap;
+ poly[2].y = y + tab.mDims.y-1;
+
+ poly[3].x = x + tab.mDims.x + mTabTrianGap;
+ poly[3].y = y;
+
+ dc.SetPen( pen );
+ dc.SetBrush( brush );
+
+ dc.DrawPolygon( 4, poly );
+
+ long w,h;
+
+ // set select default font of the window into it's device context
+ dc.SetFont( GetLabelingFont() );
+
+ dc.SetTextBackground( brush.GetColour() );
+
+ dc.GetTextExtent(tab.mText, &w, &h );
+
+ if ( tab.HasImg() )
+ {
+ wxMemoryDC tmpDc;
+ tmpDc.SelectObject( tab.GetImg() );
+
+ dc.Blit( x + mTitleHorizGap,
+ y + ( tab.mDims.y - tab.ImgHeight() ) / 2,
+ tab.ImgWidth(),
+ tab.ImgHeight(),
+ &tmpDc, 0, 0, wxCOPY
+ );
+ }
+
+ if ( tab.HasText() )
+ {
+ int tx = x + mTitleHorizGap +
+ tab.ImgWidth() + tab.ImageToTxtGap(mImageTextGap);
+
+ dc.DrawText( tab.GetText(), tx, y + ( tab.mDims.y - h ) / 2 );
+ }
+}
+//---------------------------------------------------------------------------
+void wxPaggedWindow::DrawDecorations( wxDC& dc )
+{
+ // FIXME:: the is big body have to be split!
+
+ int width, height;
+ GetClientSize( &width, &height );
+
+ int curX = mHorizGap;
+ int curY = mVertGap;
+
+ int xSize = width - mHorizGap*2;
+ int ySize = height - mVertGap*2;
+
+ DrawShadedRect( curX, curY, xSize, ySize,
+ mDarkPen, mWhitePen, dc );
+
+ DrawShadedRect( curX+1, curY+1, xSize-2, ySize-2,
+ mBlackPen, mGrayPen, dc );
+
+ // draw inactive tab title bars frist (left-to-right)
+
+ wxNode* pNode = mTabs.First();
+ int tabNo = 0;
+
+ /* OLD STUFF::
+ curX = mTitleRowStart;
+ curY = height - mVertGap - BORDER_SZ - mTitleHeight;
+ */
+
+ curX = mTabTrianGap;
+ curY = 0;
+
+ // FOR NOW:: avoid creating bitmap with invalid dimensions
+
+ if ( mTitleRowLen < 1 || mTitleHeight < 1 ) return;
+
+ wxMemoryDC tmpDc;
+ wxBitmap tmpBmp( mTitleRowLen, mTitleHeight );
+
+ tmpDc.SelectObject( tmpBmp );
+ tmpDc.SetPen( mGrayPen );
+ tmpDc.SetBrush( mGrayBrush );
+ tmpDc.DrawRectangle( 0,0, mTitleRowLen, mTitleHeight );
+
+ tmpDc.SetDeviceOrigin( mCurentRowOfs, 0 );
+
+ while( pNode )
+ {
+ twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+
+ if ( tabNo != mActiveTab )
+
+ DrawPaperBar( tab, curX, curY, mGrayBrush, mBlackPen, tmpDc );
+
+ curX += tab.mDims.x;
+
+ pNode = pNode->Next();
+ ++tabNo;
+ }
+
+ // finally, draw the active tab (white-filled)
+
+ pNode = mTabs.First();
+ tabNo = 0;
+
+ curX = mTabTrianGap;
+
+ while( pNode )
+ {
+ twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+
+ if ( tabNo == mActiveTab )
+ {
+ DrawPaperBar( tab, curX, curY, mWhiteBrush, mBlackPen, tmpDc );
+
+ tmpDc.SetPen( mWhitePen );
+
+ tmpDc.DrawLine( curX - mTabTrianGap+1, curY,
+ curX + tab.mDims.x + mTabTrianGap, curY );
+ break;
+ }
+ curX += tab.mDims.x;
+
+ pNode = pNode->Next();
+ ++tabNo;
+ }
+
+ // back to initial device origin
+
+ tmpDc.SetDeviceOrigin( 0, 0 );
+
+ // draw resize-hint-stick
+
+ curX = mTitleRowLen - 6;
+
+ DrawShadedRect( curX+0, 0+0, 6, mTitleHeight, mGrayPen, mBlackPen, tmpDc );
+ DrawShadedRect( curX+1, 0+1, 6-2, mTitleHeight-2, mWhitePen, mDarkPen, tmpDc );
+ DrawShadedRect( curX+2, 0+2, 6-4, mTitleHeight-4, mGrayPen, mGrayPen, tmpDc );
+
+
+
+ dc.Blit( mTitleRowStart,
+ height - mVertGap - BORDER_SZ - mTitleHeight,
+ mTitleRowLen, mTitleHeight,
+ &tmpDc, 0,0, wxCOPY );
+}
+//---------------------------------------------------------------------------
+int wxPaggedWindow::HitTest( const wxPoint& pos )
+{
+ return wxTabbedWindow::HitTest( pos );
+}
+//---------------------------------------------------------------------------
+void wxPaggedWindow::RecalcLayout(bool andRepaint)
+{
+ mTitleRowLen = mAdjustableTitleRowLen;
+
+ if ( int(mpTabScroll) == -1 ) return;
+
+ // scroll bars should be created after Create() for this window is called
+ if ( !mpTabScroll )
+ {
+ mpTabScroll =
+ new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_HORIZONTAL );
+
+ mpHorizScroll =
+ new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_HORIZONTAL );
+ if (!mNoVertScroll) // Vertical Scroll (Original)
+ mpVertScroll = new wxScrollBar( this, -1, wxDefaultPosition, wxDefaultSize, wxSB_VERTICAL );
+ }
+
+ {
+ int units = GetWholeTabRowLen() / 20;
+
+ mpTabScroll->SetScrollbar( 0, 1, units, 1, FALSE );
+ }
+
+ // resetup position of the active tab
+
+ int thumbLen = 16; // FOR NOW:: hardcoded
+
+ int width, height;
+ GetClientSize( &width, &height );
+
+ mTitleHeight = thumbLen;
+
+ int curX = mHorizGap + BORDER_SZ;
+ int curY = mVertGap + BORDER_SZ;
+
+ int xSize;
+ if (!mNoVertScroll) // Vertical Scroll (Original)
+ xSize = width - mHorizGap*2 - BORDER_SZ*2 - thumbLen;
+ else
+ xSize = width - mHorizGap*2 - BORDER_SZ*2;
+
+ int ySize = height - mVertGap*2 - BORDER_SZ*2 - mTitleHeight;
+
+ SizeTabs( curX, curY, xSize, ySize, andRepaint );
+
+ // setup title bar LINES's horizontal scroll bar
+
+ curY = height - mVertGap - BORDER_SZ - thumbLen;
+
+ mpTabScroll->SetSize( curX, curY, thumbLen*2, thumbLen );
+
+ // setup view's HORIZONTAL scroll bar
+ curX += thumbLen*2;
+
+ mTitleRowStart = curX;
+ mFirstTitleGap = curX + mCurentRowOfs + mTabTrianGap;
+
+ mTitleRowLen = wxMin( mAdjustableTitleRowLen,
+ width - mHorizGap - BORDER_SZ - thumbLen*4 - curX );
+
+ curX += mTitleRowLen;
+
+ if (!mNoVertScroll) // Vertical Scroll (Original)
+ mpHorizScroll->SetSize( curX, curY,width - curX - mHorizGap - BORDER_SZ - thumbLen, thumbLen );
+ else
+ mpHorizScroll->SetSize( curX, curY,width - curX - mHorizGap - BORDER_SZ-4, thumbLen );
+
+ // setup view's VERTICAL scroll bar
+ if (!mNoVertScroll) // Vertical Scroll (Original)
+ {
+ curX = width - mHorizGap - BORDER_SZ - thumbLen;
+ curY = mVertGap + BORDER_SZ;
+ mpVertScroll->SetSize( curX, curY, thumbLen,height - curY - mVertGap - BORDER_SZ - thumbLen);
+ }
+ // layout tab title bars
+
+ mLayoutType = wxTITLE_IMG_AND_TEXT;
+
+ wxNode* pNode = mTabs.First();
+
+ while( pNode )
+ {
+ twTabInfo& tab = *((twTabInfo*)(pNode->Data()));
+
+ wxWindowDC dc(this);
+
+ long w,h;
+
+ // set select default font of the window into it's device context
+ dc.SetFont( GetLabelingFont() );
+ dc.GetTextExtent(tab.mText, &w, &h );
+
+ tab.mDims.x = w + tab.ImageToTxtGap(mImageTextGap) +
+ tab.ImgWidth() + mTitleHorizGap*2;
+
+ tab.mDims.y = mTitleHeight;
+
+ pNode = pNode->Next();
+ }
+
+ // disable title-bar scroller if there's nowhere to scroll to
+
+ mpTabScroll->Enable( mTitleRowLen < GetWholeTabRowLen() || mCurentRowOfs < 0 );
+}
+//---------------------------------------------------------------------------
+// event handlers
+//---------------------------------------------------------------------------
+void wxPaggedWindow::OnPaint( wxPaintEvent& event )
+{
+ wxPaintDC dc(this);
+ DrawDecorations( dc );
+}
+//---------------------------------------------------------------------------
+void wxPaggedWindow::OnSize ( wxSizeEvent& event )
+{
+ wxTabbedWindow::OnSize(event);
+}
+//---------------------------------------------------------------------------
+void wxPaggedWindow::OnLButtonDown( wxMouseEvent& event )
+{
+ if ( mCursorChanged )
+ {
+ mIsDragged = TRUE;
+ mDagOrigin = event.m_x;
+
+ mOriginalTitleRowLen = mAdjustableTitleRowLen;
+
+ CaptureMouse();
+ }
+ else
+ {
+ wxTabbedWindow::OnLButtonDown( event );
+ }
+}
+//---------------------------------------------------------------------------
+void wxPaggedWindow::OnLButtonUp( wxMouseEvent& event )
+{
+ if ( mIsDragged )
+ {
+ mIsDragged = FALSE;
+ mCursorChanged = FALSE;
+ SetCursor( mNormalCursor );
+
+ ReleaseMouse();
+ }
+}
+//---------------------------------------------------------------------------
+void wxPaggedWindow::OnMouseMove( wxMouseEvent& event )
+{
+ int width, height;
+ GetClientSize( &width, &height );
+
+ if ( !mIsDragged )
+ {
+ int y = height - mVertGap - BORDER_SZ - mTitleHeight;
+ int x = mTitleRowStart + mTitleRowLen - 6;
+
+ if ( event.m_x >= x && event.m_y >= y &&
+ event.m_x < x + 6 &&
+ event.m_y < y + mTitleHeight
+ )
+ {
+ if ( !mCursorChanged )
+ {
+ SetCursor( mResizeCursor );
+
+ mCursorChanged = TRUE;
+ }
+ }
+ else
+ if ( mCursorChanged )
+ {
+ SetCursor( mNormalCursor );
+
+ mCursorChanged = FALSE;
+ }
+ }
+ else
+ if ( mIsDragged )
+ {
+ mAdjustableTitleRowLen = mOriginalTitleRowLen + ( event.m_x - mDagOrigin );
+
+ // FOR NOW:: fixed
+ if ( mAdjustableTitleRowLen < 6 ) mAdjustableTitleRowLen = 6;
+
+ wxWindowDC dc(this);
+ DrawDecorations( dc );
+
+ RecalcLayout(FALSE);
+
+ //Refresh();
+ }
+}
+//---------------------------------------------------------------------------
+void wxPaggedWindow::OnScroll( wxScrollEvent& event )
+{
+
+ wxScrollBar* pSender = (wxScrollBar*)event.GetEventObject();
+ // wxMessageBox("wxPaggedWindow::OnScroll","-I->");
+ if ( pSender == mpTabScroll )
+ {
+
+ int maxUnits = GetWholeTabRowLen() / 20;
+
+ mCurentRowOfs = -event.GetPosition()*maxUnits;
+
+ mFirstTitleGap = mTitleRowStart + mCurentRowOfs + mTabTrianGap;
+
+ // let' it automatically disable itself if it's time
+ mpTabScroll->Enable( mTitleRowLen < GetWholeTabRowLen() || mCurentRowOfs < 0 );
+
+ // repaint title bars
+ wxWindowDC dc(this);
+ DrawDecorations( dc );
+ }
+ else
+ if ( !mScrollEventInProgress )
+ {
+ mScrollEventInProgress = TRUE;
+
+ GetActiveTab()->GetEventHandler()->ProcessEvent( event );
+ }
+ else
+ {
+ // event bounced back to us, from here we
+ // know that it has traveled the loop - thus it's processed!
+
+ mScrollEventInProgress = FALSE;
+ }
+}
+//---------------------------------------------------------------------------
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: No names yet.
+// Purpose: Contrib. demo
+// Author: Aleksandras Gluchovas
+// Modified by: 19990908 : mj10777@gmx.net
+// 19990909 :
+// - rename to tabpgwin
+// - restruction of Variable declaration
+// - to prevent Warnings under MingGW32
+// Modified by: 19990909 : mj10777@gmx.net
+// - mNoVertScroll TRUE = no / FALSE = Original Code
+// the Original Code Paints a Vertical Scroll in wxPaggedWindow
+// which is not needed in this Version. Use TRUE for this.
+// Created: 07/09/98
+// RCS-ID: $Id$
+// Copyright: (c) Aleksandras Gluchovas
+// Licence: wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef __CONTROLAREA_G__
+#define __CONTROLAREA_G__
+
+#ifdef __GNUG__
+#pragma interface "controlarea.h"
+#endif
+
+#include "wx/defs.h"
+#include "wx/window.h"
+#include "wx/string.h"
+
+#define WXCONTROLAREA_VERSION 1.0
+
+// layout types for title bars of the tabs
+// (are selected up by evaluating the available free space )
+
+class twTabInfo; // forward decl.
+
+#define wxTITLE_IMG_AND_TEXT 0
+#define wxTITLE_IMG_ONLY 1
+#define wxTITLE_BORDER_ONLY 2
+
+/*
+ * class manages and decorates contained "tab"-windows.
+ * Draws decorations similar to those in "Project Workplace"
+ * of Microsoft Developer Studio 4.xx
+ */
+
+class wxTabbedWindow : public wxPanel
+{
+ DECLARE_DYNAMIC_CLASS( wxTabbedWindow )
+
+public:
+
+ friend class wxTabbedWindowSerializer;
+
+ wxList mTabs;
+ void HideInactiveTabs( bool andRepaint );
+
+ // overrride,to provide different font for tab-labels
+
+ virtual wxFont GetLabelingFont();
+
+ // FOR NOW:: scrollbars are actually related to wxPaggedWindow
+
+ wxScrollBar* mpTabScroll;
+ wxScrollBar* mpHorizScroll;
+ wxScrollBar* mpVertScroll;
+
+public:
+
+ // public properties (invoke ReclaclLayout(TRUE) to apply changes)
+
+ int mVertGap; // default: 3
+ int mHorizGap; // default: 5
+ int mTitleVertGap; // default: 3
+ int mTitleHorizGap; // default: 4
+ int mImageTextGap; // default: 2
+ int mFirstTitleGap; // default: 11
+ int mBorderOnlyWidth; // default: 8
+
+ wxPen mWhitePen; // default: RGB(255,255,255)
+ wxPen mGrayPen; // default: RGB(192,192,192)
+ wxPen mDarkPen; // default: RGB(128,128,128)
+ wxPen mBlackPen; // default: RGB( 0, 0, 0)
+
+ int mActiveTab;
+ int mTitleHeight;
+ int mLayoutType;
+
+ // notifications (can be handled by derivatives)
+
+ virtual void OnTabAdded( twTabInfo* pInfo ) {}
+
+ virtual void SizeTabs(int x,int y, int width, int height, bool repant);
+
+public:
+ wxTabbedWindow();
+ virtual ~wxTabbedWindow();
+
+ // tabs can be also added when the window is
+ // already displayed - "on the fly"
+
+ virtual void AddTab( wxWindow* pContent, // contained window
+ wxString tabText, // tab label
+ wxString imageFileName = "", // if "", only text label is displayed
+ long imageType = wxBITMAP_TYPE_BMP );
+
+ // NOTE:: if this AddTab(..) overload is called, the
+ // image bitmap will not be serialized (if performed),
+ // use the above method instead, so that images could
+ // be restored using the given file names
+
+ virtual void AddTab( wxWindow* pContent,
+ wxString tabText,
+ wxBitmap* pImage = NULL );
+
+ virtual void RemoveTab( int tabNo );
+
+ /* misc accessors */
+
+ virtual int GetTabCount();
+ virtual wxWindow* GetTab( int tabNo );
+ virtual wxWindow* GetActiveTab();
+ virtual void SetActiveTab( int tabNo );
+
+ void DrawShadedRect( int x, int y, int width, int height,
+ wxPen& upperPen, wxPen& lowerPen, wxDC& dc );
+
+ virtual void DrawDecorations( wxDC& dc );
+
+ // return -1, if non of the title bars was hitted,
+ // otherwise the index of the hitted tab title bar
+
+ virtual int HitTest( const wxPoint& pos );
+
+ // should be invoked to redisplay window with changed properties
+
+ virtual void RecalcLayout( bool andRepaint = TRUE );
+
+ // event handlers
+
+ void OnPaint( wxPaintEvent& event );
+ void OnSize ( wxSizeEvent& event );
+
+ void OnBkErase( wxEraseEvent& event );
+ void OnLButtonDown( wxMouseEvent& event );
+
+ DECLARE_EVENT_TABLE()
+};
+
+/*
+ * class manages and decorates contained "sheets" (or pages).
+ * Draws decorations similar to those in "Output window"
+ * of Microsoft Developer Studio 4.xx
+ */
+
+class wxPaggedWindow : public wxTabbedWindow
+{
+ DECLARE_DYNAMIC_CLASS( wxPaggedWindow )
+ // the protected: public: changes prevents Warnings in gcc
+protected:
+ bool mScrollEventInProgress;
+public:
+ int mTabTrianGap;
+ wxBrush mWhiteBrush;
+ wxBrush mGrayBrush;
+ int mCurentRowOfs;
+ int mAdjustableTitleRowLen; // setup by dragging mini-sash
+ // with the mosue pointer
+protected:
+ // drag&drop state variables
+ bool mIsDragged;
+ int mDagOrigin;
+ bool mCursorChanged;
+ wxCursor mResizeCursor;
+ wxCursor mNormalCursor;
+ int mOriginalTitleRowLen;
+
+public:
+ int mTitleRowStart;
+ int mResizeNailGap;
+ int mTitleRowLen; // actual title row length
+ int mNoVertScroll; // No Vertical Scroll TRUE/FALSE
+
+ void DrawPaperBar( twTabInfo& tab, int x, int y,
+ wxBrush& brush, wxPen& pen, wxDC& dc );
+
+ int GetWholeTabRowLen();
+
+ // adjusts scorllbars to fit around tabs
+
+ virtual void OnTabAdded( twTabInfo* pInfo );
+
+ // sets smaller font for page-labels
+
+ virtual wxFont GetLabelingFont();
+
+public:
+
+
+public:
+ wxPaggedWindow();
+ ~wxPaggedWindow();
+
+ // NOTE:: use public methods of the base class
+ // to add "pages" to this window
+
+ /* misc accessors */
+
+ // below two methods should be called after
+ // the tabs were added (AddTab(..)). Set up
+ // these scrollbars to match the needs of the
+ // tabs added into this area
+
+ wxScrollBar& GetVerticalScrollBar();
+ wxScrollBar& GetHorizontalScrollBar();
+
+ virtual void DrawDecorations( wxDC& dc );
+
+ // return -1, if non of the title bars was hitted,
+ // otherwise the index of the hitted tab title bar
+
+ virtual int HitTest( const wxPoint& pos );
+
+ virtual void RecalcLayout( bool andRepaint = TRUE );
+
+ // event handlers
+
+ void OnPaint( wxPaintEvent& event );
+ void OnSize ( wxSizeEvent& event );
+ void OnLButtonDown( wxMouseEvent& event );
+ void OnLButtonUp ( wxMouseEvent& event );
+ void OnMouseMove ( wxMouseEvent& event );
+ void OnScroll ( wxScrollEvent& event );
+
+ DECLARE_EVENT_TABLE()
+};
+
+// helper structure of wxTabbedWindow
+
+class twTabInfo : public wxObject
+{
+ DECLARE_DYNAMIC_CLASS( twTabInfo )
+public:
+ twTabInfo();
+ ~twTabInfo();
+
+ int ImgWidth();
+ int ImgHeight();
+ int ImageToTxtGap( int prefGap );
+
+ bool HasImg();
+ wxBitmap& GetImg();
+ // bool HasText();
+ unsigned int HasText();
+ wxString& GetText();
+ wxWindow& GetContent();
+
+public:
+ wxWindow* mpContent;
+ wxBitmap mBitMap;
+
+ wxString mText;
+ wxSize mDims;
+
+ // used for serialization
+ wxString mImageFile;
+ long mImageType;
+
+};
+
+#endif