CodeAnywhere 1.0.0.17
Version 1.0.0.17
- Now compiles to .NET 3.5 instead of 2.0
- Added support for updating from the context menu
- You can now return an object instead of a string, and CodeAnywhere will do a ToString on it before writing it back
Sorry – haven’t been around in a while. Thought I’d stop by and release an awesome piece of software, CodeAnywhere.
Let’s say you have this:

And then you press CAPS LOCK:

CodeDOM compiled the code and executed it. (It’s C# code, by the way)
BAM.
I wrote this on the train travelling to work everyday.
Things to note:
- It uses UI Automation to grab the text, so some apps won’t work. Notepad and Wordpad definitely do though.
- It’s meant to set CAPS LOCK state to off when it starts. Some people have reported that it doesn’t though. Comment below if this is you (state your OS please)
HtmlBuilder 0.1.33
HtmlBuilder is simple web design software, and this is it’s first release.
HtmlBuilder uses a simple template system, and includes some example templates under Help/Example Projects.
The HtmlBuilder Main Window
On the left we have the Site browser, which lists all files in the site.
The Color Chooser Window
Favorite colors can be stored on the right hand side.
Requirements
Downloads
Changes
Version 0.1.33 (January 15th 2009)
Added some DTD’s to the Insert/DTD Menu.
Version 0.1.3 (January 14th 2009)
First Release.
ShellContextMenu2
Here's a refactored version of the ShellContextMenu code I released a while back. It has been converted to C# and the code is much better.
A shell context menu is the shortcut menu you see when right clicking on a file in Explorer.
SettingsManager 0.1
SettingsManager is a library that dynamically generates a form to allow the client to edit settings.
Take for example a class that contains the following property:
private bool someBoolean1 = true; public bool SomeBoolean1 { get { return this.someBoolean1; } set { this.someBoolean1 = value; } }
To allow the client to edit this property we would typically create a Form and put some checkboxes, labels etc. on it.
With SettingsManager, we just inherit from the SettingsBase class, and apply a SettingAttribute to the property:
public class MySettings : SettingsBase { private bool someBoolean1 = true; [Setting("Demo Category", "Booleans", "Please check this box.", typeof(BooleanEditor))] public bool SomeBoolean1 { get { return this.someBoolean1; } set { this.someBoolean1 = value; } } }
And show a Settings form:
MySettings settings = SettingsBase.Load<MySettings>("C:\\settings.xml"); TabbedSettingsForm settingsForm = new TabbedSettingsForm(settings); settingsForm.ShowDialog();
And we get this:
Creating custom editors
You may have noticed that the SettingAttribute constructor takes a Type. This we can use to make custom editors for types. Let's take a look at the source for the DateEditor type.
public class DateEditor : SettingEditorBase { DateTimePicker datePicker; public DateEditor(string text, object settingValue) : base(text, settingValue) { this.AddLabel(text); this.datePicker = new DateTimePicker(); this.datePicker.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; this.datePicker.Value = (DateTime)settingValue; this.datePicker.ValueChanged += new EventHandler(datePicker_ValueChanged); this.Controls.Add(datePicker); } private void datePicker_ValueChanged(object sender, EventArgs e) { this.OnSettingChanged(this.datePicker.Value); } }
Notice that we inherit from SettingEditorBase, which is an abstract class. Basically all that is important in this code is that we call OnSettingChanged when the value is changed. This allows the Settings form to enable the Apply button.
Creating custom Settings forms
Creating custom Settings forms is fairly easy. We inherit from SettingsFormBase, and override the InitializeEditors method. All our controls are placed on the contentPanel that is passed in as a parameter.
In InitializeEditors, we loop though this.Categories, and in turn loop through each categories' group. We then add each editor to the form.
The Ok, Cancel and Apply buttons are all taken care of in SettingsFormBase.
public class TabbedSettingsForm : SettingsFormBase { TabControl tabControl; public TabbedSettingsForm(SettingsBase settings) : base(settings) { this.Padding = new Padding(10); } public override void InitializeEditors(Panel contentPanel) { this.tabControl = new TabControl(); this.tabControl.Dock = DockStyle.Fill; contentPanel.Controls.Add(this.tabControl); foreach (SettingCategory category in this.Categories) { TabPage tabPage = new TabPage(category.Name); tabPage.AutoSize = true; this.tabControl.TabPages.Add(tabPage); TableLayoutPanel content = new TableLayoutPanel(); content.Dock = DockStyle.Fill; content.AutoScroll = true; tabPage.Controls.Add(content); foreach (SettingGroup group in category.Groups) { content.Controls.Add(new GroupTitle(group.Name)); foreach (SettingEditorBase editor in group.Editors) { content.Controls.Add(editor); } } } } }
GoogleSearchButtons
My first Firefox extension, a simple toolbar that shows Google search buttons like the Google Toolbar.
EDIT: Maybe I wasn't clear, these buttons search the current web page text and highlight occurrences of the string.
Useful because I've taken to using the main search box included with Firefox, but still wanted those buttons.
Click View/Toolbars/Google Search Buttons to hide or show the toolbar.
Windows XP Service Pack 3 Download Links
Apparently we're not getting SP3 today...
But according to Mr. Martin, we are:
Read about that earlier today here -->
http://blogs.zdnet.com/microsoft/?p=1368&tag=nl.e589 where they have a
link --> http://blogs.zdnet.com/hardware/?p=1778 that has direct links
to all the various language flavours of XP SP3.
Clippee 0.2
I really needed a clipboard manager, and I wanted it to be simple to use. I also didn't want a window showing me a million different items in it.
Introducing Clippee:

Clippee shows you a menu of recently copied items when you press CTRL+ALT+V. When you select an item, whatever is in the clipboard gets swapped with the selected item.
I haven't added support for saving items yet, but will do it soon.
Bugs/Requests in the comments please.
Clippee requires .NET Framework 2.0.