From b620ca42fce451f8966219784ffcccb9bc917a4a Mon Sep 17 00:00:00 2001 From: Ian C Date: Sun, 20 Jun 2004 00:21:51 +0000 Subject: This commit was generated by cvs2svn to compensate for changes in r2, which included commits to RCS files with non-trunk default branches. --- AssemblyInfo.cs | 32 ++++ CSV.cs | 59 +++++++ Config.cs | 76 +++++++++ Config.xml | 27 ++++ DefaultNamespace.MainForm.resources | Bin 0 -> 4190 bytes MainForm.cs | 300 ++++++++++++++++++++++++++++++++++++ TLReader.MainForm.resources | Bin 0 -> 5283 bytes TLReader.cmbx | 16 ++ TLReader.prjx | 33 ++++ TugTable.cs | 114 ++++++++++++++ Util.cs | 40 +++++ table.txt | 87 +++++++++++ 12 files changed, 784 insertions(+) create mode 100644 AssemblyInfo.cs create mode 100644 CSV.cs create mode 100644 Config.cs create mode 100644 Config.xml create mode 100644 DefaultNamespace.MainForm.resources create mode 100644 MainForm.cs create mode 100644 TLReader.MainForm.resources create mode 100644 TLReader.cmbx create mode 100644 TLReader.prjx create mode 100644 TugTable.cs create mode 100644 Util.cs create mode 100644 table.txt diff --git a/AssemblyInfo.cs b/AssemblyInfo.cs new file mode 100644 index 0000000..af4e275 --- /dev/null +++ b/AssemblyInfo.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following +// attributes. +// +// change them to the information which is associated with the assembly +// you compile. + +[assembly: AssemblyTitle("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all values by your own or you can build default build and revision +// numbers with the '*' character (the default): + +[assembly: AssemblyVersion("1.0.*")] + +// The following attributes specify the key for the sign of your assembly. See the +// .NET Framework documentation for more information about signing. +// This is not required, if you don't want signing let these attributes like they're. +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] diff --git a/CSV.cs b/CSV.cs new file mode 100644 index 0000000..50def8f --- /dev/null +++ b/CSV.cs @@ -0,0 +1,59 @@ +// TLReader - reads access database containing tug info +// Copyright (C) 2004 Ian Cowburn +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +using System; +using System.IO; + +namespace TLReader +{ + /// + /// Description of CSV. + /// + public class CSV + { + public CSV(StreamWriter w) + { + m_str=w; + m_first=true; + } + + public void Value(string s) + { + s=s.Replace("\r\n"," "); + s=s.Replace("\n\r"," "); + s=s.Replace('\n',' '); + s=s.Replace('"','\''); + + if (!m_first) + { + m_str.Write(','); + } + + m_str.Write("\""+s+"\""); + m_first=false; + } + + public void EndLine() + { + m_str.WriteLine(); + m_first=true; + } + + private StreamWriter m_str; + private bool m_first; + } +} diff --git a/Config.cs b/Config.cs new file mode 100644 index 0000000..72dd455 --- /dev/null +++ b/Config.cs @@ -0,0 +1,76 @@ +// TLReader - reads access database containing tug info +// Copyright (C) 2004 Ian Cowburn +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +using System; +using System.IO; +using System.Xml; +using System.Xml.Serialization; + +namespace TLReader +{ + public class Config + { + public static TLConfig Load() + { + string fn="config.xml"; + + if (!File.Exists(fn)) + { + fn="..\\..\\config.xml"; + } + + XmlSerializer xml = new XmlSerializer(typeof(TLConfig)); + FileStream fs = new FileStream(fn,FileMode.Open); + + TLConfig conf=(TLConfig)xml.Deserialize(fs); + + fs.Close(); + + return conf; + } + + private Config() + { + } + } + + public class Table + { + public Table() + { + } + + public string Name; + public string Fields; + } + + public class TLConfig + { + public TLConfig() + { + } + + public string Connect; + public Table Intro; + public Table Landcode; + public Table Owners; + public Table TugDetails; + public Table Wharves; + public Table TugList; + public string Query; + } +} diff --git a/Config.xml b/Config.xml new file mode 100644 index 0000000..f2723cb --- /dev/null +++ b/Config.xml @@ -0,0 +1,27 @@ + +Driver={Microsoft Access Driver (*.mdb)};DBQ=E:\\tuglist00.mdb + + intro + LastUpdate,Names,Ships,TitelText + + + LANDCODE + CODE,COUNTRY,NAT + + + owners + OwnerNR,Short,NAT,Description,Adres,Colors NR + + + tugdetails + TugNR,Specifications,Link,WharfNR + + + Wharves + WharfNR,Short,NAT,Description,Adres + + + tuglist00 + NR,NAME,NAT,BUILD,SCRAP,BRT,PK,YardNR,ONAMES,PicNR,SITE,TugNR,OwnerNR,RegNR,EuroNR,CallSign + + diff --git a/DefaultNamespace.MainForm.resources b/DefaultNamespace.MainForm.resources new file mode 100644 index 0000000..02accf8 Binary files /dev/null and b/DefaultNamespace.MainForm.resources differ diff --git a/MainForm.cs b/MainForm.cs new file mode 100644 index 0000000..c6d6cb4 --- /dev/null +++ b/MainForm.cs @@ -0,0 +1,300 @@ +// TLReader - reads access database containing tug info +// Copyright (C) 2004 Ian Cowburn +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +using System; +using System.Windows.Forms; +using System.Data; +using System.Data.Common; +using System.Data.Odbc; +using System.Collections; +using System.IO; + +namespace TLReader +{ + /// + /// Description of MainForm. + /// + public class MainForm : System.Windows.Forms.Form + { + private System.Windows.Forms.Label label; + private System.Windows.Forms.ComboBox m_tableSelect; + private System.Windows.Forms.Button m_quitButton; + private System.Windows.Forms.ListView m_list; + private System.Windows.Forms.ProgressBar m_progress; + private System.Windows.Forms.Button m_csvButton; + + private OdbcConnection m_dbase; + private TLConfig m_config; + private TugTable m_intro; + private TugTable m_landcode; + private TugTable m_owners; + private TugTable m_tdetails; + private TugTable m_wharves; + private TugTable m_tlist; + + private Hashtable m_tables; + + public MainForm() + { + // + // The InitializeComponent() call is required for Windows Forms designer support. + // + InitializeComponent(); + + m_config=Config.Load(); + + m_dbase=new OdbcConnection(m_config.Connect); + + m_dbase.Open(); + + Text+=" - "+m_dbase.Database; + + m_intro=new TugTable(m_dbase,m_config.Intro); + m_landcode=new TugTable(m_dbase,m_config.Landcode); + m_owners=new TugTable(m_dbase,m_config.Owners); + m_tdetails=new TugTable(m_dbase,m_config.TugDetails); + m_wharves=new TugTable(m_dbase,m_config.Wharves); + m_tlist=new TugTable(m_dbase,m_config.TugList); + + m_tables=new Hashtable(); + + m_tables.Add("Intro",m_intro); + m_tables.Add("Landcode",m_landcode); + m_tables.Add("Owners",m_owners); + m_tables.Add("Tugdetails",m_tdetails); + m_tables.Add("Tuglist",m_tlist); + m_tables.Add("Wharves",m_wharves); + + m_tableSelect.SelectedIndex=0; + + FillList(); + } + + [STAThread] + public static void Main(string[] args) + { + try + { + Application.Run(new MainForm()); + } + catch(Exception e) + { + Util.Error(e.ToString()); + } + } + + #region Windows Forms Designer generated code + /// + /// This method is required for Windows Forms designer support. + /// Do not change the method contents inside the source code editor. The Forms designer might + /// not be able to load this method if it was changed manually. + /// + private void InitializeComponent() { + this.m_csvButton = new System.Windows.Forms.Button(); + this.m_progress = new System.Windows.Forms.ProgressBar(); + this.m_list = new System.Windows.Forms.ListView(); + this.m_quitButton = new System.Windows.Forms.Button(); + this.m_tableSelect = new System.Windows.Forms.ComboBox(); + this.label = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // m_csvButton + // + this.m_csvButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.m_csvButton.Location = new System.Drawing.Point(448, 504); + this.m_csvButton.Name = "m_csvButton"; + this.m_csvButton.Size = new System.Drawing.Size(104, 32); + this.m_csvButton.TabIndex = 1; + this.m_csvButton.Text = "Export as CSV"; + this.m_csvButton.Click += new System.EventHandler(this.OnExportCSV); + // + // m_progress + // + this.m_progress.Location = new System.Drawing.Point(8, 504); + this.m_progress.Name = "m_progress"; + this.m_progress.Size = new System.Drawing.Size(424, 32); + this.m_progress.TabIndex = 3; + // + // m_list + // + this.m_list.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.m_list.FullRowSelect = true; + this.m_list.GridLines = true; + this.m_list.HideSelection = false; + this.m_list.Location = new System.Drawing.Point(8, 40); + this.m_list.Name = "m_list"; + this.m_list.Size = new System.Drawing.Size(664, 456); + this.m_list.TabIndex = 2; + this.m_list.View = System.Windows.Forms.View.Details; + // + // m_quitButton + // + this.m_quitButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.m_quitButton.Location = new System.Drawing.Point(568, 504); + this.m_quitButton.Name = "m_quitButton"; + this.m_quitButton.Size = new System.Drawing.Size(104, 32); + this.m_quitButton.TabIndex = 0; + this.m_quitButton.Text = "Quit"; + this.m_quitButton.Click += new System.EventHandler(this.OnQuit); + // + // m_tableSelect + // + this.m_tableSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.m_tableSelect.Items.AddRange(new object[] { + "Intro", + "Landcode", + "Owners", + "Tugdetails", + "Tuglist", + "Wharves"}); + this.m_tableSelect.Location = new System.Drawing.Point(64, 8); + this.m_tableSelect.Name = "m_tableSelect"; + this.m_tableSelect.Size = new System.Drawing.Size(200, 21); + this.m_tableSelect.Sorted = true; + this.m_tableSelect.TabIndex = 4; + this.m_tableSelect.SelectedIndexChanged += new System.EventHandler(this.OnSelectTable); + // + // label + // + this.label.Location = new System.Drawing.Point(16, 8); + this.label.Name = "label"; + this.label.Size = new System.Drawing.Size(40, 24); + this.label.TabIndex = 5; + this.label.Text = "Table:"; + this.label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // MainForm + // + this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); + this.ClientSize = new System.Drawing.Size(680, 541); + this.Controls.Add(this.label); + this.Controls.Add(this.m_tableSelect); + this.Controls.Add(this.m_progress); + this.Controls.Add(this.m_list); + this.Controls.Add(this.m_csvButton); + this.Controls.Add(this.m_quitButton); + this.MinimumSize = new System.Drawing.Size(320, 200); + this.Name = "MainForm"; + this.Text = "Tuglist Reader"; + this.ResumeLayout(false); + } + #endregion + + void OnQuit(object sender, System.EventArgs e) + { + Close(); + } + + void OnExportCSV(object sender, System.EventArgs e) + { + TugTable t=(TugTable)m_tables[m_tableSelect.Text]; + SaveFileDialog fsel=new SaveFileDialog(); + + fsel.Filter="CSV files (*.csv)|*.csv|All files (*.*)|*.*"; + fsel.RestoreDirectory=true; + + if(fsel.ShowDialog()==DialogResult.OK) + { + StreamWriter str=File.CreateText(fsel.FileName); + + if(str!=null) + { + m_progress.Maximum=m_list.Items.Count+1; + m_progress.Step=1; + m_progress.Value=0; + + CSV csv=new CSV(str); + + foreach (string s in t.Fields) + { + csv.Value(s); + } + + csv.EndLine(); + m_progress.PerformStep(); + + foreach (ListViewItem i in m_list.Items) + { + //csv.Value(i.Text); + + foreach (ListViewItem.ListViewSubItem si in i.SubItems) + { + csv.Value(si.Text); + } + + csv.EndLine(); + m_progress.PerformStep(); + } + + str.Close(); + } + else + { + Util.Error("Failed to open "+fsel.FileName); + } + } + + m_progress.Value=0; + } + + private void FillList() + { + TugTable t=(TugTable)m_tables[m_tableSelect.Text]; + int f; + + m_list.Columns.Clear(); + m_list.Items.Clear(); + + foreach (string s in t.Fields) + { + m_list.Columns.Add(s,100,HorizontalAlignment.Left); + } + + for(f=0;f + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TLReader.prjx b/TLReader.prjx new file mode 100644 index 0000000..a7463aa --- /dev/null +++ b/TLReader.prjx @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TugTable.cs b/TugTable.cs new file mode 100644 index 0000000..3b77c1f --- /dev/null +++ b/TugTable.cs @@ -0,0 +1,114 @@ +// TLReader - reads access database containing tug info +// Copyright (C) 2004 Ian Cowburn +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +using System; +using System.Data; +using System.Data.Common; +using System.Data.Odbc; +using System.Collections; +using System.Collections.Specialized; +using System.Windows.Forms; + +namespace TLReader +{ + /// + /// Description of TugTable. + /// + public class TugTable + { + public TugTable(OdbcConnection con, Table t) + { + string sql="select "; + bool first=true; + + m_fields=new StringCollection(); + m_fields.AddRange(t.Fields.Split(new char[] {','})); + + foreach (string s in m_fields) + { + if (first) + { + sql+="["+s+"]"; + } + else + { + sql+=", ["+s+"]"; + } + + first=false; + } + + sql+=" from "+t.Name; + + OdbcCommand cmd=new OdbcCommand(sql,con); + OdbcDataReader r=cmd.ExecuteReader(); + + m_data=new ArrayList(); + + while(r.Read()) + { + StringCollection row=new StringCollection(); + + for(int f=0;f + /// Description of Util. + /// + public class Util + { + public static void Error(string msg) + { + MessageBox.Show(msg,"Error", + MessageBoxButtons.OK,MessageBoxIcon.Error); + } + + public static void Notice(string msg) + { + MessageBox.Show(msg,"Notice", + MessageBoxButtons.OK,MessageBoxIcon.Information); + } + } +} diff --git a/table.txt b/table.txt new file mode 100644 index 0000000..18fddbf --- /dev/null +++ b/table.txt @@ -0,0 +1,87 @@ +DROP TABLE intro; +CREATE TABLE intro + ( + LastUpdate DateTime (Short) (8), + Names Long Integer (4), + Ships Long Integer (4), + TitelText Text (60) + +); +-- CREATE ANY INDEXES ... + +DROP TABLE LANDCODE; +CREATE TABLE LANDCODE + ( + CODE Text (8), + COUNTRY Text (80), + NAT Text (6) + +); +-- CREATE ANY INDEXES ... + +DROP TABLE Owners; +CREATE TABLE Owners + ( + OwnerNR Long Integer (4), + Short Text (200), + NAT Text (6), + Description Memo/Hyperlink, + Adres Memo/Hyperlink, + Colors NR Long Integer (4) + +); +-- CREATE ANY INDEXES ... + +DROP TABLE tugdetails; +CREATE TABLE tugdetails + ( + TugNR Long Integer (4), + Specifications Memo/Hyperlink, + Link Text (510), + WharfNR Long Integer (4) + +); +-- CREATE ANY INDEXES ... + +DROP TABLE Wharves; +CREATE TABLE Wharves + ( + WharfNR Long Integer (4), + Short Text (200), + NAT Text (6), + Description Memo/Hyperlink, + Adres Memo/Hyperlink + +); +-- CREATE ANY INDEXES ... + +DROP TABLE tuglist00; +CREATE TABLE tuglist00 + ( + NR Long Integer (4), + NAME Text (100), + NAT Text (6), + BUILD Text (20), + SCRAP Text (20), + BRT Text (20), + PK Text (40), + YardNR Text (28), + ONAMES Text (400), + PicNR Text (20), + SITE Memo/Hyperlink, + TugNR Long Integer (4), + OwnerNR Long Integer (4), + RegNR Text (48), + EuroNR Text (48), + CallSign Text (28) + +); +-- CREATE ANY INDEXES ... + + + +-- CREATE ANY Relationships ... + +relationships are not supported for access +relationships are not supported for access +relationships are not supported for access -- cgit v1.2.3