// 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