215 lines
7.3 KiB
C#
215 lines
7.3 KiB
C#
/*********************************************************************************************
|
|
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
|
|
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
|
* ------------------------------------------------------------------------------
|
|
* $Workfile: SymbDlg.cs $ $Revision: 1 $
|
|
* $Author: Kathy $ $Date: 7/27/04 8:34a $
|
|
*
|
|
* $History: SymbDlg.cs $
|
|
*
|
|
* ***************** Version 1 *****************
|
|
* User: Kathy Date: 7/27/04 Time: 8:34a
|
|
* Created in $/LibSource/Utils
|
|
*********************************************************************************************/
|
|
|
|
using System;
|
|
using System.Text;
|
|
using System.Drawing;
|
|
using System.Collections;
|
|
using System.ComponentModel;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Utils
|
|
{
|
|
/// <summary>
|
|
/// Summary description for SymbDlg.
|
|
/// </summary>
|
|
public class SymbDlg : System.Windows.Forms.Form
|
|
{
|
|
private System.Windows.Forms.TabControl tbctlSymbol;
|
|
/// <summary>
|
|
/// Required designer variable.
|
|
/// </summary>
|
|
private System.ComponentModel.Container components = null;
|
|
private ListBox symlistbox;
|
|
public SymbolListB SymList1;
|
|
public string ReturnText;
|
|
private int NumItems;
|
|
private System.Windows.Forms.TextBox tbValue;
|
|
private System.Windows.Forms.Button btnOK;
|
|
private System.Windows.Forms.Button btnCancel;
|
|
public GridItem gridItem;
|
|
private string[] SymbolFonts = {"VESymb","Courier New","VolianDraw"};
|
|
|
|
public SymbDlg(SymbolListB symb, GridItem grditm)
|
|
{
|
|
//
|
|
// Required for Windows Form Designer support
|
|
//
|
|
ReturnText=null;
|
|
gridItem = grditm;
|
|
|
|
SymList1 = symb;
|
|
NumItems = symb.SymbolListStrings.Length;
|
|
InitializeComponent();
|
|
|
|
DoListTabPage();
|
|
DoGridTabPage();
|
|
|
|
if (gridItem!=null)
|
|
{
|
|
tbValue.Text = (string) gridItem.Value;
|
|
tbValue.Visible = true;
|
|
}
|
|
else
|
|
tbValue.Visible = false;
|
|
}
|
|
|
|
private void DoGridTabPage()
|
|
{
|
|
//TabPage gridTabPage = new TabPage("Grid");
|
|
//tbctlSymbol.TabPages.Add(gridTabPage);
|
|
}
|
|
|
|
private void symlistbox_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
|
|
{
|
|
// Set the DrawMode property to draw fixed sized items.
|
|
symlistbox.DrawMode = DrawMode.OwnerDrawFixed;
|
|
|
|
// Draw the background of the ListBox control for each item.
|
|
e.DrawBackground();
|
|
// Create a new Brush and initialize to a Black colored brush by default.
|
|
Brush myBrush = Brushes.Black;
|
|
Font fontVESymb = new Font(SymbolFonts[SymList1.SymbolList[e.Index].CharacterSet],e.Font.SizeInPoints);
|
|
Font fontregular = new Font("Courier New",e.Font.SizeInPoints);
|
|
float x;
|
|
// Draw the current item text based on the current Font and the custom brush settings.
|
|
e.Graphics.DrawString(SymList1.SymbolList[e.Index].CharacterCode,fontVESymb,myBrush,e.Bounds.Left,e.Bounds.Top);
|
|
x=e.Graphics.MeasureString(SymList1.SymbolList[e.Index].CharacterCode,fontVESymb).Width;
|
|
e.Graphics.DrawString(SymList1.SymbolListStrings[e.Index],fontregular,myBrush,e.Bounds.Left+x,e.Bounds.Top);
|
|
e.DrawFocusRectangle();
|
|
}
|
|
|
|
private void DoListTabPage()
|
|
{
|
|
TabPage listTabPage = new TabPage("List");
|
|
tbctlSymbol.TabPages.Add(listTabPage);
|
|
symlistbox = new ListBox();
|
|
symlistbox.Height = 200;
|
|
symlistbox.Width = 400;
|
|
listTabPage.Controls.Add(symlistbox);
|
|
symlistbox.DrawItem += new DrawItemEventHandler(symlistbox_DrawItem);
|
|
symlistbox.DoubleClick += new EventHandler(symlistbox_DoubleClick);
|
|
symlistbox.DrawMode = DrawMode.OwnerDrawFixed;
|
|
// add dummy items, these will be resolved when displayed.
|
|
for(int i=0; i<NumItems;i++)
|
|
symlistbox.Items.Add(i.ToString());
|
|
}
|
|
|
|
private void symlistbox_DoubleClick(Object sender, EventArgs e)
|
|
{
|
|
// use encoding for the Microsoft Windows OEM Codepage 437 to get the old
|
|
// 'dos' character codes. Also, needed to use the encoding & transfer to/from
|
|
// bytes so that the unicode character wouldn't be entered thus causing a
|
|
// character conversion. (strings are unicode by default in .net)
|
|
int itm = symlistbox.SelectedIndex;
|
|
Encoding oem = Encoding.GetEncoding(437);
|
|
byte[] oemBytes = oem.GetBytes(tbValue.Text);
|
|
byte[] tst = new byte[oemBytes.Length+1];
|
|
int indx = tbValue.SelectionStart;
|
|
for (int i=0; i<indx; i++) tst[i]=oemBytes[i];
|
|
tst[indx]=SymList1.SymbolList[itm].Translation;
|
|
for (int i=indx;i<tbValue.Text.Length;i++) tst[i+1]=oemBytes[i];
|
|
tbValue.Text = oem.GetString(tst);
|
|
tbValue.Refresh();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Clean up any resources being used.
|
|
/// </summary>
|
|
protected override void Dispose( bool disposing )
|
|
{
|
|
if( disposing )
|
|
{
|
|
if(components != null)
|
|
{
|
|
components.Dispose();
|
|
}
|
|
}
|
|
base.Dispose( disposing );
|
|
}
|
|
|
|
#region Windows Form Designer generated code
|
|
/// <summary>
|
|
/// Required method for Designer support - do not modify
|
|
/// the contents of this method with the code editor.
|
|
/// </summary>
|
|
private void InitializeComponent()
|
|
{
|
|
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(SymbDlg));
|
|
this.tbctlSymbol = new System.Windows.Forms.TabControl();
|
|
this.tbValue = new System.Windows.Forms.TextBox();
|
|
this.btnOK = new System.Windows.Forms.Button();
|
|
this.btnCancel = new System.Windows.Forms.Button();
|
|
this.SuspendLayout();
|
|
//
|
|
// tbctlSymbol
|
|
//
|
|
this.tbctlSymbol.Location = new System.Drawing.Point(8, 0);
|
|
this.tbctlSymbol.Name = "tbctlSymbol";
|
|
this.tbctlSymbol.SelectedIndex = 0;
|
|
this.tbctlSymbol.Size = new System.Drawing.Size(464, 264);
|
|
this.tbctlSymbol.TabIndex = 0;
|
|
//
|
|
// tbValue
|
|
//
|
|
this.tbValue.Location = new System.Drawing.Point(8, 280);
|
|
this.tbValue.Name = "tbValue";
|
|
this.tbValue.Size = new System.Drawing.Size(504, 20);
|
|
this.tbValue.TabIndex = 1;
|
|
this.tbValue.Text = "";
|
|
//
|
|
// btnOK
|
|
//
|
|
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
|
|
this.btnOK.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
|
|
this.btnOK.Location = new System.Drawing.Point(72, 320);
|
|
this.btnOK.Name = "btnOK";
|
|
this.btnOK.Size = new System.Drawing.Size(104, 24);
|
|
this.btnOK.TabIndex = 2;
|
|
this.btnOK.Text = "Save Text";
|
|
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
//
|
|
// btnCancel
|
|
//
|
|
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
this.btnCancel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
|
|
this.btnCancel.Location = new System.Drawing.Point(208, 320);
|
|
this.btnCancel.Name = "btnCancel";
|
|
this.btnCancel.Size = new System.Drawing.Size(72, 23);
|
|
this.btnCancel.TabIndex = 3;
|
|
this.btnCancel.Text = "Cancel";
|
|
//
|
|
// SymbDlg
|
|
//
|
|
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
|
|
this.ClientSize = new System.Drawing.Size(672, 350);
|
|
this.Controls.Add(this.btnCancel);
|
|
this.Controls.Add(this.btnOK);
|
|
this.Controls.Add(this.tbValue);
|
|
this.Controls.Add(this.tbctlSymbol);
|
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
|
this.Name = "SymbDlg";
|
|
this.Text = "Symbol";
|
|
this.ResumeLayout(false);
|
|
|
|
}
|
|
#endregion
|
|
|
|
private void btnOK_Click(object sender, System.EventArgs e)
|
|
{
|
|
ReturnText = tbValue.Text;
|
|
}
|
|
}
|
|
}
|