Synopsis: |
| comparelists.cs |
| Explorer.cs |
| FavouritesDirectory.cs |
| Link.cs |
| LinkProperties.cs |
| LinksParser.cs |
| LinksReader.cs |
| LinksWriter.cs |
| MainWindow.cs |
| XmlLinks.cs |
| links.xml |
| ||
using System;
using System.Collections;
using System.Windows.Forms;
namespace fave2xml
{
public class CompareLists
{
private readonly Link cMissingEntry = new Link("<missing>");
private ArrayList mLeftList;
private ArrayList mRightList;
int mLeftIndex = 0;
int mRightIndex = 0;
public void compare(ArrayList leftlist, ArrayList rightlist)
{
if (ListsAreEmpty(leftlist, rightlist)) return;
mLeftList = leftlist;
mRightList = rightlist;
for(Initialize(); !IsLeftDone() || !IsRightDone(); NextItems())
CheckForMissingItems();
}
private bool ListsAreEmpty(ArrayList leftlist, ArrayList rightlist)
{
if (leftlist == null || rightlist == null) return true;
if (leftlist.Count == 0 || rightlist.Count == 0) return true;
return false;
}
private void Initialize()
{
mLeftList.Sort();
mRightList.Sort();
Cleanup(mLeftList);
Cleanup(mRightList);
mLeftIndex = 0;
mRightIndex = 0;
}
private void Cleanup(ArrayList list)
{
int i = 0;
while(i < list.Count)
{
if (((Link) list[i]).CompareTo(cMissingEntry) == 0)
list.RemoveAt(i);
else
++i;
}
}
private void NextItems()
{
++mLeftIndex;
++mRightIndex;
}
private void CheckForMissingItems()
{
if (IsRightDone())
AddMissingToRight();
else if (IsLeftDone())
AddMissingToLeft();
else
{
int cmp = CompareLeftToRight();
if (cmp < 0)
InsertMissingIntoRight();
else if (cmp > 0)
InsertMissingIntoLeft();
}
}
private void AddMissingToRight()
{
mRightList.Add(cMissingEntry);
}
private void AddMissingToLeft()
{
mLeftList.Add(cMissingEntry);
}
private void InsertMissingIntoRight()
{
mRightList.Insert(mLeftIndex, cMissingEntry);
}
private void InsertMissingIntoLeft()
{
mLeftList.Insert(mRightIndex, cMissingEntry);
}
private int CompareLeftToRight()
{
return ((Link) mLeftList[mLeftIndex]).CompareTo((Link)mRightList[mRightIndex]);
}
private bool IsLeftDone()
{
return mLeftIndex >= mLeftList.Count;
}
private bool IsRightDone()
{
return mRightIndex >= mRightList.Count;
}
}
}
| ||
| ||
using System;
using SHDocVw;
using mshtml;
namespace fave2xml
{
/// <summary>
/// Summary description for Explorer.
/// </summary>
public class Explorer
{
SHDocVw.InternetExplorer myIExplorer = null;
IWebBrowserApp myWebBrowser = null;
public Explorer()
{
Create();
}
public void ShowPage(string addr)
{
for(int tries = 1; tries <= 2; ++tries)
{
try
{
GotoPage(addr);
break;
}
catch (Exception )
{
Create();
}
}
}
private void Create()
{
myIExplorer = new SHDocVw.InternetExplorer();
myWebBrowser = (IWebBrowserApp) myIExplorer;
myWebBrowser.Visible = true;
}
private void GotoPage(string addr)
{
Object o = null;
myWebBrowser.Navigate(addr, ref o, ref o, ref o, ref o);
}
public void Dispose()
{
try
{
myWebBrowser.Quit();
}
catch(Exception)
{
//throws an execption if the user already killed the browser.
}
}
}
}
| ||
| ||
using System;
using System.IO;
using System.Collections;
using System.Windows.Forms;
namespace fave2xml
{
/// <summary>
/// Summary description for FavouritesDirectory.
/// </summary>
public class FavouritesDirectory
{
private static readonly string cProfilesRoot = @"C:\Documents and Settings";
private ArrayList mList;
public static string[] GetProfiles()
{
string[] dirs = Directory.GetDirectories(cProfilesRoot);
for(int i = 0; i < dirs.Length; ++i)
dirs[i] = dirs[i].Substring(dirs[i].LastIndexOf('\\') + 1);
return dirs;
}
public FavouritesDirectory(ArrayList list)
{
mList = list;
}
public void Add(string profiledir)
{
mList.Clear();
Stack dirs = new Stack();
dirs.Push(cProfilesRoot + @"\" + profiledir + @"\Favorites");
while (dirs.Count != 0)
{
string dir = (string) dirs.Pop();
string[] files = Directory.GetFiles(dir);
for (int i = 0; i < files.Length; ++i)
AddFavourite(files[i].Replace('\\', '/'));
files = Directory.GetDirectories(dir);
for (int i = 0; i < files.Length; ++i)
dirs.Push(files[i]);
}
}
private void AddFavourite(string fname)
{
Link url = GetUrl(fname);
if (url == null) return;
mList.Add(url);
}
private Link GetUrl(string fname)
{
string url = null;
string line;
TextReader reader = new StreamReader(fname);
while(reader.Peek() > -1)
{
line = reader.ReadLine();
if (line.StartsWith("URL="))
{
url = line.Substring(4);
if (url.StartsWith("http://"))
url = url.Substring(7);
if (url.StartsWith("https://"))
url = url.Substring(8);
break;
}
}
reader.Close();
if (url == null) return null;
Link lk = new Link(url);
lk.Desc = fname.Substring(fname.LastIndexOf('/') + 1);
lk.Desc = lk.Desc.Replace(".url", "");
return lk;
}
}
}
| ||
| ||
using System;
using System.Collections;
using System.Xml;
namespace fave2xml
{
public class Link : IComparable
{
private string mAddr = null;
private string mDesc = null;
private string mCategory = null;
public Link(string addr)
{
mAddr = addr;
}
public override int GetHashCode()
{
return mAddr.GetHashCode();
}
public override bool Equals(object s)
{
if (s == null && mAddr == null) return true;
if (s == null ^ mAddr == null) return false;
return mAddr.Equals(s.ToString());
}
public int CompareTo(object o)
{
if (mAddr == null && o == null) return 0;
if (mAddr == null && o != null) return -1;
if (mAddr != null && o == null) return 1;
return mAddr.CompareTo(o.ToString());
}
public override string ToString()
{
return mAddr;
}
public bool IsMissing()
{
return mAddr.Equals("<missing>");
}
public string Desc
{
get
{
if (IsMissing()) return "<missing>";
if (mDesc == null || mDesc.Equals("")) return "--not set--";
return mDesc;
}
set
{
mDesc = value;
}
}
public string Category
{
get
{
if (mCategory == null) return "";
return mCategory;
}
set
{
mCategory = value;
}
}
public void Save(XmlTextWriter xtw)
{
xtw.WriteStartElement("link");
xtw.WriteElementString("category", mCategory);
xtw.WriteElementString("addr", mAddr);
xtw.WriteElementString("desc", mDesc);
xtw.WriteEndElement();
}
}
}
| ||
| ||
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace fave2xml
{
/// <summary>
/// Summary description for LinkProperties.
/// </summary>
public class LinkProperties : System.Windows.Forms.Form
{
private Link mLink;
private System.Windows.Forms.Label mLBAddr;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ComboBox mLBCategory;
private System.Windows.Forms.TextBox mLBDesc;
private System.Windows.Forms.Button mOK;
private System.Windows.Forms.Button mCancel;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public LinkProperties(ArrayList links, Link link)
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
this.mOK.DialogResult = DialogResult.OK;
this.mCancel.DialogResult = DialogResult.Cancel;
foreach (Link lk in links)
{
if (lk.Category.Equals("")) continue;
if (!mLBCategory.Items.Contains(lk.Category))
mLBCategory.Items.Add(lk.Category);
}
mLink = link;
mLBAddr.Text = link.ToString();
mLBCategory.Text = link.Category;
mLBDesc.Text = link.Desc;
}
/// <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()
{
this.mLBAddr = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.mLBCategory = new System.Windows.Forms.ComboBox();
this.mLBDesc = new System.Windows.Forms.TextBox();
this.mOK = new System.Windows.Forms.Button();
this.mCancel = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// mLBAddr
//
this.mLBAddr.Location = new System.Drawing.Point(112, 16);
this.mLBAddr.Name = "mLBAddr";
this.mLBAddr.Size = new System.Drawing.Size(384, 20);
this.mLBAddr.TabIndex = 0;
this.mLBAddr.Text = "address";
this.mLBAddr.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label1
//
this.label1.Location = new System.Drawing.Point(32, 16);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(80, 20);
this.label1.TabIndex = 1;
this.label1.Text = "Address:";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label2
//
this.label2.Location = new System.Drawing.Point(32, 48);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(80, 24);
this.label2.TabIndex = 2;
this.label2.Text = "Category:";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label3
//
this.label3.Location = new System.Drawing.Point(32, 88);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(80, 20);
this.label3.TabIndex = 3;
this.label3.Text = "Description:";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// mLBCategory
//
this.mLBCategory.Location = new System.Drawing.Point(104, 48);
this.mLBCategory.MaxDropDownItems = 20;
this.mLBCategory.Name = "mLBCategory";
this.mLBCategory.Size = new System.Drawing.Size(184, 21);
this.mLBCategory.Sorted = true;
this.mLBCategory.TabIndex = 4;
this.mLBCategory.Text = "category";
//
// mLBDesc
//
this.mLBDesc.Location = new System.Drawing.Point(112, 88);
this.mLBDesc.Name = "mLBDesc";
this.mLBDesc.Size = new System.Drawing.Size(376, 20);
this.mLBDesc.TabIndex = 5;
this.mLBDesc.Text = "desc";
//
// mOK
//
this.mOK.Location = new System.Drawing.Point(104, 128);
this.mOK.Name = "mOK";
this.mOK.TabIndex = 6;
this.mOK.Text = "OK";
//
// mCancel
//
this.mCancel.Location = new System.Drawing.Point(232, 128);
this.mCancel.Name = "mCancel";
this.mCancel.Size = new System.Drawing.Size(80, 24);
this.mCancel.TabIndex = 7;
this.mCancel.Text = "Cancel";
//
// LinkProperties
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(506, 159);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.mCancel,
this.mOK,
this.mLBDesc,
this.mLBCategory,
this.label3,
this.label2,
this.label1,
this.mLBAddr});
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Name = "LinkProperties";
this.Text = "LinkProperties";
this.Closed += new System.EventHandler(this.LinkProperties_Closed);
this.ResumeLayout(false);
}
#endregion
private void LinkProperties_Closed(object sender, System.EventArgs e)
{
if (this.DialogResult == DialogResult.OK)
{
mLink.Category = mLBCategory.Text;
mLink.Desc = mLBDesc.Text;
}
}
}
}
| ||
| ||
using System;
using System.Collections;
using System.Xml;
using System.Text.RegularExpressions;
namespace fave2xml
{
public class LinksParser
{
private ArrayList mList;
private LinksReader reader;
private string element;
private string mCategory;
private string mAddr;
private string mDesc;
public LinksParser(ArrayList list)
{
mList = list;
}
public void parse()
{
mList.Clear();
reader = new LinksReader(XmlLinks.Filename);
while (reader.Read())
{
if (reader.IsIgnoredElement())
continue;
else if (reader.IsRootTag())
continue;
else if (reader.IsStartTag())
OnStartTag();
else if (reader.IsElementValue())
OnElementValue();
else if (reader.IsEndTag())
OnEndTag();
else
Console.WriteLine("Unknown Nodetype='{0}' found at line {1}", reader.NodeType.ToString(), reader.LineNumber);
}
reader.Close();
}
//-----------------------------------
//-- private from here on
//-----------------------------------
private void OnStartTag()
{
if (reader.IsLinkStartTag())
ResetAll();
else
OnOtherStartTag();
if (reader.IsEmptyElement)
OnElementValue();
}
private void ResetAll()
{
mCategory = null;
mAddr = null;
mDesc = null;
}
private void OnElementValue()
{
if (element == null) return;
if (element.Equals("addr"))
mAddr = reader.Value;
else if (element.Equals("desc"))
mDesc = reader.Value;
else if (element.Equals("category"))
mCategory = ToWikiStyle(reader.Value);
else
Console.WriteLine("Unknown tag '{0}' found at line {1}", element, reader.LineNumber);
}
private void OnEndTag()
{
if (reader.IsLinkStartTag())
OnLinkEndTag();
}
private void OnLinkEndTag()
{
Link lk = new Link(mAddr);
lk.Category = mCategory;
lk.Desc = mDesc;
mList.Add(lk);
}
private void OnOtherStartTag()
{
element = reader.LocalName.ToLower();
}
private string ToWikiStyle(string s)
{
return s;
// if (s == null || s.Length == 0) return s;
// return s[0].ToString().ToUpper() + s.ToLower().Trim().Substring(1);
}
}
}
| ||
| ||
using System;
using System.Xml;
namespace fave2xml
{
public class LinksReader : XmlTextReader
{
public LinksReader(string path) : base(path)
{
}
public bool IsStartTag()
{
return this.IsStartElement();
}
public bool IsEndTag()
{
return this.NodeType == XmlNodeType.EndElement;
}
public bool IsElementValue()
{
return this.NodeType == XmlNodeType.Text;
}
public bool IsIgnoredElement()
{
return this.NodeType == XmlNodeType.None ||
this.NodeType == XmlNodeType.XmlDeclaration ||
this.NodeType == XmlNodeType.Whitespace ||
this.NodeType == XmlNodeType.Comment ||
this.NodeType == XmlNodeType.ProcessingInstruction;
}
public bool IsRootTag()
{
return this.LocalName.ToLower().Equals("links");
}
public bool IsLinkStartTag()
{
return this.LocalName.ToLower().Equals("link");
}
}
}
| ||
| ||
using System;
using System.Collections;
using System.Xml;
using System.Xml.Xsl;
namespace fave2xml
{
public class LinksWriter
{
private ArrayList mList = null;
public LinksWriter(ArrayList list)
{
mList = list;
}
public void Save()
{
SaveXml();
SaveHtml();
}
private void SaveXml()
{
if (mList == null) return;
XmlTextWriter xtw = new XmlTextWriter(XmlLinks.Filename, null);
xtw.WriteStartDocument();
xtw.Formatting = System.Xml.Formatting.Indented;
xtw.WriteProcessingInstruction("xml-stylesheet", "type='text/xsl' href='"+ XmlLinks.XSLFilename +"'");
xtw.WriteStartElement("links");
foreach(Link link in mList)
{
link.Save(xtw);
}
xtw.WriteEndDocument();
xtw.Flush();
xtw.Close();
}
private void SaveHtml()
{
XslTransform xslt = new XslTransform();
xslt.Load(XmlLinks.XSLFilename);
xslt.Transform(XmlLinks.Filename, XmlLinks.Filename.Replace(".xml", ".html"));
}
}
}
| ||
| ||
using System;
using System.IO;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using nsExternalScrollbarListBox;
namespace fave2xml
{
/// <summary>
/// Summary description for MainWindow.
/// </summary>
public class MainWindow : System.Windows.Forms.Form
{
private string mCurrentProfile = null;
private ExternalScrollbarListBox mFavourites = new ExternalScrollbarListBox();
private ExternalScrollbarListBox mLinks = new ExternalScrollbarListBox();
private VScrollBar mScrollBar = new VScrollBar();
private XmlLinks mXmlLinks = new XmlLinks();
private System.Windows.Forms.MainMenu mMainMenu;
private System.Windows.Forms.MenuItem mMenuFile;
private System.Windows.Forms.MenuItem mMenuExit;
private System.Windows.Forms.ListBox mChooseProfile;
private System.Windows.Forms.MenuItem mMenuSave;
private System.Windows.Forms.MenuItem menuItem1;
private bool mMouseDown = false;
private string mItemUnderMouseDown;
private Explorer mExplorer = null;
private System.Windows.Forms.MenuItem menuItem2;
private System.Windows.Forms.MenuItem mViewDesc;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public MainWindow()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
mFavourites.SetScrollBar(mScrollBar, false);
mLinks.SetScrollBar(mScrollBar, true);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
mScrollBar
} );
mChooseProfile.Items.AddRange(FavouritesDirectory.GetProfiles());
PopulateLinks();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
if (mExplorer != null)
mExplorer.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()
{
this.mMainMenu = new System.Windows.Forms.MainMenu();
this.mMenuFile = new System.Windows.Forms.MenuItem();
this.mMenuSave = new System.Windows.Forms.MenuItem();
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.mMenuExit = new System.Windows.Forms.MenuItem();
this.menuItem2 = new System.Windows.Forms.MenuItem();
this.mViewDesc = new System.Windows.Forms.MenuItem();
this.mChooseProfile = new System.Windows.Forms.ListBox();
this.mFavourites = new ExternalScrollbarListBox();
this.mLinks = new ExternalScrollbarListBox();
this.SuspendLayout();
//
// mMainMenu
//
this.mMainMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mMenuFile,
this.menuItem2});
//
// mMenuFile
//
this.mMenuFile.Index = 0;
this.mMenuFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mMenuSave,
this.menuItem1,
this.mMenuExit});
this.mMenuFile.Text = "File";
//
// mMenuSave
//
this.mMenuSave.Index = 0;
this.mMenuSave.Text = "Save";
this.mMenuSave.Click += new System.EventHandler(this.mMenuSave_Click);
//
// menuItem1
//
this.menuItem1.Index = 1;
this.menuItem1.Text = "-";
//
// mMenuExit
//
this.mMenuExit.Index = 2;
this.mMenuExit.Text = "Exit";
this.mMenuExit.Click += new System.EventHandler(this.mMenuExit_Click);
//
// menuItem2
//
this.menuItem2.Index = 1;
this.menuItem2.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mViewDesc});
this.menuItem2.Text = "View";
//
// mViewDesc
//
this.mViewDesc.Index = 0;
this.mViewDesc.RadioCheck = true;
this.mViewDesc.Text = "Descriptions";
this.mViewDesc.Click += new System.EventHandler(this.mViewDesc_Click);
//
// mChooseProfile
//
this.mChooseProfile.Location = new System.Drawing.Point(8, 16);
this.mChooseProfile.Name = "mChooseProfile";
this.mChooseProfile.Size = new System.Drawing.Size(88, 303);
this.mChooseProfile.TabIndex = 0;
this.mChooseProfile.SelectedIndexChanged += new System.EventHandler(this.mChooseProfile_SelectedIndexChanged);
//
// mFavourites
//
this.mFavourites.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
this.mFavourites.Location = new System.Drawing.Point(544, 272);
this.mFavourites.Name = "mFavourites";
this.mFavourites.Size = new System.Drawing.Size(48, 56);
this.mFavourites.TabIndex = 1;
this.mFavourites.MouseDown += new System.Windows.Forms.MouseEventHandler(this.mFavourites_MouseDown);
this.mFavourites.MouseMove += new System.Windows.Forms.MouseEventHandler(this.mFavourites_MouseMove);
this.mFavourites.DrawItem += new ExternalScrollbarListBox.DrawItemEventHandler(this.mFavourites_DrawItem);
this.mFavourites.SelectedIndexChanged += new System.EventHandler(this.mFavourites_SelectedIndexChanged);
//
// mLinks
//
this.mLinks.AllowDrop = true;
this.mLinks.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
this.mLinks.Location = new System.Drawing.Point(608, 272);
this.mLinks.Name = "mLinks";
this.mLinks.Size = new System.Drawing.Size(48, 56);
this.mLinks.TabIndex = 2;
this.mLinks.DoubleClick += new System.EventHandler(this.mLinks_DoubleClick);
this.mLinks.DragDrop += new System.Windows.Forms.DragEventHandler(this.mLinks_DragDrop);
this.mLinks.DragEnter += new System.Windows.Forms.DragEventHandler(this.mLinks_DragEnter);
this.mLinks.DrawItem += new ExternalScrollbarListBox.DrawItemEventHandler(this.mLinks_DrawItem);
//
// MainWindow
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(688, 345);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.mLinks,
this.mFavourites,
this.mChooseProfile});
this.Menu = this.mMainMenu;
this.Name = "MainWindow";
this.Text = "MainWindow";
this.Layout += new System.Windows.Forms.LayoutEventHandler(this.mMainWindow_HandleLayout);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new MainWindow());
}
private void mMainWindow_HandleLayout(object sender, LayoutEventArgs e)
{
mChooseProfile.SetBounds(0,0,0,this.ClientSize.Height,BoundsSpecified.Y | BoundsSpecified.Height);
int rightedge = mChooseProfile.Bounds.X + mChooseProfile.Bounds.Width;
int gap = 5;
int lbwidth = (this.ClientSize.Width - mScrollBar.Width - rightedge - gap) / 2;
int leftedge = rightedge + gap;
mFavourites.SetBounds(leftedge,0,lbwidth,this.ClientSize.Height);
leftedge += lbwidth;
mLinks.SetBounds(leftedge,0,lbwidth,this.ClientSize.Height);
leftedge += lbwidth;
mScrollBar.SetBounds(leftedge, 0, mScrollBar.Width, this.ClientSize.Height);
}
private void mMenuExit_Click(object sender, System.EventArgs e)
{
mXmlLinks.Save();
this.Dispose();
}
private void mChooseProfile_SelectedIndexChanged(object sender, System.EventArgs e)
{
string str = ((string) mChooseProfile.SelectedItem).ToLower();
if (mCurrentProfile != null && str.Equals(mCurrentProfile)) return;
mCurrentProfile = str;
PopulateFavourites();
AdjustLists();
}
private void mLinks_DoubleClick(object sender, EventArgs e)
{
Link lk = (Link) mLinks.SelectedItem;
if (lk.IsMissing()) return;
LinkProperties dlg = new LinkProperties(mLinks.Items, lk);
if (dlg.ShowDialog(this) == DialogResult.OK)
{
mLinks.SelectedItem = lk;
mXmlLinks.SetChanged();
}
dlg.Dispose();
}
private void mFavourites_MouseDown(object sender, MouseEventArgs e)
{
int index = mFavourites.IndexFromPoint(new Point(e.X,e.Y));
if(index < 0) return;
mItemUnderMouseDown = index.ToString();
mMouseDown = true;
}
private void mFavourites_MouseMove(object sender, MouseEventArgs e)
{
if (!mMouseDown || mItemUnderMouseDown == null) return;
mFavourites.DoDragDrop(mItemUnderMouseDown, DragDropEffects.Copy);
mMouseDown = false;
mItemUnderMouseDown = null;
}
private void mLinks_DragEnter(object sender, DragEventArgs e)
{
if(e.Data.GetDataPresent("Text"))
e.Effect = DragDropEffects.Copy;
}
private void mLinks_DragDrop(object sender, DragEventArgs e)
{
int index = Int32.Parse((string) e.Data.GetData("Text"));
Link lk = (Link) mFavourites.Items[index];
mLinks.Add(lk);
mXmlLinks.Add(lk);
AdjustLists();
}
private void AdjustLists()
{
CompareLists cmp = new CompareLists();
cmp.compare(mFavourites.Items, mLinks.Items);
mFavourites.Invalidate();
mLinks.Invalidate();
}
private void PopulateFavourites()
{
mFavourites.Clear();
FavouritesDirectory dir = new FavouritesDirectory(mFavourites.Items);
dir.Add(mCurrentProfile);
}
private void PopulateLinks()
{
mXmlLinks.Load();
CopyToListBox();
}
private void CopyToListBox()
{
mLinks.Clear();
mLinks.AddRange(mXmlLinks.ToArray());
}
private void mMenuSave_Click(object sender, System.EventArgs e)
{
mXmlLinks.Save();
}
private void mFavourites_SelectedIndexChanged(object sender, System.EventArgs e)
{
Link lk = (Link) mFavourites.SelectedItem;
if (lk.ToString().Equals("<missing>")) return;
if (mExplorer == null) mExplorer = new Explorer();
mExplorer.ShowPage(lk.ToString());
}
private void mLinks_DrawItem(object sender, DrawItemEventArgs e)
{
Link lk = (Link) mLinks.Items[e.Index];
e.DrawBackground();
SolidBrush brush;
if (lk.IsMissing())
brush = new SolidBrush(Color.Gray);
else if (lk.Category.Equals(""))
brush = new SolidBrush(Color.Red);
else if (lk.Desc.Equals("--not set--"))
brush = new SolidBrush(Color.Goldenrod);
else
brush = new SolidBrush(e.ForeColor);
if (mViewDesc.Checked)
e.Graphics.DrawString(lk.Desc, e.Font, brush, e.Bounds);
else
e.Graphics.DrawString(lk.ToString(), e.Font, brush, e.Bounds);
}
private void mFavourites_DrawItem(object sender, DrawItemEventArgs e)
{
Link lk = (Link) mFavourites.Items[e.Index];
e.DrawBackground();
if (mViewDesc.Checked)
e.Graphics.DrawString(lk.Desc, e.Font, new SolidBrush(e.ForeColor), e.Bounds);
else
e.Graphics.DrawString(lk.ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds);
}
private void mViewDesc_Click(object sender, System.EventArgs e)
{
mViewDesc.Checked = ! mViewDesc.Checked;
mFavourites.Invalidate();
mLinks.Invalidate();
}
}
}
| ||
| ||
using System;
using System.Collections;
namespace fave2xml
{
public class XmlLinks
{
private static readonly string cXmlFile = @"d:\projects\frozen\fave2xml\links.xml";
private static readonly string cXslFile = @"d:\projects\frozen\fave2xml\links.xsl";
private bool mChanged = false;
private ArrayList mList = new ArrayList();
public void Load()
{
mChanged = false;
LinksParser lp = new LinksParser(mList);
lp.parse();
}
public void Save()
{
if (!mChanged) return;
LinksWriter lw = new LinksWriter(mList);
lw.Save();
}
public void Add(Link lk)
{
mChanged = true;
mList.Add(lk);
}
public object[] ToArray()
{
return mList.ToArray();
}
public void SetChanged()
{
mChanged = true;
}
public static string Filename
{
get
{
return cXmlFile;
}
}
public static string XSLFilename
{
get
{
return cXslFile;
}
}
}
}
| ||
| ||
<?xml version="1.0"?>
<?xml-stylesheet type='text/xsl' href='d:\projects\frozen\fave2xml\links.xsl'?>
<links>
<link>
<category>OOP</category>
<addr>ootips.org/ood-principles.html</addr>
<desc>--not set--</desc>
</link>
<link>
<category>OOP</category>
<addr>www.brent.worden.org/tips/index.html</addr>
<desc />
</link>
<link>
<category>OOP</category>
<addr>www.objectmentor.com/publications/articlesByDate.html</addr>
<desc />
</link>
<link>
<category>Wiki</category>
<addr>c2.com/cgi/wiki?QwikWiki</addr>
<desc>a simple wiki wiki web (cgi)</desc>
</link>
<link>
<category>Wiki</category>
<addr>c2.com/cgi/wiki?DevWiki</addr>
<desc>a very simple wiki wiki web, cgi based</desc>
</link>
<link>
<category>Java</category>
<addr>www.preemptive.com/</addr>
<desc>Dash-O(optimizer for Java)</desc>
</link>
<link>
<category>Search</category>
<addr>www.whitepages.com/</addr>
<desc />
</link>
<link>
<category>Search</category>
<addr>www.usbluepages.gov/index.cfm</addr>
<desc />
</link>
<link>
<category>Search</category>
<addr>www.411.com</addr>
<desc />
</link>
<link>
<category>Search</category>
<addr>yp.yahoo.com</addr>
<desc />
</link>
<link>
<category>Search</category>
<addr>www.yp.bellsouth.com</addr>
<desc />
</link>
<link>
<category>Search</category>
<addr>www.anywho.com/rl.html</addr>
<desc />
</link>
<link>
<category>Search</category>
<addr>www.yellowpages.com/</addr>
<desc />
</link>
<link>
<category>Perl</category>
<addr>www.sysadminmag.com/tpj/</addr>
<desc />
</link>
<link>
<category>Java</category>
<addr>www.meurrens.org/ip-Links/java/regex/</addr>
<desc />
</link>
<link>
<category>Ant</category>
<addr>www.savarese.org</addr>
<desc />
</link>
<link>
<category>Ant</category>
<addr>www.oroinc.com</addr>
<desc />
</link>
<link>
<category>Unknown</category>
<addr>www.castsoftware.com</addr>
<desc />
</link>
<link>
<category>Development</category>
<addr>www.usenix.org/events/usenix-win2000/invitedtalks/lucovsky_html/</addr>
<desc>slide show of of NT development.</desc>
</link>
<link>
<category>Java</category>
<addr>herrykoh.topcities.com/projects/index.html</addr>
<desc>Replace() with regexp</desc>
</link>
<link>
<category>Movers</category>
<addr>www.ozark-auto.com</addr>
<desc>car movers</desc>
</link>
<link>
<category>Movers</category>
<addr>www.carmoves.com</addr>
<desc>car movers: aka aaadvantage auto transport</desc>
</link>
<link>
<category>Movers</category>
<addr>www.a2b.com</addr>
<desc>car movers</desc>
</link>
<link>
<category>CSharp</category>
<addr>msdn.microsoft.com/msdnmag/issues/01/11/NetProf/NetProf.asp</addr>
<desc>profiling</desc>
</link>
<link>
<category>AI</category>
<addr>www.erudit.de/erudit/CaseStudies/casest_pdf/alarm_managem.pdf</addr>
<desc>FCM: Fuzzy cognitive maps</desc>
</link>
<link>
<category>Mind maps</category>
<addr>www.aportis.com/products/BrainForest/benefits.html</addr>
<desc>software</desc>
</link>
<link>
<category>Mind maps</category>
<addr>www.store-mindjet.com/index.cfm?category=2</addr>
<desc>software</desc>
</link>
<link>
<category>NT</category>
<addr>www.wdj.com/articles/2000/0005/0005c/0005c.htm?topic=articles</addr>
<desc>Article on multithreaded memory management with C++ under NT4.0</desc>
</link>
<link>
<category>Freeware</category>
<addr>www.papaw.com/index.cgi/Computers/Software/File_Management/File_Comparison/Windows/</addr>
<desc>File comparison</desc>
</link>
<link>
<category>Utilities</category>
<addr>www.epsilonsquared.com/</addr>
<desc>installation monitor and replicator</desc>
</link>
<link>
<category>Hardware</category>
<addr>www.southwest.com.au/~jfuller/webcam/webcam.htm</addr>
<desc>web cam runs under win2K</desc>
</link>
<link>
<category>VB</category>
<addr>www.mztools.com/</addr>
<desc>VB IDE add-in</desc>
</link>
<link>
<category>NT</category>
<addr>www.firedaemon.com/</addr>
<desc>Service wrapper</desc>
</link>
<link>
<category>Freeware</category>
<addr>www.objectmentor.com/resources/downloads/index</addr>
<desc>FSM generator</desc>
</link>
<link>
<category>Web</category>
<addr>support.microsoft.com/default.aspx?scid=kb;EN-US;Q179230</addr>
<desc>attaching to an IE process</desc>
</link>
<link>
<category>Utilities</category>
<addr>www.p-nand-q.com/tools/regdiff.htm</addr>
<desc>registry difference</desc>
</link>
<link>
<category>.Net</category>
<addr>msdn.microsoft.com/msdnmag/issues/01/08/bugslayer/bugslayer0108.asp</addr>
<desc>C++ tricks</desc>
</link>
<link>
<category>Java</category>
<addr>www.tools4java.com/jstyle.html</addr>
<desc>Java automatic code review</desc>
</link>
<link>
<category>Java</category>
<addr>msdn.microsoft.com/downloads/default.asp?URL=/downloads/sample.asp?url=/msdn-files/027/001/867/msdncompositedoc.xml</addr>
<desc>Converts Java to C# (haven't tried it!)</desc>
</link>
<link>
<category>Java</category>
<addr>huizen.dds.nl/~w-p/download.htm</addr>
<desc>Converts Java to VB</desc>
</link>
<link>
<category>Java</category>
<addr>jester.sourceforge.net</addr>
<desc>Detects Zombie and Dead code</desc>
</link>
<link>
<category>Java</category>
<addr>www.refactorit.com/index.html?id=474</addr>
<desc>Detects Zombie and Dead code</desc>
</link>
<link>
<category>Misc</category>
<addr>www.bwgen.com/doload.htm</addr>
<desc>Brain wave generator</desc>
</link>
<link>
<category>Neural networks</category>
<addr>www.informatik.uni-freiburg.de/~heinz/FAQ4.html</addr>
<desc>links to freeware and books.</desc>
</link>
<link>
<category>Neural networks</category>
<addr>www.ensmp.fr/~moutarde/FAQs/Neuron-faq/FAQ5.html#A_source</addr>
<desc>links to source code.</desc>
</link>
<link>
<category>Neural networks</category>
<addr>www.emsl.pnl.gov:2080/proj/neuron/neural/systems/shareware.html</addr>
<desc>links to freeware and utilities, e source code as well</desc>
</link>
<link>
<category>SOM</category>
<addr>www.canis.uiuc.edu/~dpape/dli/summary.html</addr>
<desc>brief description of SOMs</desc>
</link>
<link>
<category>SOM</category>
<addr>www.aist.go.jp/NIBH/~b0616/Lab/B1</addr>
<desc>Sample SOM as a Java applet</desc>
</link>
<link>
<category>SOM</category>
<addr>www.cis.hut.fi/research/javademo/demo2.html</addr>
<desc>Sample SOM as a Java applet</desc>
</link>
<link>
<category>SOM</category>
<addr>www.willamette.edu/~gorr/classes/cs449/Unsupervised/SOM.html</addr>
<desc>description Kohonen SOM</desc>
</link>
<link>
<category>SOM</category>
<addr>www.geocities.com/CapeCanaveral/1624/SOM.html</addr>
<desc>description of SOM tech</desc>
</link>
<link>
<category>SOM</category>
<addr>www.cs.umd.edu/hcil/treemaps</addr>
<desc>type of SOM called a treemap</desc>
</link>
<link>
<category>SOM</category>
<addr>www.eastgate.com/squirrel/Farms.html#MarksFarm</addr>
<desc>type of SOM used for data mining </desc>
</link>
<link>
<category>Graphics</category>
<addr>graphics.stanford.edu/papers/h3</addr>
<desc>lays out a graph in 3D</desc>
</link>
<link>
<category>XP</category>
<addr>c2.com/cgi/wiki?ExtremeProgrammingForOne</addr>
<desc>XP for a solo programmer</desc>
</link>
<link>
<category>Misc</category>
<addr>babel.altavista.com/translate.dyn</addr>
<desc>Translate languages to/from English</desc>
</link>
<link>
<category>Compilers</category>
<addr>agnes.dida.physik.uni-essen.de/~janjaap/mingw32/download.html</addr>
<desc>GCC compiler and all remaining utilities</desc>
</link>
<link>
<category>Graphics</category>
<addr>chortle.ccsu.ctstateu.edu/vectorLessons/tutorialIndex.html</addr>
<desc>vector arithmetic</desc>
</link>
<link>
<category>Graphics</category>
<addr>compgeom.cs.uiuc.edu/~jeffe/compgeom/code.html</addr>
<desc>Computational Geometry</desc>
</link>
<link>
<category>Web</category>
<addr>crit.org/http://crit.org/index.html</addr>
<desc>Web page annotations</desc>
</link>
<link>
<category>Build</category>
<addr>cruisecontrol.sourceforge.net/</addr>
<desc>Cruise Control automates Ant Builds</desc>
</link>
<link>
<category>Languages</category>
<addr>cui.unige.ch/db-research/Enseignement/analyseinfo/BNFweb.html</addr>
<desc>BNF for Java, Sql, Ada, etc...</desc>
</link>
<link>
<category>Languages</category>
<addr>cui.unige.ch/db-research/Enseignement/analyseinfo/JAVA/AJAVA.html</addr>
<desc>BNF for Java</desc>
</link>
<link>
<category>Ant</category>
<addr>cvs.apache.org/viewcvs/~checkout~/jakarta-ant/docs/ant_in_anger.html?rev=1.3.2.1</addr>
<desc>Ant build system</desc>
</link>
<link>
<category>IDE</category>
<addr>eclipse-plugins.2y.net/</addr>
<desc>ecplise plug ins</desc>
</link>
<link>
<category>Web</category>
<addr>faq.clever.net/htaccess.htm</addr>
<desc>HTACCESS documentation</desc>
</link>
<link>
<category>NT</category>
<addr>fox2k.net/2ktweaks/explorer_tweaks.htm</addr>
<desc>Win2k Tweaks and Tips</desc>
</link>
<link>
<category>Web</category>
<addr>ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/media-types</addr>
<desc>media types ("text/xml", etc.)</desc>
</link>
<link>
<category>VB</category>
<addr>huizen.dds.nl/~w-p/download.htm</addr>
<desc>software metrics for VB</desc>
</link>
<link>
<category>Development</category>
<addr>brewforums.qualcomm.com/</addr>
<desc>emulator and SDK for wireless telephone apps</desc>
</link>
<link>
<category>Web Annotation</category>
<addr>crit.org/http://www.math.grin.edu/~rebelsky/Research/Summer1999/Papers/survey_paper.html</addr>
<desc>A Survey of Web Annotation Systems</desc>
</link>
<link>
<category>Neural networks</category>
<addr>crl.ucsd.edu/innate/index.shtml</addr>
<desc>Tlearn Home Page</desc>
</link>
<link>
<category>Java</category>
<addr>file:///c:/jdk1.4.0/docs/api/index.html</addr>
<desc>Java2 doc</desc>
</link>
<link>
<category>Graphics</category>
<addr>file:///D:/jdk1.4.0/html/index.html</addr>
<desc>Java 3D API</desc>
</link>
<link>
<category>Graphics</category>
<addr>graphics.stanford.edu/papers/h3/</addr>
<desc>H3 Laying Out Large Directed Graphs in 3D Hyperbolic Space</desc>
</link>
<link>
<category>Java</category>
<addr>java.sun.com/docs/books/jls/second_edition/html/syntax.doc.html#44467</addr>
<desc>Java2 Syntax (BNF)</desc>
</link>
<link>
<category>Java</category>
<addr>java.sun.com/j2se/1.3/docs/guide/jvmpi/</addr>
<desc>JVMPI</desc>
</link>
<link>
<category>Java</category>
<addr>java.sun.com/j2se/1.4/docs/guide/jni/index.html</addr>
<desc>JNI</desc>
</link>
<link>
<category>Java</category>
<addr>java.sun.com/products/jdk/1.2/docs/guide/jni/jni-12.html#JNI_CreateJavaVM</addr>
<desc>JNI Enhancements in JDK 1.2</desc>
</link>
<link>
<category>Java</category>
<addr>java.sun.com/products/jdk/1.2/docs/guide/jvmdi/jvmdi.html</addr>
<desc>JVMDI</desc>
</link>
<link>
<category>Java</category>
<addr>java.sun.com/products/jdk/1.2/docs/index.html</addr>
<desc>Java(TM) 2 SDK Documentation</desc>
</link>
<link>
<category>Java</category>
<addr>java.sun.com/products/jdk/javadoc/faq.html</addr>
<desc>Javadoc FAQ</desc>
</link>
<link>
<category>Java</category>
<addr>java.sun.com/products/jdk/javadoc/index.html</addr>
<desc>Javadoc Tool Home Page</desc>
</link>
<link>
<category>CSharp</category>
<addr>ms-help://MS.VSCC/MS.MSDNVS/cpguide/html/cpconhostingcommonlanguageruntime.htm</addr>
<desc>Hosting the Common Language Runtime</desc>
</link>
<link>
<category>Hardware</category>
<addr>2cpu.com/Hardware/tyantiger100/tyantiger100.html</addr>
<desc>2CPU.com - Your one stop source for everything SMP</desc>
</link>
<link>
<category>Misc</category>
<addr>flashface.flashmaster.ru/</addr>
<desc>Ultimate Flash Face</desc>
</link>
<link>
<category>Web</category>
<addr>grc.com/default.htm</addr>
<desc>Gibson Research Corporation Homepage</desc>
</link>
<link>
<category>DSP</category>
<addr>heliso.tripod.com/download/download.htm</addr>
<desc>Download signal analyze software</desc>
</link>
<link>
<category>History</category>
<addr>http://www.swtpc.com/mholley/swtpc_6800.htm</addr>
<desc>SWTPC 6800</desc>
</link>
<link>
<category>Mind maps</category>
<addr>john.redmood.com/brainstorming.html</addr>
<desc>Overview of Windows Graphical Brainstorming Tools</desc>
</link>
<link>
<category>Ant</category>
<addr>marc.theaimsgroup.com/?l=ant-user&r=1&w=2</addr>
<desc>ANT - MARC Mailing list ARChives at AIMS</desc>
</link>
<link>
<category>NANT</category>
<addr>nant.sourceforge.net/help/tasks/index.html</addr>
<desc>Nant Task Reference</desc>
</link>
<link>
<category>Graphics</category>
<addr>ncca.bournemouth.ac.uk/CourseInfo/BAVisAn/Year1/Maths/Vectors1/vectors2.html</addr>
<desc>Vectors 2</desc>
</link>
<link>
<category>Web</category>
<addr>people.hofstra.edu/faculty/Stefan_Waner/equation/codeindex.html</addr>
<desc>Stef's HTML Equation Generator</desc>
</link>
<link>
<category>AI</category>
<addr>research.microsoft.com/~jplatt/svm.html</addr>
<desc>Support Vector Machines</desc>
</link>
<link>
<category>Web</category>
<addr>software.decisionsoft.com/tools.html</addr>
<desc>xml pretty printer & diff</desc>
</link>
<link>
<category>Web</category>
<addr>sourceforge.net/projects/expat/</addr>
<desc>SourceForge Project Info - Expat XML Parser</desc>
</link>
<link>
<category>Java</category>
<addr>starship.python.net/crew/garyp/jProf.html</addr>
<desc>jProf (java profiler)</desc>
</link>
<link>
<category>Hardware</category>
<addr>support.iwill.net/index_e.html</addr>
<desc>http--support.iwill.net-index_e.html</desc>
</link>
<link>
<category>Hardware</category>
<addr>support.ati.com/drivers/win2k/win2k_radeon_513013276.html</addr>
<desc>Windows 2000 Display Driver build 5.13.01.3276</desc>
</link>
<link>
<category>AI</category>
<addr>svmlight.joachims.org/</addr>
<desc>SVM-Light Support Vector Machine</desc>
</link>
<link>
<category>Misc</category>
<addr>windump.polito.it/</addr>
<desc>WinDump tcpdump for Windows</desc>
</link>
<link>
<category>Graphics</category>
<addr>www.acm.org/tog/GraphicsGems/</addr>
<desc>Graphics Gems Repository</desc>
</link>
<link>
<category>Graphics</category>
<addr>www.airdmhor.gen.nz/blancmange/notes/maths/vectors/ops/ops.html</addr>
<desc>Operations in Vector Algebra</desc>
</link>
<link>
<category>SOM</category>
<addr>www.aist.go.jp/NIBH/~b0616/Lab/BSOM1/</addr>
<desc>Bayesian Self-Organizing Map Simulation using Java Applet</desc>
</link>
<link>
<category>AI</category>
<addr>www.amazon.com/exec/obidos/ASIN/0195131592/qid=1025545924/sr=8-1/ref=sr_8_1/102-9581403-2918567</addr>
<desc>Amazon.com buying info Swarm Intelligence From Natural to Artificial Systems (Santa Fe Institute Studies on the Sciences of</desc>
</link>
<link>
<category>Languages</category>
<addr>www.antlr.org/</addr>
<desc>ANTLR Website</desc>
</link>
<link>
<category>Misc</category>
<addr>www.asniffer.com/features.html</addr>
<desc>ASniffer</desc>
</link>
<link>
<category>DSP</category>
<addr>www.bearcave.com/misl/misl_tech/wavelets/haar.html</addr>
<desc>Applying the Haar Wavelet Transform to Time Series Information</desc>
</link>
<link>
<category>Embedded</category>
<addr>www.bluewind.it/gnuarm.html</addr>
<desc>BlueWind ARM Toolchain Docs</desc>
</link>
<link>
<category>SOM</category>
<addr>www.cis.hut.fi/research/javasomdemo/demo2.html</addr>
<desc>Demo 2 Visualizing a data set</desc>
</link>
<link>
<category>Neural networks</category>
<addr>www.cnbc.cmu.edu/PDP++/PDP++.html</addr>
<desc>PDP++ Home Page</desc>
</link>
<link>
<category>DSP</category>
<addr>www.codeproject.com/csharp/exocortex.asp</addr>
<desc>The Code Project - Exocortex.DSP - C# Programming</desc>
</link>
<link>
<category>IDE</category>
<addr>www.codeproject.com/tips/vc_ide_keys.asp</addr>
<desc>The Code Project - Some Time-Saving Commands and Key Remappings for the VC IDE - Programming Tips</desc>
</link>
<link>
<category>DSP</category>
<addr>www.cs.cmu.edu/~lenzo/phonebox/</addr>
<desc>phonebox speech synthesis</desc>
</link>
<link>
<category>AI</category>
<addr>www.cs.mcgill.ca/~jthors/251proj.html</addr>
<desc>Barnes-Hut in C java applet</desc>
</link>
<link>
<category>Graphics</category>
<addr>www.cs.panam.edu/info_vis/spr_tr.html</addr>
<desc>A Spring Modeling Algorithm to Position Nodes of an Undirected Graph in Three Dimensions</desc>
</link>
<link>
<category>Neural networks</category>
<addr>www.cs.stir.ac.uk/~lss/NNIntro/InvSlides.html</addr>
<desc>An Introduction to Neural Networks</desc>
</link>
<link>
<category>SOM</category>
<addr>www.cs.umd.edu/hcil/treemaps/</addr>
<desc>Treemaps for space-constrained visualization of hierarchies</desc>
</link>
<link>
<category>DSP</category>
<addr>www.ee.ed.ac.uk/~mjj/dspDemos/EE4/tutDFT.html</addr>
<desc>Discrete Fourier Transform</desc>
</link>
<link>
<category>DSP</category>
<addr>www.eg3.com/WebID/dsp/</addr>
<desc>dsp and communications</desc>
</link>
<link>
<category>Graphics</category>
<addr>www.eng.auburn.edu/department/cse/research/graph_drawing/EDU/auburn/VGJ/doc/EDU.auburn.VGJ.algorithm.shawn.Spring.html</addr>
<desc>Class EDU.auburn.VGJ.algorithm.shawn.Spring</desc>
</link>
<link>
<category>SOM</category>
<addr>www.geocities.com/CapeCanaveral/1624/som.html</addr>
<desc>Neural Networks at your Fingertips - The Self-Organizing Map</desc>
</link>
<link>
<category>Misc</category>
<addr>www.geocities.com/SiliconValley/Heights/5445/survey.html</addr>
<desc>Swift - An Equation Editor in Java</desc>
</link>
<link>
<category>CSharp</category>
<addr>www.go-mono.com/faq.html</addr>
<desc>FAQ - Mono</desc>
</link>
<link>
<category>Neural networks</category>
<addr>www.mathworks.com/products/neuralnet/</addr>
<desc>The MathWorks - Neural Network</desc>
</link>
<link>
<category>Java</category>
<addr>www.mcmanis.com/~cmcmanis/java/dump/</addr>
<desc>Java Dumping Class Files</desc>
</link>
<link>
<category>Particle Swarm</category>
<addr>www.particleswarm.net/</addr>
<desc>Particle Swarm Central</desc>
</link>
<link>
<category>Perl</category>
<addr>www.pconline.com/~erc/perlmod.htm</addr>
<desc>Perl Modules</desc>
</link>
<link>
<category>Mind maps</category>
<addr>www.peterussell.com/Mindmaps/MMSoft.html</addr>
<desc>Mind Map Software</desc>
</link>
<link>
<category>Misc</category>
<addr>www.p-nand-q.com/pynospam.htm</addr>
<desc>http--www.p-nand-q.com-pynospam.htm</desc>
</link>
<link>
<category>AI</category>
<addr>www.sgi.com/tech/mlc/</addr>
<desc>SGI - MLC++ Home Page</desc>
</link>
<link>
<category>Development</category>
<addr>www.studio501.com/CloneFinderReadMe.htm</addr>
<desc>CloneFinder version 2</desc>
</link>
<link>
<category>Misc</category>
<addr>www.topozone.com/map.asp?lat=33.81444&lon=-116.67833</addr>
<desc>TopoZone - The Web's Topographic Map</desc>
</link>
<link>
<category>Development</category>
<addr>www.ultraedit.com/</addr>
<desc>Text Editor - HEX Editor - HTML Editor - Programmers Editor - UltraEdit</desc>
</link>
<link>
<category>Web</category>
<addr>www.w3.org/MarkUp/</addr>
<desc>HTML Home Page</desc>
</link>
</links>
|
| Contact me about content on this page using john_web-at-arrizza-dot-com |
| For Web Master or site problems contact: webadmin-at-arrizza-dot-com |
| Copyright John Arrizza (c) 2001-2010 |