]> git.saurik.com Git - wxWidgets.git/commitdiff
First version of the DbBrowser demo program
authorGeorge Tasker <gtasker@allenbrook.com>
Fri, 28 Jan 2000 15:25:32 +0000 (15:25 +0000)
committerGeorge Tasker <gtasker@allenbrook.com>
Fri, 28 Jan 2000 15:25:32 +0000 (15:25 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5715 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

124 files changed:
demos/dbbrowse/bitmaps/col.ico [new file with mode: 0644]
demos/dbbrowse/bitmaps/col.xpm [new file with mode: 0644]
demos/dbbrowse/bitmaps/d_closed.ico [new file with mode: 0644]
demos/dbbrowse/bitmaps/d_closed.xpm [new file with mode: 0644]
demos/dbbrowse/bitmaps/d_open.ico [new file with mode: 0644]
demos/dbbrowse/bitmaps/d_open.xpm [new file with mode: 0644]
demos/dbbrowse/bitmaps/dsn.ico [new file with mode: 0644]
demos/dbbrowse/bitmaps/dsn.xpm [new file with mode: 0644]
demos/dbbrowse/bitmaps/dsnclose.ico [new file with mode: 0644]
demos/dbbrowse/bitmaps/dsnclose.xpm [new file with mode: 0644]
demos/dbbrowse/bitmaps/dsnopen.ico [new file with mode: 0644]
demos/dbbrowse/bitmaps/dsnopen.xpm [new file with mode: 0644]
demos/dbbrowse/bitmaps/f_closed.ico [new file with mode: 0644]
demos/dbbrowse/bitmaps/f_closed.xpm [new file with mode: 0644]
demos/dbbrowse/bitmaps/f_open.ico [new file with mode: 0644]
demos/dbbrowse/bitmaps/f_open.xpm [new file with mode: 0644]
demos/dbbrowse/bitmaps/key.ico [new file with mode: 0644]
demos/dbbrowse/bitmaps/key.xpm [new file with mode: 0644]
demos/dbbrowse/bitmaps/keyf.ico [new file with mode: 0644]
demos/dbbrowse/bitmaps/keyf.xpm [new file with mode: 0644]
demos/dbbrowse/bitmaps/logo.ico [new file with mode: 0644]
demos/dbbrowse/bitmaps/logo.xpm [new file with mode: 0644]
demos/dbbrowse/bitmaps/pgmctrl.bmp [new file with mode: 0644]
demos/dbbrowse/bitmaps/pgmctrl.ico [new file with mode: 0644]
demos/dbbrowse/bitmaps/pgmctrl.xpm [new file with mode: 0644]
demos/dbbrowse/bitmaps/tab.ico [new file with mode: 0644]
demos/dbbrowse/bitmaps/tab.xpm [new file with mode: 0644]
demos/dbbrowse/browsedb.cpp [new file with mode: 0644]
demos/dbbrowse/browsedb.h [new file with mode: 0644]
demos/dbbrowse/dbbrowse.cpp [new file with mode: 0644]
demos/dbbrowse/dbbrowse.h [new file with mode: 0644]
demos/dbbrowse/dbbrowse.rc [new file with mode: 0644]
demos/dbbrowse/dbgrid.cpp [new file with mode: 0644]
demos/dbbrowse/dbgrid.h [new file with mode: 0644]
demos/dbbrowse/dbtree.cpp [new file with mode: 0644]
demos/dbbrowse/dbtree.h [new file with mode: 0644]
demos/dbbrowse/de/de.po [new file with mode: 0644]
demos/dbbrowse/de/help.mo [new file with mode: 0644]
demos/dbbrowse/de/help.po [new file with mode: 0644]
demos/dbbrowse/de/mo.cmd [new file with mode: 0755]
demos/dbbrowse/de/mo_de.cmd [new file with mode: 0755]
demos/dbbrowse/de/pgmtext.mo [new file with mode: 0644]
demos/dbbrowse/de/pgmtext.po [new file with mode: 0644]
demos/dbbrowse/de/wxstd.mo [new file with mode: 0644]
demos/dbbrowse/de/xget.cfg [new file with mode: 0644]
demos/dbbrowse/de/xget.cmd [new file with mode: 0755]
demos/dbbrowse/dlguser.cpp [new file with mode: 0644]
demos/dbbrowse/dlguser.h [new file with mode: 0644]
demos/dbbrowse/doc.cpp [new file with mode: 0644]
demos/dbbrowse/doc.h [new file with mode: 0644]
demos/dbbrowse/fr/wxstd.mo [new file with mode: 0644]
demos/dbbrowse/g.cmd [new file with mode: 0755]
demos/dbbrowse/go.cmd [new file with mode: 0755]
demos/dbbrowse/gogcc.cmd [new file with mode: 0755]
demos/dbbrowse/govc.cmd [new file with mode: 0755]
demos/dbbrowse/help.cz/wxstd.mo [new file with mode: 0644]
demos/dbbrowse/help.de/compiler.htm [new file with mode: 0644]
demos/dbbrowse/help.de/dbbrowse.hhc [new file with mode: 0644]
demos/dbbrowse/help.de/dbbrowse.hhk [new file with mode: 0644]
demos/dbbrowse/help.de/dbbrowse.hhp [new file with mode: 0644]
demos/dbbrowse/help.de/dbbrowse.htm [new file with mode: 0644]
demos/dbbrowse/help.de/getcol.htm [new file with mode: 0644]
demos/dbbrowse/help.de/getcolsh.htm [new file with mode: 0644]
demos/dbbrowse/help.de/icons.htm [new file with mode: 0644]
demos/dbbrowse/help.de/picgrams.htm [new file with mode: 0644]
demos/dbbrowse/help.de/problems.htm [new file with mode: 0644]
demos/dbbrowse/help.de/remstar.htm [new file with mode: 0644]
demos/dbbrowse/help.de/sample.htm [new file with mode: 0644]
demos/dbbrowse/help.de/startprm.htm [new file with mode: 0644]
demos/dbbrowse/help.de/todo.htm [new file with mode: 0644]
demos/dbbrowse/help.de/wxdb.htm [new file with mode: 0644]
demos/dbbrowse/help.de/wxtable.htm [new file with mode: 0644]
demos/dbbrowse/help.png/col.png [new file with mode: 0644]
demos/dbbrowse/help.png/d_closed.png [new file with mode: 0644]
demos/dbbrowse/help.png/d_open.png [new file with mode: 0644]
demos/dbbrowse/help.png/dsn.png [new file with mode: 0644]
demos/dbbrowse/help.png/dsnclose.png [new file with mode: 0644]
demos/dbbrowse/help.png/dsnopen.png [new file with mode: 0644]
demos/dbbrowse/help.png/f_closed.png [new file with mode: 0644]
demos/dbbrowse/help.png/f_open.png [new file with mode: 0644]
demos/dbbrowse/help.png/gnu.png [new file with mode: 0644]
demos/dbbrowse/help.png/gtk.png [new file with mode: 0644]
demos/dbbrowse/help.png/imbau.png [new file with mode: 0644]
demos/dbbrowse/help.png/kde.png [new file with mode: 0644]
demos/dbbrowse/help.png/key.png [new file with mode: 0644]
demos/dbbrowse/help.png/keyf.png [new file with mode: 0644]
demos/dbbrowse/help.png/linux.png [new file with mode: 0644]
demos/dbbrowse/help.png/logo.png [new file with mode: 0644]
demos/dbbrowse/help.png/motif.png [new file with mode: 0644]
demos/dbbrowse/help.png/msvc.png [new file with mode: 0644]
demos/dbbrowse/help.png/odbc.png [new file with mode: 0644]
demos/dbbrowse/help.png/pgmctrl.png [new file with mode: 0644]
demos/dbbrowse/help.png/redh.png [new file with mode: 0644]
demos/dbbrowse/help.png/remstar.png [new file with mode: 0644]
demos/dbbrowse/help.png/server.png [new file with mode: 0644]
demos/dbbrowse/help.png/suse.png [new file with mode: 0644]
demos/dbbrowse/help.png/tab.png [new file with mode: 0644]
demos/dbbrowse/help.png/winnt.png [new file with mode: 0644]
demos/dbbrowse/help.png/wins.png [new file with mode: 0644]
demos/dbbrowse/help.std/compiler.htm [new file with mode: 0644]
demos/dbbrowse/help.std/dbbrowse.hhc [new file with mode: 0644]
demos/dbbrowse/help.std/dbbrowse.hhk [new file with mode: 0644]
demos/dbbrowse/help.std/dbbrowse.hhp [new file with mode: 0644]
demos/dbbrowse/help.std/dbbrowse.htm [new file with mode: 0644]
demos/dbbrowse/help.std/getcol.htm [new file with mode: 0644]
demos/dbbrowse/help.std/getcolsh.htm [new file with mode: 0644]
demos/dbbrowse/help.std/icons.htm [new file with mode: 0644]
demos/dbbrowse/help.std/picgrams.htm [new file with mode: 0644]
demos/dbbrowse/help.std/problems.htm [new file with mode: 0644]
demos/dbbrowse/help.std/remstar.htm [new file with mode: 0644]
demos/dbbrowse/help.std/sample.htm [new file with mode: 0644]
demos/dbbrowse/help.std/startprm.htm [new file with mode: 0644]
demos/dbbrowse/help.std/todo.htm [new file with mode: 0644]
demos/dbbrowse/help.std/wxdb.htm [new file with mode: 0644]
demos/dbbrowse/help.std/wxtable.htm [new file with mode: 0644]
demos/dbbrowse/makefile.g95 [new file with mode: 0644]
demos/dbbrowse/makefile.gtk [new file with mode: 0644]
demos/dbbrowse/makefile.vc [new file with mode: 0644]
demos/dbbrowse/o.cmd [new file with mode: 0755]
demos/dbbrowse/pgmctrl.cpp [new file with mode: 0644]
demos/dbbrowse/pgmctrl.h [new file with mode: 0644]
demos/dbbrowse/std.h [new file with mode: 0644]
demos/dbbrowse/tabpgwin.cpp [new file with mode: 0644]
demos/dbbrowse/tabpgwin.h [new file with mode: 0644]

diff --git a/demos/dbbrowse/bitmaps/col.ico b/demos/dbbrowse/bitmaps/col.ico
new file mode 100644 (file)
index 0000000..954d8cd
Binary files /dev/null and b/demos/dbbrowse/bitmaps/col.ico differ
diff --git a/demos/dbbrowse/bitmaps/col.xpm b/demos/dbbrowse/bitmaps/col.xpm
new file mode 100644 (file)
index 0000000..81cc251
--- /dev/null
@@ -0,0 +1,23 @@
+/* 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
diff --git a/demos/dbbrowse/bitmaps/d_closed.ico b/demos/dbbrowse/bitmaps/d_closed.ico
new file mode 100644 (file)
index 0000000..b7c633c
Binary files /dev/null and b/demos/dbbrowse/bitmaps/d_closed.ico differ
diff --git a/demos/dbbrowse/bitmaps/d_closed.xpm b/demos/dbbrowse/bitmaps/d_closed.xpm
new file mode 100644 (file)
index 0000000..a32bbd2
--- /dev/null
@@ -0,0 +1,26 @@
+/* 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
diff --git a/demos/dbbrowse/bitmaps/d_open.ico b/demos/dbbrowse/bitmaps/d_open.ico
new file mode 100644 (file)
index 0000000..449ccd3
Binary files /dev/null and b/demos/dbbrowse/bitmaps/d_open.ico differ
diff --git a/demos/dbbrowse/bitmaps/d_open.xpm b/demos/dbbrowse/bitmaps/d_open.xpm
new file mode 100644 (file)
index 0000000..72eb00f
--- /dev/null
@@ -0,0 +1,26 @@
+/* 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
diff --git a/demos/dbbrowse/bitmaps/dsn.ico b/demos/dbbrowse/bitmaps/dsn.ico
new file mode 100644 (file)
index 0000000..4881d8a
Binary files /dev/null and b/demos/dbbrowse/bitmaps/dsn.ico differ
diff --git a/demos/dbbrowse/bitmaps/dsn.xpm b/demos/dbbrowse/bitmaps/dsn.xpm
new file mode 100644 (file)
index 0000000..4647696
--- /dev/null
@@ -0,0 +1,23 @@
+/* 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
diff --git a/demos/dbbrowse/bitmaps/dsnclose.ico b/demos/dbbrowse/bitmaps/dsnclose.ico
new file mode 100644 (file)
index 0000000..45dbb73
Binary files /dev/null and b/demos/dbbrowse/bitmaps/dsnclose.ico differ
diff --git a/demos/dbbrowse/bitmaps/dsnclose.xpm b/demos/dbbrowse/bitmaps/dsnclose.xpm
new file mode 100644 (file)
index 0000000..abc9cc8
--- /dev/null
@@ -0,0 +1,23 @@
+/* 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
diff --git a/demos/dbbrowse/bitmaps/dsnopen.ico b/demos/dbbrowse/bitmaps/dsnopen.ico
new file mode 100644 (file)
index 0000000..989fdc8
Binary files /dev/null and b/demos/dbbrowse/bitmaps/dsnopen.ico differ
diff --git a/demos/dbbrowse/bitmaps/dsnopen.xpm b/demos/dbbrowse/bitmaps/dsnopen.xpm
new file mode 100644 (file)
index 0000000..a492926
--- /dev/null
@@ -0,0 +1,23 @@
+/* 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
diff --git a/demos/dbbrowse/bitmaps/f_closed.ico b/demos/dbbrowse/bitmaps/f_closed.ico
new file mode 100644 (file)
index 0000000..387080e
Binary files /dev/null and b/demos/dbbrowse/bitmaps/f_closed.ico differ
diff --git a/demos/dbbrowse/bitmaps/f_closed.xpm b/demos/dbbrowse/bitmaps/f_closed.xpm
new file mode 100644 (file)
index 0000000..1336999
--- /dev/null
@@ -0,0 +1,28 @@
+/* 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
diff --git a/demos/dbbrowse/bitmaps/f_open.ico b/demos/dbbrowse/bitmaps/f_open.ico
new file mode 100644 (file)
index 0000000..84c781f
Binary files /dev/null and b/demos/dbbrowse/bitmaps/f_open.ico differ
diff --git a/demos/dbbrowse/bitmaps/f_open.xpm b/demos/dbbrowse/bitmaps/f_open.xpm
new file mode 100644 (file)
index 0000000..08eac38
--- /dev/null
@@ -0,0 +1,28 @@
+/* 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
diff --git a/demos/dbbrowse/bitmaps/key.ico b/demos/dbbrowse/bitmaps/key.ico
new file mode 100644 (file)
index 0000000..31a188f
Binary files /dev/null and b/demos/dbbrowse/bitmaps/key.ico differ
diff --git a/demos/dbbrowse/bitmaps/key.xpm b/demos/dbbrowse/bitmaps/key.xpm
new file mode 100644 (file)
index 0000000..12f98d5
--- /dev/null
@@ -0,0 +1,26 @@
+/* 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
diff --git a/demos/dbbrowse/bitmaps/keyf.ico b/demos/dbbrowse/bitmaps/keyf.ico
new file mode 100644 (file)
index 0000000..0b68df4
Binary files /dev/null and b/demos/dbbrowse/bitmaps/keyf.ico differ
diff --git a/demos/dbbrowse/bitmaps/keyf.xpm b/demos/dbbrowse/bitmaps/keyf.xpm
new file mode 100644 (file)
index 0000000..6165e25
--- /dev/null
@@ -0,0 +1,26 @@
+/* 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
diff --git a/demos/dbbrowse/bitmaps/logo.ico b/demos/dbbrowse/bitmaps/logo.ico
new file mode 100644 (file)
index 0000000..a7f64e2
Binary files /dev/null and b/demos/dbbrowse/bitmaps/logo.ico differ
diff --git a/demos/dbbrowse/bitmaps/logo.xpm b/demos/dbbrowse/bitmaps/logo.xpm
new file mode 100644 (file)
index 0000000..c7aaa65
--- /dev/null
@@ -0,0 +1,23 @@
+/* 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
diff --git a/demos/dbbrowse/bitmaps/pgmctrl.bmp b/demos/dbbrowse/bitmaps/pgmctrl.bmp
new file mode 100644 (file)
index 0000000..2acad38
Binary files /dev/null and b/demos/dbbrowse/bitmaps/pgmctrl.bmp differ
diff --git a/demos/dbbrowse/bitmaps/pgmctrl.ico b/demos/dbbrowse/bitmaps/pgmctrl.ico
new file mode 100644 (file)
index 0000000..2d650d5
Binary files /dev/null and b/demos/dbbrowse/bitmaps/pgmctrl.ico differ
diff --git a/demos/dbbrowse/bitmaps/pgmctrl.xpm b/demos/dbbrowse/bitmaps/pgmctrl.xpm
new file mode 100644 (file)
index 0000000..5edc5b4
--- /dev/null
@@ -0,0 +1,27 @@
+/* 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
diff --git a/demos/dbbrowse/bitmaps/tab.ico b/demos/dbbrowse/bitmaps/tab.ico
new file mode 100644 (file)
index 0000000..a6f34b2
Binary files /dev/null and b/demos/dbbrowse/bitmaps/tab.ico differ
diff --git a/demos/dbbrowse/bitmaps/tab.xpm b/demos/dbbrowse/bitmaps/tab.xpm
new file mode 100644 (file)
index 0000000..198540a
--- /dev/null
@@ -0,0 +1,26 @@
+/* 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
diff --git a/demos/dbbrowse/browsedb.cpp b/demos/dbbrowse/browsedb.cpp
new file mode 100644 (file)
index 0000000..3ee7463
--- /dev/null
@@ -0,0 +1,549 @@
+//---------------------------------------------------------------------------
+// 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]   = "";
+}
+//----------------------------------------------------------------------------------------
diff --git a/demos/dbbrowse/browsedb.h b/demos/dbbrowse/browsedb.h
new file mode 100644 (file)
index 0000000..dd273a8
--- /dev/null
@@ -0,0 +1,76 @@
+//---------------------------------------------------------------------------
+// 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
+//---------------------------------------------------------------------------
diff --git a/demos/dbbrowse/dbbrowse.cpp b/demos/dbbrowse/dbbrowse.cpp
new file mode 100644 (file)
index 0000000..a903ac0
--- /dev/null
@@ -0,0 +1,351 @@
+//------------------------------------------------------------------------------
+// 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");
+}
+//---------------------------------------------------------------------------
diff --git a/demos/dbbrowse/dbbrowse.h b/demos/dbbrowse/dbbrowse.h
new file mode 100644 (file)
index 0000000..1dd7046
--- /dev/null
@@ -0,0 +1,54 @@
+//------------------------------------------------------------------------------
+// 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
+//------------------------------------------------------------------------------
diff --git a/demos/dbbrowse/dbbrowse.rc b/demos/dbbrowse/dbbrowse.rc
new file mode 100644 (file)
index 0000000..a1f52e2
--- /dev/null
@@ -0,0 +1,15 @@
+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"
diff --git a/demos/dbbrowse/dbgrid.cpp b/demos/dbbrowse/dbgrid.cpp
new file mode 100644 (file)
index 0000000..9cbb930
--- /dev/null
@@ -0,0 +1,371 @@
+//---------------------------------------------------------------------------
+// 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();
+}
+//---------------------------------------------------------------------------
diff --git a/demos/dbbrowse/dbgrid.h b/demos/dbbrowse/dbgrid.h
new file mode 100644 (file)
index 0000000..85094de
--- /dev/null
@@ -0,0 +1,58 @@
+//---------------------------------------------------------------------------
+// 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
+//------------------------------------------------------------------------------
diff --git a/demos/dbbrowse/dbtree.cpp b/demos/dbbrowse/dbtree.cpp
new file mode 100644 (file)
index 0000000..d262e2f
--- /dev/null
@@ -0,0 +1,377 @@
+//---------------------------------------------------------------------------
+// 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();
+}
+//------------------------------------------------------------------------------
diff --git a/demos/dbbrowse/dbtree.h b/demos/dbbrowse/dbtree.h
new file mode 100644 (file)
index 0000000..7edfbb4
--- /dev/null
@@ -0,0 +1,84 @@
+//---------------------------------------------------------------------------
+// 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
+//------------------------------------------------------------------------------
diff --git a/demos/dbbrowse/de/de.po b/demos/dbbrowse/de/de.po
new file mode 100644 (file)
index 0000000..c8847bb
--- /dev/null
@@ -0,0 +1,1643 @@
+# 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"
diff --git a/demos/dbbrowse/de/help.mo b/demos/dbbrowse/de/help.mo
new file mode 100644 (file)
index 0000000..51f289f
Binary files /dev/null and b/demos/dbbrowse/de/help.mo differ
diff --git a/demos/dbbrowse/de/help.po b/demos/dbbrowse/de/help.po
new file mode 100644 (file)
index 0000000..83fe6fe
--- /dev/null
@@ -0,0 +1,133 @@
+# 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  ""
diff --git a/demos/dbbrowse/de/mo.cmd b/demos/dbbrowse/de/mo.cmd
new file mode 100755 (executable)
index 0000000..b9b8808
--- /dev/null
@@ -0,0 +1,2 @@
+msgfmt -o PgmText.mo PgmText.po
+msgfmt -o Help.mo Help.po
diff --git a/demos/dbbrowse/de/mo_de.cmd b/demos/dbbrowse/de/mo_de.cmd
new file mode 100755 (executable)
index 0000000..722caf2
--- /dev/null
@@ -0,0 +1 @@
+msgfmt -o wxStd.mo de.po
diff --git a/demos/dbbrowse/de/pgmtext.mo b/demos/dbbrowse/de/pgmtext.mo
new file mode 100644 (file)
index 0000000..f83f41d
Binary files /dev/null and b/demos/dbbrowse/de/pgmtext.mo differ
diff --git a/demos/dbbrowse/de/pgmtext.po b/demos/dbbrowse/de/pgmtext.po
new file mode 100644 (file)
index 0000000..d0fac30
--- /dev/null
@@ -0,0 +1,889 @@
+# 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"
diff --git a/demos/dbbrowse/de/wxstd.mo b/demos/dbbrowse/de/wxstd.mo
new file mode 100644 (file)
index 0000000..05be4e9
Binary files /dev/null and b/demos/dbbrowse/de/wxstd.mo differ
diff --git a/demos/dbbrowse/de/xget.cfg b/demos/dbbrowse/de/xget.cfg
new file mode 100644 (file)
index 0000000..dd8ea05
--- /dev/null
@@ -0,0 +1,12 @@
+../BrowserDB.cpp
+../BrowserDB.h
+../DBBrowser.cpp
+../DBBrowser.h
+../DBGrid.cpp
+../DBGrid.h
+../DBTree.cpp
+../DBTree.h
+../Doc.cpp
+../Doc.h
+../PgmCtrl.cpp
+../PgmCtrl.h
diff --git a/demos/dbbrowse/de/xget.cmd b/demos/dbbrowse/de/xget.cmd
new file mode 100755 (executable)
index 0000000..bbd922a
--- /dev/null
@@ -0,0 +1 @@
+   xgettext -C -i -s -j -a -d PgmText -f xget.cfg
diff --git a/demos/dbbrowse/dlguser.cpp b/demos/dbbrowse/dlguser.cpp
new file mode 100644 (file)
index 0000000..d4872af
--- /dev/null
@@ -0,0 +1,70 @@
+//---------------------------------------------------------------------------
+// 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);
+}
+//---------------------------------------------------------------------------
diff --git a/demos/dbbrowse/dlguser.h b/demos/dbbrowse/dlguser.h
new file mode 100644 (file)
index 0000000..859da2c
--- /dev/null
@@ -0,0 +1,33 @@
+//---------------------------------------------------------------------------
+// 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()
+};
+//---------------------------------------------------------------------------
diff --git a/demos/dbbrowse/doc.cpp b/demos/dbbrowse/doc.cpp
new file mode 100644 (file)
index 0000000..806ceaf
--- /dev/null
@@ -0,0 +1,327 @@
+//---------------------------------------------------------------------------
+// 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)
+{
+}
+//----------------------------------------------------------------------------------------
diff --git a/demos/dbbrowse/doc.h b/demos/dbbrowse/doc.h
new file mode 100644 (file)
index 0000000..0604986
--- /dev/null
@@ -0,0 +1,81 @@
+//---------------------------------------------------------------------------
+// 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()
+};
+//---------------------------------------------------------------------------
diff --git a/demos/dbbrowse/fr/wxstd.mo b/demos/dbbrowse/fr/wxstd.mo
new file mode 100644 (file)
index 0000000..89c03ea
Binary files /dev/null and b/demos/dbbrowse/fr/wxstd.mo differ
diff --git a/demos/dbbrowse/g.cmd b/demos/dbbrowse/g.cmd
new file mode 100755 (executable)
index 0000000..164b338
--- /dev/null
@@ -0,0 +1,2 @@
+ DBBrowse
+
diff --git a/demos/dbbrowse/go.cmd b/demos/dbbrowse/go.cmd
new file mode 100755 (executable)
index 0000000..b5db2de
--- /dev/null
@@ -0,0 +1,2 @@
+ set WXWIN=F:\wxWindows
+ nmake -f makefile.vc FINAL=1
diff --git a/demos/dbbrowse/gogcc.cmd b/demos/dbbrowse/gogcc.cmd
new file mode 100755 (executable)
index 0000000..25605df
--- /dev/null
@@ -0,0 +1,5 @@
+ set WXWIN=F:/wxWindows22B
+ set WXWIN=F:/wxWindows
+ make -f makefile.g95
+ rem st
+ set WXWIN=F:\wxWindows
diff --git a/demos/dbbrowse/govc.cmd b/demos/dbbrowse/govc.cmd
new file mode 100755 (executable)
index 0000000..11bfe91
--- /dev/null
@@ -0,0 +1,3 @@
+ set WXWIN=F:\wxWindows22B
+ set WXWIN=F:\wxWindows
+ nmake -f makefile.vc FINAL=1
diff --git a/demos/dbbrowse/help.cz/wxstd.mo b/demos/dbbrowse/help.cz/wxstd.mo
new file mode 100644 (file)
index 0000000..ebceb33
Binary files /dev/null and b/demos/dbbrowse/help.cz/wxstd.mo differ
diff --git a/demos/dbbrowse/help.de/compiler.htm b/demos/dbbrowse/help.de/compiler.htm
new file mode 100644 (file)
index 0000000..d1b8747
--- /dev/null
@@ -0,0 +1,50 @@
+<!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">&nbsp;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">&nbsp;Windows NT 4.0 Server - SP 4</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/msvc.png">&nbsp;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">&nbsp;Windows NT 4.0 Server - SP 4</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/gnu.png">&nbsp;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">&nbsp;Linux - Redhat 6.1</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/gnu.png">&nbsp;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">&nbsp;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"">&nbsp;Linux - SuSE 6.1</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/gnu.png">&nbsp;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">&nbsp;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>
diff --git a/demos/dbbrowse/help.de/dbbrowse.hhc b/demos/dbbrowse/help.de/dbbrowse.hhc
new file mode 100644 (file)
index 0000000..6cc8649
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; 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>
diff --git a/demos/dbbrowse/help.de/dbbrowse.hhk b/demos/dbbrowse/help.de/dbbrowse.hhk
new file mode 100644 (file)
index 0000000..cea1aff
--- /dev/null
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; 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>
diff --git a/demos/dbbrowse/help.de/dbbrowse.hhp b/demos/dbbrowse/help.de/dbbrowse.hhp
new file mode 100644 (file)
index 0000000..cd01ae0
--- /dev/null
@@ -0,0 +1,22 @@
+[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
diff --git a/demos/dbbrowse/help.de/dbbrowse.htm b/demos/dbbrowse/help.de/dbbrowse.htm
new file mode 100644 (file)
index 0000000..35f2aba
--- /dev/null
@@ -0,0 +1,24 @@
+<!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">&nbsp;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>
diff --git a/demos/dbbrowse/help.de/getcol.htm b/demos/dbbrowse/help.de/getcol.htm
new file mode 100644 (file)
index 0000000..a10dd8b
--- /dev/null
@@ -0,0 +1,118 @@
+<!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">&nbsp;Primär- oder <IMG SRC="../help.png/keyf.png">&nbsp;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>
diff --git a/demos/dbbrowse/help.de/getcolsh.htm b/demos/dbbrowse/help.de/getcolsh.htm
new file mode 100644 (file)
index 0000000..08dec3e
--- /dev/null
@@ -0,0 +1,53 @@
+<!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>
diff --git a/demos/dbbrowse/help.de/icons.htm b/demos/dbbrowse/help.de/icons.htm
new file mode 100644 (file)
index 0000000..913caef
--- /dev/null
@@ -0,0 +1,40 @@
+<!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">&nbsp;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">&nbsp;Linux getestet !</B></TH></TR>
+ </TBODY></TABLE>
+ <TABLE border=1><B><TBODY><TR>
+<!//--->
+  <TR><TH bgcolor=#FFFFAA><B><IMG SRC="../help.png/col.png">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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>
diff --git a/demos/dbbrowse/help.de/picgrams.htm b/demos/dbbrowse/help.de/picgrams.htm
new file mode 100644 (file)
index 0000000..37d0545
--- /dev/null
@@ -0,0 +1,37 @@
+<!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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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>
diff --git a/demos/dbbrowse/help.de/problems.htm b/demos/dbbrowse/help.de/problems.htm
new file mode 100644 (file)
index 0000000..cfb8eee
--- /dev/null
@@ -0,0 +1,76 @@
+<!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">&nbsp;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 :&nbsp;<IMG SRC="../help.png/gnu.png">&nbsp;</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 :&nbsp;<IMG SRC="../help.png/gnu.png">&nbsp;</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>
diff --git a/demos/dbbrowse/help.de/remstar.htm b/demos/dbbrowse/help.de/remstar.htm
new file mode 100644 (file)
index 0000000..35869b6
--- /dev/null
@@ -0,0 +1,15 @@
+<!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">&nbsp;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>
diff --git a/demos/dbbrowse/help.de/sample.htm b/demos/dbbrowse/help.de/sample.htm
new file mode 100644 (file)
index 0000000..551e91b
--- /dev/null
@@ -0,0 +1,25 @@
+<!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">&nbsp;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 &lt;TH BGCOLOR=#CCFFCC&gt;<HR>Hintergrundsfarbe für diese teil der Tabelle</B></TH><TH><B>&lt;BODY BGCOLOR=#C6DFC6&gt;<HR>Seitehintergrundsfarbe</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <P><TABLE border=1><B><TBODY><TR bgcolor=#FFF777>
+  <TH><B>Gold &lt;TR BGCOLOR=#FFF777&gt;<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>
diff --git a/demos/dbbrowse/help.de/startprm.htm b/demos/dbbrowse/help.de/startprm.htm
new file mode 100644 (file)
index 0000000..c898d10
--- /dev/null
@@ -0,0 +1,24 @@
+<!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">&nbsp;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>
diff --git a/demos/dbbrowse/help.de/todo.htm b/demos/dbbrowse/help.de/todo.htm
new file mode 100644 (file)
index 0000000..d5dfe8e
--- /dev/null
@@ -0,0 +1,80 @@
+<!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">&nbsp;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>
diff --git a/demos/dbbrowse/help.de/wxdb.htm b/demos/dbbrowse/help.de/wxdb.htm
new file mode 100644 (file)
index 0000000..aef801d
--- /dev/null
@@ -0,0 +1,27 @@
+<!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>
diff --git a/demos/dbbrowse/help.de/wxtable.htm b/demos/dbbrowse/help.de/wxtable.htm
new file mode 100644 (file)
index 0000000..02add93
--- /dev/null
@@ -0,0 +1,15 @@
+<!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">&nbsp;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>
diff --git a/demos/dbbrowse/help.png/col.png b/demos/dbbrowse/help.png/col.png
new file mode 100644 (file)
index 0000000..3496d89
Binary files /dev/null and b/demos/dbbrowse/help.png/col.png differ
diff --git a/demos/dbbrowse/help.png/d_closed.png b/demos/dbbrowse/help.png/d_closed.png
new file mode 100644 (file)
index 0000000..fab0e79
Binary files /dev/null and b/demos/dbbrowse/help.png/d_closed.png differ
diff --git a/demos/dbbrowse/help.png/d_open.png b/demos/dbbrowse/help.png/d_open.png
new file mode 100644 (file)
index 0000000..7e77c77
Binary files /dev/null and b/demos/dbbrowse/help.png/d_open.png differ
diff --git a/demos/dbbrowse/help.png/dsn.png b/demos/dbbrowse/help.png/dsn.png
new file mode 100644 (file)
index 0000000..326d019
Binary files /dev/null and b/demos/dbbrowse/help.png/dsn.png differ
diff --git a/demos/dbbrowse/help.png/dsnclose.png b/demos/dbbrowse/help.png/dsnclose.png
new file mode 100644 (file)
index 0000000..327f5b2
Binary files /dev/null and b/demos/dbbrowse/help.png/dsnclose.png differ
diff --git a/demos/dbbrowse/help.png/dsnopen.png b/demos/dbbrowse/help.png/dsnopen.png
new file mode 100644 (file)
index 0000000..fb13f87
Binary files /dev/null and b/demos/dbbrowse/help.png/dsnopen.png differ
diff --git a/demos/dbbrowse/help.png/f_closed.png b/demos/dbbrowse/help.png/f_closed.png
new file mode 100644 (file)
index 0000000..afb75a2
Binary files /dev/null and b/demos/dbbrowse/help.png/f_closed.png differ
diff --git a/demos/dbbrowse/help.png/f_open.png b/demos/dbbrowse/help.png/f_open.png
new file mode 100644 (file)
index 0000000..a4cc29c
Binary files /dev/null and b/demos/dbbrowse/help.png/f_open.png differ
diff --git a/demos/dbbrowse/help.png/gnu.png b/demos/dbbrowse/help.png/gnu.png
new file mode 100644 (file)
index 0000000..d4efb33
Binary files /dev/null and b/demos/dbbrowse/help.png/gnu.png differ
diff --git a/demos/dbbrowse/help.png/gtk.png b/demos/dbbrowse/help.png/gtk.png
new file mode 100644 (file)
index 0000000..fffa2d5
Binary files /dev/null and b/demos/dbbrowse/help.png/gtk.png differ
diff --git a/demos/dbbrowse/help.png/imbau.png b/demos/dbbrowse/help.png/imbau.png
new file mode 100644 (file)
index 0000000..75ed3d0
Binary files /dev/null and b/demos/dbbrowse/help.png/imbau.png differ
diff --git a/demos/dbbrowse/help.png/kde.png b/demos/dbbrowse/help.png/kde.png
new file mode 100644 (file)
index 0000000..05d95fd
Binary files /dev/null and b/demos/dbbrowse/help.png/kde.png differ
diff --git a/demos/dbbrowse/help.png/key.png b/demos/dbbrowse/help.png/key.png
new file mode 100644 (file)
index 0000000..128a52a
Binary files /dev/null and b/demos/dbbrowse/help.png/key.png differ
diff --git a/demos/dbbrowse/help.png/keyf.png b/demos/dbbrowse/help.png/keyf.png
new file mode 100644 (file)
index 0000000..4678d31
Binary files /dev/null and b/demos/dbbrowse/help.png/keyf.png differ
diff --git a/demos/dbbrowse/help.png/linux.png b/demos/dbbrowse/help.png/linux.png
new file mode 100644 (file)
index 0000000..47bdea6
Binary files /dev/null and b/demos/dbbrowse/help.png/linux.png differ
diff --git a/demos/dbbrowse/help.png/logo.png b/demos/dbbrowse/help.png/logo.png
new file mode 100644 (file)
index 0000000..03ab75e
Binary files /dev/null and b/demos/dbbrowse/help.png/logo.png differ
diff --git a/demos/dbbrowse/help.png/motif.png b/demos/dbbrowse/help.png/motif.png
new file mode 100644 (file)
index 0000000..a0c096f
Binary files /dev/null and b/demos/dbbrowse/help.png/motif.png differ
diff --git a/demos/dbbrowse/help.png/msvc.png b/demos/dbbrowse/help.png/msvc.png
new file mode 100644 (file)
index 0000000..0b64785
Binary files /dev/null and b/demos/dbbrowse/help.png/msvc.png differ
diff --git a/demos/dbbrowse/help.png/odbc.png b/demos/dbbrowse/help.png/odbc.png
new file mode 100644 (file)
index 0000000..41d260f
Binary files /dev/null and b/demos/dbbrowse/help.png/odbc.png differ
diff --git a/demos/dbbrowse/help.png/pgmctrl.png b/demos/dbbrowse/help.png/pgmctrl.png
new file mode 100644 (file)
index 0000000..907ce64
Binary files /dev/null and b/demos/dbbrowse/help.png/pgmctrl.png differ
diff --git a/demos/dbbrowse/help.png/redh.png b/demos/dbbrowse/help.png/redh.png
new file mode 100644 (file)
index 0000000..86cf230
Binary files /dev/null and b/demos/dbbrowse/help.png/redh.png differ
diff --git a/demos/dbbrowse/help.png/remstar.png b/demos/dbbrowse/help.png/remstar.png
new file mode 100644 (file)
index 0000000..502460f
Binary files /dev/null and b/demos/dbbrowse/help.png/remstar.png differ
diff --git a/demos/dbbrowse/help.png/server.png b/demos/dbbrowse/help.png/server.png
new file mode 100644 (file)
index 0000000..4a03bb5
Binary files /dev/null and b/demos/dbbrowse/help.png/server.png differ
diff --git a/demos/dbbrowse/help.png/suse.png b/demos/dbbrowse/help.png/suse.png
new file mode 100644 (file)
index 0000000..1f4be87
Binary files /dev/null and b/demos/dbbrowse/help.png/suse.png differ
diff --git a/demos/dbbrowse/help.png/tab.png b/demos/dbbrowse/help.png/tab.png
new file mode 100644 (file)
index 0000000..c981d81
Binary files /dev/null and b/demos/dbbrowse/help.png/tab.png differ
diff --git a/demos/dbbrowse/help.png/winnt.png b/demos/dbbrowse/help.png/winnt.png
new file mode 100644 (file)
index 0000000..5e3cc64
Binary files /dev/null and b/demos/dbbrowse/help.png/winnt.png differ
diff --git a/demos/dbbrowse/help.png/wins.png b/demos/dbbrowse/help.png/wins.png
new file mode 100644 (file)
index 0000000..e692008
Binary files /dev/null and b/demos/dbbrowse/help.png/wins.png differ
diff --git a/demos/dbbrowse/help.std/compiler.htm b/demos/dbbrowse/help.std/compiler.htm
new file mode 100644 (file)
index 0000000..47973f6
--- /dev/null
@@ -0,0 +1,50 @@
+<!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">&nbsp;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">&nbsp;Windows NT 4.0 Server - SP 4</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/msvc.png">&nbsp;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">&nbsp;Windows NT 4.0 Server - SP 4</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/gnu.png">&nbsp;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">&nbsp;Linux - Redhat 6.1</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/gnu.png">&nbsp;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">&nbsp;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"">&nbsp;Linux - SuSE 6.1</B></TH><TH bgcolor=#FFFFE0><B><IMG SRC="../help.png/gnu.png">&nbsp;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">&nbsp;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>
diff --git a/demos/dbbrowse/help.std/dbbrowse.hhc b/demos/dbbrowse/help.std/dbbrowse.hhc
new file mode 100644 (file)
index 0000000..fc5d29c
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; 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>
diff --git a/demos/dbbrowse/help.std/dbbrowse.hhk b/demos/dbbrowse/help.std/dbbrowse.hhk
new file mode 100644 (file)
index 0000000..cea1aff
--- /dev/null
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; 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>
diff --git a/demos/dbbrowse/help.std/dbbrowse.hhp b/demos/dbbrowse/help.std/dbbrowse.hhp
new file mode 100644 (file)
index 0000000..f5a9fa0
--- /dev/null
@@ -0,0 +1,22 @@
+[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
diff --git a/demos/dbbrowse/help.std/dbbrowse.htm b/demos/dbbrowse/help.std/dbbrowse.htm
new file mode 100644 (file)
index 0000000..ec00304
--- /dev/null
@@ -0,0 +1,24 @@
+<!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">&nbsp;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>
diff --git a/demos/dbbrowse/help.std/getcol.htm b/demos/dbbrowse/help.std/getcol.htm
new file mode 100644 (file)
index 0000000..d1bc4c8
--- /dev/null
@@ -0,0 +1,118 @@
+<!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">&nbsp;Primary or <IMG SRC="../help.png/keyf.png">&nbsp;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>
diff --git a/demos/dbbrowse/help.std/getcolsh.htm b/demos/dbbrowse/help.std/getcolsh.htm
new file mode 100644 (file)
index 0000000..08dec3e
--- /dev/null
@@ -0,0 +1,53 @@
+<!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>
diff --git a/demos/dbbrowse/help.std/icons.htm b/demos/dbbrowse/help.std/icons.htm
new file mode 100644 (file)
index 0000000..51b0947
--- /dev/null
@@ -0,0 +1,39 @@
+<!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">&nbsp;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">&nbsp; 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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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>
diff --git a/demos/dbbrowse/help.std/picgrams.htm b/demos/dbbrowse/help.std/picgrams.htm
new file mode 100644 (file)
index 0000000..166665b
--- /dev/null
@@ -0,0 +1,38 @@
+<!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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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">&nbsp;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>
diff --git a/demos/dbbrowse/help.std/problems.htm b/demos/dbbrowse/help.std/problems.htm
new file mode 100644 (file)
index 0000000..a6d64aa
--- /dev/null
@@ -0,0 +1,77 @@
+<!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">&nbsp;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 :&nbsp;<IMG SRC="../help.png/gnu.png">&nbsp;</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 :&nbsp;<IMG SRC="../help.png/gnu.png">&nbsp;</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>
diff --git a/demos/dbbrowse/help.std/remstar.htm b/demos/dbbrowse/help.std/remstar.htm
new file mode 100644 (file)
index 0000000..89b1e2f
--- /dev/null
@@ -0,0 +1,15 @@
+<!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">&nbsp;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>
diff --git a/demos/dbbrowse/help.std/sample.htm b/demos/dbbrowse/help.std/sample.htm
new file mode 100644 (file)
index 0000000..33e0b79
--- /dev/null
@@ -0,0 +1,25 @@
+<!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">&nbsp;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 &lt;TH BGCOLOR=#CCFFCC&gt;<HR>Hintergrundsfarbe f|r diese Tabellenteil</B></TH><TH><B>&lt;BODY BGCOLOR=#C6DFC6&gt;<HR>Background Colour of Page</B></FONT></TH></TR>
+ </TR></TBODY></TABLE>
+ <P><TABLE border=1><B><TBODY><TR bgcolor=#FFF777>
+  <TH><B>Gold &lt;TR BGCOLOR=#FFF777&gt;<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>
diff --git a/demos/dbbrowse/help.std/startprm.htm b/demos/dbbrowse/help.std/startprm.htm
new file mode 100644 (file)
index 0000000..48664c3
--- /dev/null
@@ -0,0 +1,24 @@
+<!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">&nbsp;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>
diff --git a/demos/dbbrowse/help.std/todo.htm b/demos/dbbrowse/help.std/todo.htm
new file mode 100644 (file)
index 0000000..61bb04e
--- /dev/null
@@ -0,0 +1,80 @@
+<!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">&nbsp;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>
diff --git a/demos/dbbrowse/help.std/wxdb.htm b/demos/dbbrowse/help.std/wxdb.htm
new file mode 100644 (file)
index 0000000..5dd3acc
--- /dev/null
@@ -0,0 +1,27 @@
+<!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>
diff --git a/demos/dbbrowse/help.std/wxtable.htm b/demos/dbbrowse/help.std/wxtable.htm
new file mode 100644 (file)
index 0000000..d4396a4
--- /dev/null
@@ -0,0 +1,15 @@
+<!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>
diff --git a/demos/dbbrowse/makefile.g95 b/demos/dbbrowse/makefile.g95
new file mode 100644 (file)
index 0000000..3bacc79
--- /dev/null
@@ -0,0 +1,19 @@
+#
+# 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
+
diff --git a/demos/dbbrowse/makefile.gtk b/demos/dbbrowse/makefile.gtk
new file mode 100644 (file)
index 0000000..7765a3f
--- /dev/null
@@ -0,0 +1,15 @@
+
+# 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
+
diff --git a/demos/dbbrowse/makefile.vc b/demos/dbbrowse/makefile.vc
new file mode 100644 (file)
index 0000000..a135260
--- /dev/null
@@ -0,0 +1,19 @@
+#
+# 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
+
diff --git a/demos/dbbrowse/o.cmd b/demos/dbbrowse/o.cmd
new file mode 100755 (executable)
index 0000000..2d8f013
--- /dev/null
@@ -0,0 +1,4 @@
+ erase *.res
+ erase *.obj
+ erase *.o
+ go
diff --git a/demos/dbbrowse/pgmctrl.cpp b/demos/dbbrowse/pgmctrl.cpp
new file mode 100644 (file)
index 0000000..2c03f3d
--- /dev/null
@@ -0,0 +1,296 @@
+//---------------------------------------------------------------------------
+// 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();
+}
+//---------------------------------------------------------------------------
diff --git a/demos/dbbrowse/pgmctrl.h b/demos/dbbrowse/pgmctrl.h
new file mode 100644 (file)
index 0000000..44ebce4
--- /dev/null
@@ -0,0 +1,72 @@
+//---------------------------------------------------------------------------
+// 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
+//---------------------------------------------------------------------------
diff --git a/demos/dbbrowse/std.h b/demos/dbbrowse/std.h
new file mode 100644 (file)
index 0000000..c4672f4
--- /dev/null
@@ -0,0 +1,35 @@
+//---------------------------------------------------------------------------
+//-- 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"
+//---------------------------------------------------------------------------
diff --git a/demos/dbbrowse/tabpgwin.cpp b/demos/dbbrowse/tabpgwin.cpp
new file mode 100644 (file)
index 0000000..8ee68ec
--- /dev/null
@@ -0,0 +1,1143 @@
+/////////////////////////////////////////////////////////////////////////////
+// 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;
+ }
+}
+//---------------------------------------------------------------------------
diff --git a/demos/dbbrowse/tabpgwin.h b/demos/dbbrowse/tabpgwin.h
new file mode 100644 (file)
index 0000000..e3f2ea6
--- /dev/null
@@ -0,0 +1,272 @@
+/////////////////////////////////////////////////////////////////////////////
+// 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