2005-04-28  Dan Winship  <danw@novell.com>

	* libstetic/GladeUtils.cs (PropToString): switch based on the type
	of value, not on prop.PropertyType, since they might not match
	(eg, if UseUnderlying is set).
	(GetProps): skip props that aren't visible on a given wrapper
	
	* glue/custom.c: define the last_modification_time property to
	avoid warnings on glade import

	* libstetic/wrapper/Expander.cs: 
	* libstetic/wrapper/Frame.cs (GladeExportChild): implement

	* libstetic/wrapper/Paned.cs: Remove MaxPosition/MinPosition from
	the Pane Properties; they're not writable.

2005-04-26  Dan Winship  <danw@novell.com>

	* glue/Makefile.am (pkglib_LTLIBRARIES): install libsteticglue.la

	* libstetic/Makefile.am (pkglib_DATA): install libstetic.dll and
	libstetic.dll.config
	(libstetic.dll): update to non-warned-about mcs option syntax
	(CLEANFILES, EXTRA_DIST): update
	
	* libstetic/libstetic.dll.config: remove unused mapping

	* libstetic/wrapper/pixmaps/Makefile.am: remove unused Makefile

	* stetic/Makefile.am (pkglib_DATA, bin_DATA): install stetic and
	stetic.exe
	(stetic.exe): update to non-warned-about mcs option syntax
	(CLEANFILES, EXTRA_DIST): update
	(run, trace, mdb, gdb): targets to run the uninstalled stetic.exe

	* stetic/stetic.in: redo this for installation

	* stetic/stetic.exe.config: remove this; stetic.exe doesn't
	DllImport anything of its own

	* configure.in: remove unused GACUTIL checks

2005-04-20  Dan Winship  <danw@novell.com>

	* libstetic/wrapper/CheckMenuItem.cs: 
	* libstetic/wrapper/ImageMenuItem.cs: 
	* libstetic/wrapper/MenuBar.cs: 
	* libstetic/wrapper/MenuItem.cs: 
	* libstetic/wrapper/RadioMenuItem.cs: 
	* libstetic/wrapper/SeparatorMenuItem.cs: wrap these enough to be
	able to glade-import menus, but not really well enough to be able
	to edit them happily.

	* libstetic/Makefile.am (libstetic.dll): Change the rule to write
	all the args out to a response file and then use that.

	* libstetic/editor/Accelerator.cs: PropertyGrid editor for
	accelerators. Loosely based on EggCellRendererKeys.

	* glue/misc.c (stetic_keycode_is_modifier): for
	Stetic.Editor.Accelerator

	* glue/Makefile.am (libsteticglue_la_SOURCES): add misc.c

2005-04-19  Dan Winship  <danw@novell.com>

	* libstetic/GladeUtils.cs (ParseProperty, PropToString): do the
	value<->string conversion here rather than calling out to C glue.
	Later on, this will let us get rid of some per-widget hacks, but
	for now it just does exactly what the C code did.

	* libstetic/wrapper/Container.cs (GladeExportChild): fix the
	tagging of internal-children, which has apparently been broken for
	a while.

	* glue/value.c: gone

2005-04-13  Dan Winship  <danw@novell.com>

	* libstetic/wrapper/*.cs: change a bunch of fields that are only
	used via reflection to be "internal" rather than "private", so
	that mcs won't warn about their apparent unusedness.

	* libstetic/PropertyDescriptor.cs: remove an unused field

	* stetic/Glade.cs: remove an unused DllImport

2005-04-11  Dan Winship  <danw@novell.com>

	* libstetic/wrapper/HBox.cs: 
	* libstetic/wrapper/HPaned.cs: 
	* libstetic/wrapper/Notebook.cs: 
	* libstetic/wrapper/OptionMenu.cs: 
	* libstetic/wrapper/VBox.cs: 
	* libstetic/wrapper/VPaned.cs: s/.Children//

	* libstetic/wrapper/Container.cs (FindInternalChild): use
	AllChildren
	(RealChildren): use AllChildren. kill RealChildEnumerator.

	* libstetic/wrapper/Widget.cs (InterceptClicks, FindWrapper): use
	AllChildren, kill ChildEnumerator

	* stetic/Grid.cs (ForAll): use new signature

2005-04-11  Dan Winship  <danw@novell.com>

	* glue/custom.c (custom_new): new method

	* libstetic/RadioGroupManager.cs (this[Gtk.Widget]): track the
	Destroyed event on radio widgets and update everything
	appropriately when a radio widget is destroyed.

	* libstetic/wrapper/Widget.cs (Delete): UnSelect when Deleting.

	* libstetic/wrapper/Container.cs (UnSelect): clear the Project
	selection when unselecting.

	* libstetic/wrapper/Custom.cs (Stetic.Custom.ctor()): call
	custom_new()

	* TODO: misc updates

2005-04-07  Dan Winship  <danw@novell.com>

	* glue/custom.c: 
	* libstetic/wrapper/Custom.cs: 
	* libstetic/wrapper/pixmaps/custom.png: Add custom widgets (a bit
	kludgy at the moment).

	* libstetic/wrapper/Calendar.cs (GladeImport): handle "display_options"

	* libstetic/wrapper/ComboBox.cs (Items): tag this properly for
	glade import/export

	* libstetic/wrapper/ScrolledWindow.cs (AddPlaceholder): override
	this to add the placeholder in a viewport

	* libstetic/wrapper/Widget.cs (ParentWrapper): fix to not get into
	an infinite loop on toplevel windows.

2005-04-07  Dan Winship  <danw@novell.com>

	Add Toolbar and its children, plus a bunch of things I had to fix
	to get there.
	
	* libstetic/DND.cs (Cancel): Returns the widget that was being
	dragged, after removing it from the DragWindow, so we don't get
	errors when you cancel a drag.

	* libstetic/HandleWindow.cs (Dispose): disconnect from
	selection.WidgetEvent.
	(SelectionEvent): if the event occurred in the handle window,
	always return true. Fixes the bug where widgets sometimes undrew
	themselves when they were selected.

	* libstetic/ObjectWrapperAttribute.cs (ObjectWrapperType): kill
	this enum
	(Type): make this a string

	* libstetic/ObjectWrapperType.cs: new static class containing
	constant strings for the predefined wrapper types (including the
	new ToolbarItem type).

	* libstetic/Placeholder.cs (OnDragDrop): remove this; Container
	can handle the event itself.

	* libstetic/PropertyDescriptor.cs: Fix this to be able to handle
	the case of a subproperty of a wrapper type (eg,
	ToolItem.IsImportant in Wrapper.Toolbar.ToolbarChild)

	* libstetic/RadioGroupManager.cs: Move the group-handling code
	from Wrapper.RadioButton here, and genericize it to be able to
	work with RadioToolButtons and RadioMenuItems as well.

	* libstetic/editor/GroupPicker.cs: update to use RadioGroupManager.

	* libstetic/wrapper/Container.cs (PlaceholderDragDrop): connect to
	this directly rather than having the Placeholder proxy it to us.
	(CreateDragSource): new virtual method to create a Placeholder (or
	not) specifically for when dragging something out of a container
	(CreatePlaceholder): update signal-handling here
	(RealChildren): make this virtual

	* libstetic/wrapper/Toolbar.cs: Wrap this.
	(RealChildren, ReplaceChild): Override these to handle "invisible"
	ToolItem wrappers around non-ToolItem objects stuck into the
	toolbar.
	(DoSync, Drop): do DND autoexpanding. (At some point, we should
	use the actual toolbar DND editing methods.)
	(CreateDragSource, DragEnd): return a Gtk.Invisible rather than
	adding a placeholder to the toolbar.
	(ToolbarChild): wrap this, putting the three ToolItem properties
	here, since it's where they really belong.

	* libstetic/wrapper/RadioButton.cs: port to use RadioGroupManager

	* libstetic/wrapper/Widget.cs (Wrap, InterceptClicks): recursively
	set up event interception, so that widgets with internal embedded
	widgets work correctly.
	(ParentWrapper): Make this able to cope with non-wrapped widgets
	in the hierarchy.

	* libstetic/wrapper/RadioToolButton.cs: 
	* libstetic/wrapper/SeparatorToolItem.cs: 
	* libstetic/wrapper/ToggleToolButton.cs: 
	* libstetic/wrapper/ToolButton.cs: Wrap

	* stetic/Palette.cs: update for ObjectWrapperType changes

2005-04-05  Dan Winship  <danw@novell.com>

	* libstetic/wrapper/Widget.cs (ToString): override

	* stetic/ContextMenu.cs (ContextMenu): Update for WidgetSite
	removal; use the right context widget. Also, only include the
	insensitive "name" label on the top-level menu.

2005-04-04  Dan Winship  <danw@novell.com>

	* libstetic/PropertyDescriptor.cs (GladeName): fix for proxied
	properties so that MnemonicWidget works right.

	* libstetic/wrapper/Button.cs (ConstructChild): Fix so that stock
	icons always UseUnderline

	* libstetic/wrapper/Container.cs (FindInternalChild): No need to
	recurse upward here any more. Also, return the wrapper rather than
	the child.
	(GladeSetInternalChild): don't create a wrapper here, since the
	widget must already have one.
	(Select): add a workaround for when you select a widget that isn't
	mapped.

	* libstetic/wrapper/OptionMenu.cs (Wrap): create a wrapper for the
	menu.
	(GladeSetInternalChild): override this, since the menu (which
	glade considers to be an internal child of the optionmenu) is not
	actually a real child.

	* libstetic/wrapper/Widget.cs (FindWrapper): don't find widgets
	that aren't mapped.
	(HasDefault, HierarchyChanged): Fix the logic here; a widget
	always has a "Toplevel", it's just that the Toplevel is not always
	actually a toplevel widget.

	* libstetic/wrapper/Window.cs (Select): Show() the window when it
	is selected.

2005-03-29  Dan Winship  <danw@novell.com>

	* libstetic/HandleWindow.cs (SelectionEvent): simplify for gdk#
	changes

	* libstetic/editor/Image.cs: Use reflection to get the list of
	stock IDs rather than Gtk.Stock.ListIds, since the latter will
	return 2.6-specific IDs if you have libgtk 2.6.
	(Image): pack the combobox into a vbox so it won't expand
	incorrectly.
	
	* libstetic/wrapper/ButtonBox.cs (GladeImportChild): fix
	ResponseId handling.

	* libstetic/wrapper/Container.cs (Select, UnSelect): virtualize
	(Delete): new method to delete a widget and replace it with a
	Placeholder.

	* libstetic/wrapper/Label.cs (Label (string)): pass "true" to Wrap
	so it doesn't bash the passed-in label string

	* libstetic/wrapper/Notebook.cs (GladeImportChild, InsertPage):
	Remove FIXMEs.
	(GladeExportChild): fix a leftover WidgetSiteism.
	(Select): override this; if a tab is selected, switch to its page.
	(ReplaceChild): allow tabs to be replaced, and don't muck things
	up when pages get replaced

	* libstetic/wrapper/Table.cs (Sync): fix to not get caught in
	infinite loops again.

	* libstetic/wrapper/Widget.cs (WidgetEvent): simply for gdk#
	changes.
	(FindWrapper): search all children (not just non-internal ones)
	(Delete): new method to delete a widget (by calling
	ParentWrapper.Delete)

	* stetic/ContextMenu.cs (DoDelete): use Wrapper.Widget.Delete()

2005-03-29  Dan Winship  <danw@novell.com>

	* libstetic/WidgetBox.cs:
	* libstetic/WidgetSite.cs: GONE!

	* libstetic/Placeholder.cs: inherit from DrawingArea rather than
	WidgetBox now.
	(NewWindow): Gone. The DrawingArea creates the window for us now.
	(Mimic, UnMimic): kill; Wrapper.Container watches out for this now

	* libstetic/HandleWindow.cs (SelectionEvent): intercept
	ButtonPress and Motion events and signal to the parent container
	when to start dragging.

	* libstetic/DND.cs (SourceSet, SourceUnset, SourceButtonPress,
	CanDrag): Remove "non-automatic" drag sources; HandleWindow
	handles that now.
	(AddFault, etc): update/rename stuff for WidgetSite removal

	* libstetic/IStetic.cs (CreateWidgetSite, CreatePlaceholder): gone
	(PopupContextMenu): new, to make the app pop up a context menu
	(Selection): new read/write property to replace old Select() method

	* libstetic/wrapper/Widget.cs (Wrap): add ButtonPressMask to the
	widget eventmask, and connect to WidgetEvent and PopupMenu
	(ParentWrapper): simplify for lack of WidgetSites
	(WidgetEvent): intercept button presses and walk through the
	widget's children to find the deepest wrapped widget that the
	click was inside (since NoWindow widgets will no longer be able to
	report their own clicks). Handle selection and context menus.

	* libstetic/wrapper/Container.cs (GladeImportChild,
	GladeExportChild): remove WidgetSite handling
	(Add): replaces AddWidgetSite
	(CreateWidgetSite, SiteButtonPress, SiteMotionNotify): gone
	(CreatePlaceholder): create the Placeholder directly rather than
	needing stetic.CreatePlaceholder.
	(PlaceholderDrop, PlaceholderDragEnd): don't create a WidgetSite
	(RealChildren): replaces Sites
	(HandleWindowDrag): initiate drag and drop from here.
	(ChildHExpandable, ChildVExpandable): checks the expandability of
	a child (which might be a Placeholder, or not)

	* libstetic/wrapper/*.cs: Update for WidgetSite removal, and
	ChildHExpandable/ChildVExpandable.

	* stetic/ContextMenu.cs (OnSelectionDone): be self-destroying

	* stetic/Glade.cs (ExportWidget): no more WidgetSites

	* stetic/Project.cs (Selection): change from method to property
	(CreateWidgetSite, CreatePlaceholder): Kill
	(PopupContextMenu): Implement
	(AddWidget, ContentsChanged): s/foo.Sites/foo.RealChildren/

2005-03-28  Dan Winship  <danw@novell.com>

	* libstetic/HandleWindow.cs: new class to implement selection handles.

	* libstetic/WidgetBox.cs: Remove all handle-related code

	* libstetic/IStetic.cs (Select): new, to tell the main program to
	select a widget (rather than having the it listen for an event on
	all toplevel windows).

	* libstetic/wrapper/Widget.cs (Select, UnSelect): tell the parent
	container (if any) to select this widget
	(CreateWidgetSite, CreatePlaceholder): remove these; anything that
	is a container needs to be subclassing Container, not Widget.

	* libstetic/wrapper/Container.cs (CreateWidgetSite,
	CreatePlaceholder): catch ButtonPressEvents
	(SiteButtonPress, PlaceholderButtonPress): handle
	selection/context menus
	(Select, UnSelect): update handles, call stetic.Select()

	* libstetic/wrapper/Notebook.cs: FIXME out a few bits for now...

	* libstetic/wrapper/Table.cs (OnButtonPressEvent): remove this
	code, which has been commented-out forever.

	* libstetic/wrapper/Window.cs (SetFocus, Select): gone; selection
	is handled at the Container level now.

	* stetic/Project.cs (WindowFocusChanged): gone
	(IStetic.Select): handle selection here
	(SelectedHandler): change the WidgetBox arg to a Wrapper.Widget

	* stetic/ProjectView.cs (WidgetSelected):
	* stetic/PropertyGrid.cs (Selected): update signature

2005-03-24  Dan Winship  <danw@novell.com>

	* libstetic/DND.cs: move the drag-and-drop "fault" code from
	WidgetSite to here. Remove the DragBegin and DragEnd events since
	nothing needs them any more.

	* libstetic/WidgetSite.cs (AddFault, AddVFault, AddHFault,
	ClearFaults, ShowFaults, HideFaults, OnDragMotion, OnDragLeave,
	OnDragDrop): all moved into DND now.
	(Internal): gone; does nothing WidgetBox.Internal doesn't do now

	* libstetic/wrapper/Widget.cs (Drop): dummy virtual implementation
	that just destroys the dropped widget

	* libstetic/wrapper/Box.cs (Sync): s/site/DND/ for all the fault
	stuff
	(Drop): override to dtrt

2005-03-24  Dan Winship  <danw@novell.com>

	More code migration out of WidgetSite

	* libstetic/DND.cs (DragWidget): public accessor for dragWidget

	* libstetic/Placeholder.cs (Mimic, UnMimic): makes a Placeholder
	mimic the size and expandability of a given WidgetSite. (Replaces
	the old "PseudoOccupied" mode of WidgetSite).

	* libstetic/WidgetSite.cs (Contents): killed, was redundant with
	"Child".
	(ShapeChanged): gone, replaced by ChildContentsChanged on
	Wrapper.Container.
	(Occupancy, Empty): gone. pseudo-occupancy is now handled by
	Placeholder; all WidgetSites are now always actually occupied.
	(OnMotionNotifyEvent, OnDragDataDelete, OnDragEnd): handled by
	Wrapper.Container now
	
	* libstetic/wrapper/Button.cs: s/site.Contents/site.Child/

	* libstetic/wrapper/Box.cs (DoSync): do autosizing here
	(ReplaceChild): kill off the empty-placeholder-killing code for now

	* libstetic/wrapper/Container.cs (Freeze, Thaw, Sync, DoSync):
	move Freeze/Thaw here from Table, change the overridable method to
	"DoSync" and make Sync check frozenness and then call DoSync.
	(CreateWidgetSite): Set up DND on the site and if it contains a
	container, connect to its ContentsChanged method (to replace the
	old WidgetSite.ShapeChanged method).
	(SiteMotionNotify, PlaceholderDragEnd): handle DND.
	(ChildContentsChanged): Replaces SiteShapeChanged;
	
	* stetic/Glade.cs: 
	* stetic/Project.cs: 
	* stetic/PropertyGrid.cs: s/site.Contents/site.Child/

2005-03-23  Dan Winship  <danw@novell.com>

	Move IWidgetSite and WindowSite interfaces to
	Stetic.Wrapper.Widget and Stetic.Wrapper.Window.

	* libstetic/wrapper/Widget.cs (Wrapped): override to return a
	Gtk.Widget, to get rid of lots of typecasting
	(ParentWrapper): replacement for WidgetSite.ParentSite; returns
	the wrapper for the wrapped widget's parent
	(InternalChildId, Select): Moved here from WidgetSite.

	* libstetic/wrapper/Window.cs (FocusChanged): moved here from
	WindowSite.
	(Select): override

	* libstetic/WidgetSite.cs (ParentSite): gone; replaced by
	Wrapper.Widget.ParentWrapper.
	(Internal): replaces InternalChildId.
	(Drop): call Select on the wrapper, not the site.
	(Select, UnSelect, Delete): gone

	* libstetic/IWidgetSite.cs: 
	* libstetic/WindowSite.cs: gone

	* libstetic/wrapper/Button.cs (HasResponseId): use ParentWrapper
	rather than ParentSite.

	* libstetic/wrapper/Container.cs (GladeExportChild,
	FindInternalChild): update for InternalChildId move from
	WidgetSite to Wrapper.Widget.
	(ChildWrapper): take a Wrapper.Widget instead of an IWidgetSite.
	(PlaceholderDrop): call Select on the wrapper, not the site.

	* libstetic/wrapper/Dialog.cs (Wrap): set InternalChildId on the
	wrapper, not the site.

	* stetic/ContextMenu.cs: Change all IWidgetSites to
	Stetic.Wrapper.Widgets

	* stetic/Project.cs (AddWindow): take a Stetic.Wrapper.Window
	rather than a WindowSite.
	(ProjectNode): add a "Wrapper" field

	* stetic/ProjectView.cs (RowSelected, WidgetSelected): update to
	use wrappers intead of sites.

	* stetic/Glade.cs (Import): 
	* stetic/WidgetFactory.cs (WindowFactory.OnButtonPressEvent):
	don't need to create a WindowSite for top-level windows any more.
	Just pass the wrapper to Project.AddWindow instead.

2005-03-23  Dan Winship  <danw@novell.com>

	Split apart placeholders and WidgetSites. This is an intermediate
	step on the road to killing off WidgetSite, and several wrappers
	are broken in this check-in because it doesn't make much sense to
	fix them twice.

	* libstetic/Placeholder.cs: New subclass of WidgetBox to represent
	a placeholder (which can accept drops, but can't actually hold
	widgets).

	* libstetic/WidgetSite.cs: Mostly remove support for empty
	WidgetSites (though not pseudo-occupied ones).

	* libstetic/WidgetBox.cs: Move some stuff here from WidgetSite
	that both WidgetSite and Placeholder will need. Move out some (but
	not all) stuff that they don't both need.

	* libstetic/WindowSite.cs (FocusChangedHandler, FocusChanged):
	make the focus be a WidgetBox rather than an IWidgetSite

	* libstetic/CommandDescriptor.cs: 
	* libstetic/ItemDescriptor.cs: Update commands to take a Widget
	context rather than an IWidgetSite.

	* libstetic/wrapper/Bin.cs: 
	* libstetic/wrapper/Box.cs: 
	* libstetic/wrapper/Dialog.cs: 
	* libstetic/wrapper/Expander.cs: 
	* libstetic/wrapper/Frame.cs: 
	* libstetic/wrapper/Notebook.cs: 
	* libstetic/wrapper/Paned.cs: 
	* libstetic/wrapper/ScrolledWindow.cs: 
	* libstetic/wrapper/Table.cs: 
	* libstetic/wrapper/Window.cs: update for site/placeholder changes

	* libstetic/wrapper/Widget.cs (CreateWidgetSite): Make this take a
	widget to put in the WidgetSite.
	(CreatePlaceholder): like the old CreateWidgetSite, but creates a
	Placeholder.

	* libstetic/wrapper/Container.cs: update for site/placeholder
	changes
	(ReplaceChild): new virtual method to replace one child widget
	with another
	(SiteEmpty): replace the site with a placeholder
	(PlaceholderDrop): replace the placeholder with a WidgetSite
	containing the dropped widget.

	* libstetic/wrapper/Button.cs: update for site/placeholder changes
	(Wrap): fix this so we don't get blank buttons
	(ConstructChild): fix this to work around a maybe-bug in gtk
	2.4.12 and earlier.

	* stetic/*.cs: Misc updates for WidgetSite/Placeholder changes

2005-03-21  Dan Winship  <danw@novell.com>

	* libstetic/wrapper/Button.cs: Remove "UseStock" property and just
	use a Stetic.Editor.Image to select either a stock icon or a file.
	Also allow stock icon (or file) with non-stock label.
	(GladeImportChild, FixupGladeChildren): import correctly

	* libstetic/wrapper/ToggleButton.cs: likewise

	* libstetic/wrapper/Dialog.cs (AddButton): update for Button changes

	* libstetic/wrapper/Image.cs (File): This is equivalent to the
	GladeProperty "pixbuf".

	* libstetic/editor/Image.cs: fixes

	* libstetic/GladeUtils.cs (ParseGladeProperty): don't try to parse
	string properties, since they don't need to be (and might not
	correspond to underlying properties anyway).

2005-03-21  Dan Winship  <danw@novell.com>

	* glue/paramspec.c: 
	* libstetic/ParamSpec.cs: Simplify based on the latest version of
	the patch in #70061.

	* libstetic/ParamFlags.cs: gone; we never used this
	
	* libstetic/libstetic.dll.config: add libgtk to the map

2005-03-18  Dan Winship  <danw@novell.com>

	* libstetic/editor/Image.cs: editor that allows selecting a stock
	image or a file

	* libstetic/editor/ImageFile.cs: subclass of Stetic.Editor.Image
	that only allows picking a file

	* libstetic/editor/StockItem.cs: now a subclass of Image

	* libstetic/editor/File.cs: gone

	* libstetic/wrapper/Image.cs: Use ImageFile editor and fix things
	up a bit.

	* libstetic/wrapper/Window.cs (Icon): wrap, using the ImageFile editor

2005-03-17  Dan Winship  <danw@novell.com>

	* libstetic/WidgetBox.cs (Internal): new property saying that the
	box represents an internal object.
	(ShapeHandles): if the box is Internal, don't add corner handles.

	* libstetic/WidgetSite.cs (InternalChildId): set the "Internal"
	property according to whether or not the child id is null, and
	call DND.SourceUnset if marking something internal, so it can't be
	dragged anywhere.

	* libstetic/DND.cs (SourceUnset): new.
	(SourceButtonPress, CanDrag): make sure that CanDrag always
	returns false if the widget isn't a source.

	* stetic/ContextMenu.cs (ContextMenu): disable Cut and Delete on
	"Internal" widgetsites.

	* libstetic/ItemDescriptor.cs (VisibleIf, InvisibleIf): mark a
	property visible if/unless another property is set
	(VisibleFor): Check if the property should be visible on a given
	object.

	* stetic/PropertyGrid.cs (AppendProperty): skip properties that
	shouldn't be visible on this wrapper. 

	* libstetic/wrapper/Button.cs (Register): add a "ResponseId"
	property, and a "HasResponseId" property saying whether or not it
	should be visible.
	(HasResponseId): Check if the button's site's parentsite has an
	InternalChildId of "action_area"

	* libstetic/editor/ResponseId.cs: ComboBoxEntry for dialog button
	Response IDs.

	* libstetic/wrapper/Dialog.cs (Register): add Buttons and
	HelpButton properties.
	(Wrap): set HasSeparator false. Give the internal children sane
	names. Create a button by default.
	(Buttons): Allow the user to pick default buttons via a menu
	(HelpButton): Toggle a "Help" button on/off.

	* libstetic/wrapper/Box.cs: Fix some minor autoexpand problems,
	make it work right with buttonboxes.

	* libstetic/wrapper/Widget.cs (HasDefault): instead of marking
	this "LateImport", if it's set when the widget doesn't have a
	Toplevel, connect to "HierarchyChanged". (That way things other
	than glade import can set it at inappropriate times as well.)

2005-03-15  Dan Winship  <danw@novell.com>

	* libstetic/editor/StockItem.cs: fix sorting again. (ignore "_")

	* libstetic/wrapper/CheckButton.cs: 
	* libstetic/wrapper/Entry.cs: 
	* libstetic/wrapper/ProgressBar.cs: 
	* libstetic/wrapper/RadioButton.cs: 
	* libstetic/wrapper/Statusbar.cs: mark HExpandable

	* libstetic/wrapper/DrawingArea.cs: 
	* libstetic/wrapper/TextView.cs: 
	* libstetic/wrapper/TreeView.cs: mark HExpandable and VExpandable

2005-03-15  Dan Winship  <danw@novell.com>

	* libstetic/WidgetSite.cs (AddFault, AddHFault, AddVFault): Make
	AddHFault and AddVFault take WidgetSites rather than coordinates,
	and provide AddFault for fully-generic fault adding. For AddHFault
	and AddVFault, make the fault windows fill the entire space
	between the two widgets (or from the widget to the edge of its
	parent) if the widgets are spread apart.
	(OnDragMotion): Center the splitter inside its fault since the
	fault may be very large now.

	* libstetic/wrapper/Box.cs (Sync): update for that

	* stetic/Project.cs (ContentsChanged): fix a crash when dragging a
	widget from one position to another within the same container

2005-03-14  Dan Winship  <danw@novell.com>

	* libstetic/WidgetSite.cs (FindFault): fix another autoexpand
	buglet
	(Drop): fix the focus in the autoexpand case

	* libstetic/editor/StockItem.cs: sort the buttons by their Label,
	not their StockId

	* libstetic/wrapper/Box.cs (Wrap): Add 2 children to start out,
	rather than 3.
	(SiteOccupancyChanged): If a site is emptied, destroy it rather
	than leaving an empty site behind (since you can still drag a new
	widget there even without the empty site).

2005-03-14  Dan Winship  <danw@novell.com>

	* libstetic/WidgetSite.cs: Make OccupancyChanged mean only
	"Occupancy changed", and add a new ShapeChanged event for when
	something else happens that may affect AutoSizing in its parent.
	(ToString): override this for debug purposes

	* libstetic/wrapper/Container.cs (CreateWidgetSite, SiteRemoved):
	connect to/disconnect from ShapeChanged
	(SiteShapeChanged): new virtual method
	(SiteRemoved): call EmitContentsChanged()

	* libstetic/wrapper/Box.cs (InsertBefore, InsertAfter, DropOn):
	call EmitContentsChanged()
	(SiteShapeChanged): connect to this, not OccupancyChanged

	* libstetic/wrapper/Expander.cs: don't EmitContentsChanged when
	toggling the expander, make HExpandable/VExpandable not depend on
	whether or not the expander is expanded.

	* libstetic/wrapper/Table.cs (Sync): EmitContentsChanged() iff we
	added sites.
	(SiteShapeChanged): connect to this, not OccupancyChanged

	* stetic/Project.cs (AddWindow): take a WindowSite rather than a
	Window, and connect to its FocusChanged event
	(AddWidget): connect to the widget's Destroyed event
	(WidgetDestroyed): remove the widget from the tree
	(ContentsChanged): simplify using new gtk# api
	(Selected): new event, emitted from the WindowSite.FocusChanged
	handler

	* stetic/ProjectView.cs (ProjectView): connect to the project's
	"Selected" event.
	(RowSelected): if not already syncing, grab the selection on the
	widget corresponding to the row.
	(WidgetSelected): if not already syncing, move the table selection
	to the selected widget.

	* stetic/Stetic.cs: pass Project to the PropertyGrid.
	(Select, NoSelection): gone; the PropertyGrid snoops the Project
	directly now.

	* stetic/Glade.cs (Import):
	* stetic/WidgetFactory.cs (WindowFactory): remove focus-handling
	code; Project.AddWindow will deal with it now

	* stetic/PropertyGrid.cs (PropertyGrid): take a Project and
	connect to its Selected event and set the selection directly from
	that.

2005-03-11  Dan Winship  <danw@novell.com>

	First draft of Glade export.

	* libstetic/GladeException.cs: simplify/fix

	* libstetic/GladePropertyAttribute.cs: add "UseUnderlying", to
	specify that export should use the underlying GObject property
	rather than the stetic wrapper's version.

	* libstetic/GladeUtils.cs (ExtractWrapperProperty): don't extract
	properties with the "UseUnderlying" flag set.
	(ParseGladeProperty): deal with the various new kinds of
	PropertyDescriptor confusion.
	(ExportWidget): base glade export method
	(GetProps): utility method to fill in a Hashtable from a wrapper

	* libstetic/ItemGroup.cs (ItemGroup): deal with '/'s in property
	names.

	* libstetic/ObjectWrapper.cs (WrappedType, NativeTypeName): make
	these public so GladeUtils can use them.

	* libstetic/ParamSpec.cs (ValueType, OwnerType): fix the return
	type

	* libstetic/PropertyDescriptor.cs (PropertyDescriptor): Allow
	property names to have '/'s like "XOptions/XExpand", meaning that
	the real property is XOptions, but it's being split up into other
	properties (including XExpand) in stetic. For split properties
	like that, and sub-properties like "Adjustment.Value", create a
	PropertyDescriptor representing the intermediate property too.
	(GladeProperty): returns the PropertyDescriptor to use for glade
	export (when that's not the same as the PropertyDescriptor itself)
	(GladeGetValue, GladeSetValue): renamed to not have "proxy" in the
	name. Handle all getting/setting of properties for glade.

	* libstetic/SiteContentEnumerator.cs: gone;
	Stetic.Wrapper.Container.Sites handles this by itself now.

	* libstetic/WidgetSite.cs (InternalChildId): property to mark a
	WidgetSite as containing an "internal child" of the widget.

	* glue/value.c: reorg a bunch
	(stetic_g_value_child_property_to_string,
	stetic_g_value_property_to_string, stetic_g_value_to_string): new
	functions for glade export

	* libstetic/wrapper/Widget.cs (GladeExport): implement

	* libstetic/wrapper/Container.cs (GladeExportChild): implement
	(FindInternalChild): make this less gross by expecting the
	container's wrapper class to have set the InternalChildId on the
	relevant WidgetSite.
	(Sites): use Gtk.Container.Forall so that internal sites get
	returned too.

	* libstetic/wrapper/Button.cs (Label): set UseUnderlying

	* libstetic/wrapper/Dialog.cs (Wrap): set InternalChildId on the
	internal children.

	* libstetic/wrapper/Image.cs (IconSize): set UseUnderlying

	* libstetic/wrapper/Notebook.cs (GladeExportChild): do the inverse
	of the GladeImportChild hackery to represent notebook tabs
	correctly.

	* libstetic/wrapper/RadioButton.cs (GladeExport): fake the "group"
	property.

	* libstetic/wrapper/Table.cs (TableChild): rewrite the property
	names as, eg, "XOptions/XExpand", so they will be exported
	correctly.

	* stetic/Glade.cs (Export): Implement

	* stetic/Project.cs (AddWidget, ContentsChanged): Use
	Stetic.Wrapper.Container.Sites directly rather than using
	SiteContentEnumerator.
	(Toplevels): add an enumerator exposing this, for Glade.Export

	* stetic/PropertyEditor.cs: Fix for PropertyDescriptor changes

	* stetic/Stetic.cs: add an "Export" command to the menu.

2005-03-11  Dan Winship  <danw@novell.com>

	* libstetic/ObjectWrapper.cs (Register, Create): if the wrapper
	type doesn't have a CreateInstance method and the wrapped type
	doesn't have a no-arg constructor, use g_object_new and the IntPtr
	constructor.

	* libstetic/wrapper/Alignment.cs: 
	* libstetic/wrapper/Arrow.cs:
	* libstetic/wrapper/HBox.cs: 
	* libstetic/wrapper/RadioButton.cs: 
	* libstetic/wrapper/VBox.cs: 
	* libstetic/wrapper/Window.cs: remove no-longer-necessary
	CreateInstance methods

2005-03-08  Dan Winship  <danw@novell.com>

	* libstetic/GladePropertyAttribute.cs: new attribute to mark
	properties that need special treatment for glade import/export (to
	allow us to do the special treatment automatically rather than
	needing custom GladeImport/GladeExport routines).
	(GladeProperty): flags type for GladePropertyAttribute. Currently
	defines Proxied (meaning that an alternate property is actually
	used for glade import/export) and LateImport (meaning that on
	import, the property shouldn't be set until the import has
	completed).

	* libstetic/PropertyDescriptor.cs: track glade-related info
	(GladeFlags, GladeName): new accessors
	(GladeProxyGetValue, GladeProxySetValue): getter/setter for glade
	proxy properties

	* libstetic/GladeUtils.cs (ImportWidget): replace CreateWidget and
	SetProps with two new ImportWidget methods that also handle
	[GladeProperty] properties.

	* libstetic/ObjectWrapper.cs (GladeImport): if the GladeImport
	invocation throws a TargetInvocationException, throw its
	InnerException (presumably a GladeException) up to the caller.

	* libstetic/wrapper/ComboBox.cs	(Items): add
	GladePropertyAttribute noting that this is glade's "items"
	property.
	(GladeImport): simplify

	* libstetic/wrapper/Container.cs (GladeSetInternalChild): update.

	* libstetic/wrapper/Entry.cs (InvisibleChar): add this, with a
	GladePropertyAttribute marking GladeInvisibleChar as its proxy
	(GladeInvisibleChar): get/set InvisibleChar as a string
	(GladeImport): gone

	* libstetic/wrapper/Label.cs (MnemonicWidget): add this, with a
	GladePropertyAttribute marking GladeMnemonicWidget as its
	LateImport proxy
	(GladeMnemonicWidget): get/set MnemonicWidget as a string
	(GladeImport): gone

	* libstetic/wrapper/TextView.cs	(Text): add a
	GladePropertyAttribute noting that this is glade's "text"
	property.
	(GladeImport): gone

	* libstetic/wrapper/Widget.cs (Visible, HasDefault): add
	GladePropertyAttributes. (HasDefault is LateImport)
	(GladeImport): simplified
	
	* libstetic/wrapper/Window.cs (Modal, TypeHint, Type): add
	GladePropertyAttributes
	(GladeImport): gone

2005-03-08  Dan Winship  <danw@novell.com>

	* libstetic/WidgetSite.cs (SetupFaults): Pass "false" to DND.DestSet,
	not true, so that the whole widget isn't drop-on-able.
	(AddHFault, AddVFault): don't create windows if we're not realized.

	* libstetic/wrapper/Box.cs (Wrap): call box_ParentSet from here so
	that the DropOn handler will be set up if the Parent is already
	set when it's wrapped (ie, if it's an internal child)

2005-03-08  Dan Winship  <danw@novell.com>

	* libstetic/GladeException.cs: exception class for Glade import problems

	* libstetic/GladeUtils.cs:
	* libstetic/ObjectWrapper.cs:
	* libstetic/wrapper/Container.cs: use GladeException

	* libstetic/GladeUtils.cs (Hydrate): Call g_type_class_ref() and
	pass the GObjectClass* to the glue methods rather than the GType*
	(to save a bunch of lookups).

	* glue/value.c (stetic_g_value_init_for_property,
	stetic_g_value_init_for_child_property): Update for that

	* stetic/Glade.cs: renamed from GladeImport.cs
	(Import): renamed from Load. Use GladeException.

	* libstetic/wrapper/Box.cs (Sync): Fix to not crash on empty boxes

2005-03-08  Dan Winship  <danw@novell.com>

	* libstetic/GladeUtils.cs (ExtractProperty, CreateWidget,
	SetProps, SetPacking): Make these all take a Hashtable of
	propname->value rather than a pair of ArrayLists.

	* libstetic/ObjectWrapper.cs (Wrap): make this public
	(GladeImport): take a Hashtable rather than ArrayLists
	
	* libstetic/wrapper/*.cs:
	* stetic/GladeImport.cs: update for those

2005-03-03  Todd Berman  <tberman@off.net>

	* stetic/Stetic.cs: Add a ShadowType.In to the widget TreeView.

2005-03-03  Dan Winship  <danw@novell.com>

	* libstetic/DND.cs: static class to handle various
	drag-and-drop-related stuff, so WidgetFactory doesn't need to
	subclass WidgetSite, which is nice since they're not really very
	related.
	(SourceSet): wrapper for Gtk.Drag.SourceSet that can also set up
	drag tracking for widgets that can't use SourceSet.
	(DestSet, DestUnset): more wrappers
	(CanDrag): for non automatic sources, checks if a
	MotionNotifyEvent counts as a drag start
	(Drag): starts a drag
	(Drop): receives the dropped widget
	(DragBegin, DragEnd): moved here from IStetic

	* libstetic/WidgetSite.cs: remove static DND-related fields
	(various): use DND methods rather than Gtk.Drag or IStetic ones
	(OnButtonPressEvent): don't need to track click locations any
	more; DND does it.
	(OnMotionNotify): use DND.CanDrag and DND.Drag
	(OnDragDrop): use DND.Drop
	(OnDropEnd): don't need to call DragEnded() from here any more;
	DND does it.
	
	* libstetic/IStetic.cs: 
	* stetic/Project.cs: kill off the dnd-related events; they're on
	DND now.

	* stetic/WidgetFactory.cs: now a subclass of EventBox
	(ctor): set AboveChild, call DND.SourceSet
	(OnDragBegin): Call DND.Drag
	(Drop): dead code since WidgetFactory isn't a drag destination any more.

2005-03-02  Dan Winship  <danw@novell.com>

	"Autoexpand" for boxes (but not yet tables, and not 100% right
	yet.)
	
	* libstetic/WidgetSite.cs (AddHFault, AddVFault): allow the site
	occupant to add "fault lines" inside the widget where it can split
	apart to fit additional widgets
	(ShowFaults, HideFaults): connected to the IStetic's DragBegin and
	DragEnd signals, to show/hide the (invisible) fault line windows
	as needed.
	(OnDragMotion): if the user drags into a fault line, draw a
	splitter.
	(OnDragDrop): if the user dropped onto a fault line, emit the
	"DropOn" event to let the child handle placing the widget.

	* libstetic/WidgetBox.cs (NewWindow): make this protected so
	WidgetSite can use it

	* libstetic/IStetic.cs (DragBegin, DragEnd): new events, to
	indicate that something somewhere is being dragged

	* libstetic/wrapper/Container.cs (Sync): make this a virtual
	method on Container
	(ContainerChild.EmitNotify): Sync the parent

	* libstetic/wrapper/Box.cs (Wrap): connect to the box's
	SizeAllocated and ParentSet handlers
	(Sync): add fault lines
	(box_ParentSet): connect to the parent site's DropOn event
	(box_SizeAllocated): Sync()
	(DropOn): Insert the child in the right place

	* libstetic/wrapper/Table.cs (Sync): add "override"
	(TableChild.EmitNotify): don't need to call Sync from here;
	Container does it

	* stetic/Project.cs: implement the new IStetic bits

	* stetic/WidgetFactory.cs (ctor): pass the project (IStetic) to
	the WidgetSite ctor
	(Drop): override this to get rid of the warning message when you
	drag something from the palette but then cancel the drag
	
	* TODO: update

2005-02-28  Dan Winship  <danw@novell.com>

	* libstetic/GladeUtils.cs (HydrateProperties): Handle "adjustment"
	properties, which glade serializes as 6 doubles separated by
	spaces.

	* libstetic/WidgetSite.cs (Selected): new event
	(Focus): emit it

	* libstetic/wrapper/ComboBox.cs (GladeImport): use CreateInstance
	rather than calling down to base.GladeImport, so that we end up
	with a text-only combobox. Handle the "items" property.
	(Items): ignore trailing newlines

	* libstetic/wrapper/Dialog.cs (Wrap): Put WidgetSites around the
	VBox and ActionArea.

	* libstetic/wrapper/Container.cs (FindInternalChild): make this a
	little more complicated (read: grosser) to deal with the extra
	WidgetSites inside a Dialog now.

	* libstetic/wrapper/Expander.cs (GladeImport): Do the same label
	widget hack as in Notebook and Frame

	* libstetic/wrapper/Image.cs: if filename is "", use a "broken
	image" image.

	* libstetic/wrapper/Label.cs: add a new ctor that takes a string
	and constructs a label with that string, and a wrapper around the
	label.

	* libstetic/wrapper/Notebook.cs: connect to the Selected event
	on the label WidgetSites, and switch pages when a label is
	selected.
	(InsertPage): use the new Stetic.Wrapper.Label ctor

	* libstetic/wrapper/OptionMenu.cs (Wrap): if the optionmenu has no
	Menu, create one here rather than in FlattenMenu.

	* libstetic/wrapper/Table.cs (GladeImportChild): if x_options or
	y_options is unspecified, consider it to be "expand|fill", which
	is glade's default value.
	(SiteOccupancyChanged): don't adjust the cell's packing unless it
	is set to AutoSize.

	* libstetic/wrapper/Window.cs (Type): make this a shadow prop too

2005-02-28  Dan Winship  <danw@novell.com>

	* libstetic/ObjectWrapperAttribute.cs: add a "Deprecated" flag

	* libstetic/wrapper/OptionMenu.cs: New, wrap Gtk.OptionMenu, but
	mark it with the "Deprecated" ObjectWrapperAttribute flag. Also,
	since we don't have a menu editor yet, we just wrap it the same
	way as ComboBox, with a multiline text entry to specify the menu
	items.

	* libstetic/wrapper/Menu.cs: 
	* libstetic/wrapper/MenuItem.cs: Wrap these just enough for
	importing OptionMenus from glade

	* libstetic/wrapper/Container.cs (GladeImportChild): if the
	container does not accept arbitrary GtkWidget children (according
	to Gtk.Container.ChildType()), then don't interpose a WidgetSite
	between parent and child.

	* stetic/Palette.cs (AddWidget): skip widgets with "Deprecated"
	set on their ObjectWrapperAttribute. (Meaning that for now, they
	can be imported, but not created by hand.)

2005-02-27  Dan Winship  <danw@novell.com>

	* libstetic/GladeUtils.cs (ExtractProperty): utility to remove a
	property from the propNames/propVals lists.
	(HydrateProperties): add some debug messages here

	* libstetic/wrapper/Label.cs (GladeImport): simplify using
	ExtractProperty

	* libstetic/wrapper/RadioButton.cs (GladeImport): handle "group"

	* libstetic/wrapper/Table.cs (GladeImport): force a Sync after
	import
	(Sync): don't knock out conflicting sites if they're full (which
	will happen temporarily during glade import, since table.Add(foo)
	will always put it at 0,0).

	* libstetic/wrapper/TextView.cs (GladeImport): handle "text"

	* libstetic/wrapper/Widget.cs (GladeImport): extract "visible" and
	"has_default"; fake out "visible", hold off on setting
	"has_default" until the import is complete (since it requires a
	parent window).

	* libstetic/wrapper/Window.cs (Wrap): force TypeHint to "Normal"
	so the WM doesn't do annoying things to us 
	(GladeImport): extract "modal" and "type_hint"
	(TypeHint): add a shadow property for this
	
	* stetic/GladeImport.cs (CreateWidget, AddChildren): merge these
	together and reduce redundant code.

2005-02-25  Dan Winship  <danw@novell.com>

	Reorganize the glade import code; put all the wacky exceptions
	into the wrapper classes rather than adding more and more to
	GladeImport itself.

	* libstetic/ObjectWrapper.cs (GladeImport): static method to find
	the wrapper type for a given class name and create a wrapper and
	object based on glade data.
	(Create): add a new overload using a className rather than a Type.
	
	* libstetic/IStetic.cs: add GladeImportComplete event and
	LookupWidgetById method.

	* libstetic/GladeUtils.cs: utilities for GladeImport, etc

	* libstetic/wrapper/Widget.cs (GladeImport): virtual method to
	create widget from a glade description.

	* libstetic/wrapper/Container.cs (GladeImportChild): virtual
	method to add and pack a child widget from a glade file.
	(AddPlaceholder): virtual method to add a placeholder
	(GladeSetInternalChild): virtual method to set properties on an
	internal child

	* libstetic/wrapper/ButtonBox.cs (GladeImportChild): remove
	"response_id" from the child's properties, and set the "secondary"
	packing flag if the response_id is ResponseType.Help. This is not
	a complete fix; we need to get the response_id back to the parent
	Dialog somehow.

	* libstetic/wrapper/Entry.cs (GladeImport): Handle the
	"invisible_char" property.

	* libstetic/wrapper/Frame.cs (GladeImportChild): handle the
	special "label_item" child.

	* libstetic/wrapper/Label.cs (GladeImport): Handle the
	"mnemonic_widget" property.

	* libstetic/wrapper/Notebook.cs (GladeImportChild): handle the
	special "tab" child. (This is the only "new" exception so far; all
	the others were previously handled in GladeImport.)

	* stetic/Project.cs (LookupWidgetById, GladeImportComplete):
	implement.

	* stetic/GladeImport.cs: lots of code moved from here into
	GladeUtils, ObjectWrapper, and various wrapper classes.

2005-02-25  Dan Winship  <danw@novell.com>

	* libstetic/wrapper/Table.cs: 
	* libstetic/wrapper/Container.cs: move the "AutoSize" child
	property from Table/TableChild to Container/ContainerChild. Also,
	fix the previous fix.

	* libstetic/wrapper/Box.cs: Add AutoSize child property and update
	the SiteOccupancyChanged logic accordingly. Also remove the weird
	code with the FIXME there, since I can't reproduce the bug anyway,
	so either it's fixed or Todd's going to have to debug it himself.

2005-02-25  Dan Winship  <danw@novell.com>

	* libstetic/ObjectWrapper.cs (Register): Fix the no-CreateInstance
	case to use the *wrapped* type's ctor, not the wrapper type.

	* libstetic/wrapper/Container.cs (Register): Make types whose
	containerchild types are declared by a superclass work again.

2005-02-25  Dan Winship  <danw@novell.com>

	* libstetic/wrapper/Icon.cs: 
	* libstetic/wrapper/Image.cs: Merge these two together, with a
	bool property to switch between stock icon and pixmap behavior.
	It's too messy to have two GtkImage wrappers.

	* libstetic/ObjectWrapper.cs (Register, WrapperType): Simplify the
	logic here for 1-1 mapping between gtk and stetic types.

	* stetic/GladeImport.cs: Likewise

2005-02-25  Dan Winship  <danw@novell.com>

	* stetic/Project.cs: implement IStetic

	* stetic/GladeImport.cs: pass the Project down into CreateWidget
	and AddChildren so they can eventually pass it to
	ObjectWrapper.Create as an IStetic. One more FIXME down.

	* stetic/Palette.cs: take a Project at construct time and pass it
	on to WidgetFactories

	* stetic/WidgetFactory.cs: take a Project at construct time and
	pass that to new wrappers rather than implementing IStetic here.

	* stetic/Stetic.cs: pass Project to the Palette

	* libstetic/ObjectWrapper.cs (Create): swap the order of the
	arguments

	* libstetic/wrapper/Container.cs (ChildWrapper): update for
	ObjectWrapper.Create change

2005-02-24  Dan Winship  <danw@novell.com>

	* libstetic/ObjectWrapper.cs: remove the protected (IStetic,
	object) constructor and replace it with a virtual Wrap method.
	(Register): new method to register a wrapper type
	(Create): new method to create a wrapper of a given type (with
	either a provided widget or a fresh one).
	(AddItemGroup): replaces RegisterWrapper. Adds a single ItemGroup
	to the type.
	(AddContextMenuItems): replaces RegisterContextMenu

	* libstetic/ObjectWrapperAttribute.cs: remove the WrappedType
	again; it's now a static property on the wrapper.

	* libstetic/ItemGroup.cs (ItemGroup): fix this to not lose if
	passed a wrapperType and a dotted property

	* libstetic/wrapper/*.cs: update for the NWO:
		* ObjectWrapperAttribute only takes 3 args again
		* Add static WrappedType property to all wrappers
		* Add static CreateInstance method to all wrappers that
		  need to do more than just "new Gtk.Foo ()"
		* Replace static ctor with static Register method
		  using AddItemGroup/AddContextMenuItems
		* Replace instance ctors with a Wrap override

	* stetic/GladeImport.cs: 
	* stetic/Palette.cs: 
	* stetic/PropertyGrid.cs: 
	* stetic/WidgetFactory.cs: Update to match ObjectWrapper changes

2005-02-24  Dan Winship  <danw@novell.com>

	* libstetic/wrapper/Dialog.cs: 
	* libstetic/wrapper/Window.cs (Modal): wrap this and don't set the
	underlying window property

	* libstetic/wrapper/Widget.cs (Visible): wrap this property and
	don't set the underlying widget property for Window subclasses.

	* stetic/GladeImport.cs (Load): set doc.PreserveWhitespace so that
	things like '<property name="label">    </property>' (which is
	used to indent HIG-style frames) import correctly. Don't crash if
	CreateWidget returns null.
	(CreateWidget): Add some debug messages, prevent a g_warning if
	the glade file uses types we don't wrap.
	(AddChildren): Add a hack to make "Help" buttons be packed with
	the "secondary" property in ButtonBoxes, the same as glade does.
	(HydrateProperties): Don't need to filter out Window.Visible any
	more.

2005-02-22  Dan Winship  <danw@novell.com>

	* stetic/PropertyGrid.cs: Kill ChildPropertyGrid and make the
	child properties appear as just another property group in the main
	Properties window.

	* stetic/Stetic.cs (Main): clean this up a little, and reorganize
	(palette on the left, project + properties on the right). Also
	update for PropertyGrid changes.

	* stetic/Palette.cs: fix up code style, make "Widgets" appear
	before "Containers", remove some commented out code

2005-02-22  Everaldo Canuto  <everaldo_canuto@yahoo.com.br>

	* stetic/Palette.cs: New palette GUI.

2005-02-22  Todd Berman  <tberman@off.net>

	* libstetic/wrapper/Button.cs:
	* libstetic/wrapper/ToggleButton.cs:
	* libstetic/wrapper/VScale.cs:
	* libstetic/wrapper/Label.cs:
	* libstetic/wrapper/TextView.cs:
	* libstetic/wrapper/Container.cs:
	* libstetic/wrapper/Widget.cs:
	* libstetic/wrapper/VSeparator.cs:
	* libstetic/wrapper/Paned.cs:
	* libstetic/wrapper/Icon.cs:
	* libstetic/wrapper/Box.cs:
	* libstetic/wrapper/ProgressBar.cs:
	* libstetic/wrapper/RadioButton.cs:
	* libstetic/wrapper/ComboBoxEntry.cs:
	* libstetic/wrapper/EventBox.cs:
	* libstetic/wrapper/Frame.cs:
	* libstetic/wrapper/HPaned.cs:
	* libstetic/wrapper/ScrolledWindow.cs:
	* libstetic/wrapper/HBox.cs:
	* libstetic/wrapper/SpinButton.cs:
	* libstetic/wrapper/Window.cs:
	* libstetic/wrapper/ComboBox.cs:
	* libstetic/wrapper/ColorButton.cs:
	* libstetic/wrapper/VPaned.cs:
	* libstetic/wrapper/Alignment.cs:
	* libstetic/wrapper/VBox.cs:
	* libstetic/wrapper/Notebook.cs:
	* libstetic/wrapper/Image.cs:
	* libstetic/wrapper/ButtonBox.cs:
	* libstetic/wrapper/DrawingArea.cs:
	* libstetic/wrapper/Scale.cs:
	* libstetic/wrapper/Table.cs:
	* libstetic/wrapper/Arrow.cs:
	* libstetic/wrapper/TreeView.cs:
	* libstetic/wrapper/Misc.cs:
	* libstetic/wrapper/HScrollbar.cs:
	* libstetic/wrapper/HButtonBox.cs:
	* libstetic/wrapper/Range.cs:
	* libstetic/wrapper/HScale.cs:
	* libstetic/wrapper/Dialog.cs:
	* libstetic/wrapper/Entry.cs:
	* libstetic/wrapper/FontButton.cs:
	* libstetic/wrapper/MessageDialog.cs:
	* libstetic/wrapper/Expander.cs:
	* libstetic/wrapper/HSeparator.cs:
	* libstetic/wrapper/Bin.cs:
	* libstetic/wrapper/Statusbar.cs:
	* libstetic/wrapper/Calendar.cs:
	* libstetic/wrapper/CheckButton.cs:
	* libstetic/wrapper/VScrollbar.cs:
	* libstetic/wrapper/VButtonBox.cs:

	Move to a 3 param'd ctor, to provide initialized information
	Add a Site property in Bin.
	Add a 4th parameter to the ObjectWrapperAttributes to show which
	gtk# type is wrapped.
	Dummy TreeView wrapper.
	
	* libstetic/ObjectWrapperAttribute.cs: New parameter to show which
	gtk# type is wrapped.

	* libstetic/Makefile.am: Add wrapper/TreeView.cs

	* libstetic/ObjectWrapper.cs: Add LookupWrappedTypes, to return a
	Type[] of the Stetic.Wrapper.* classes that wrap a given gtk# type.

	* TODO: Update.

	* stetic/WidgetFactory.cs: Make sure to hit wrappedObject.GType so
	that GObject stuff is properly initialized.

	* stetic/Stetic.cs: Change the GUI around a bit.

	* stetic/Palette.cs: New palette GUI.

	* stetic/Makefile.am: Add GladeImport.cs.

	* stetic/Project.cs: Add Project.Clear ();

	* stetic/GladeImport.cs: New file, used to provide glade file
	importation.

	* glue/Makefile.am: Add value.c
	* glue/value.c: New glue file to help with interacting with GValues,
	and used in the GladeImport process.

2005-02-22  Dan Winship  <danw@novell.com>

	* TODO: New

2005-02-22  Everaldo Canuto  <everaldo_canuto@yahoo.com.br>

	* libstetic/wrapper/pixmaps/alignment.png: new icon converted fron xpm.
	* libstetic/wrapper/pixmaps/eventbox.png: new icon converted fron xpm.
	* libstetic/wrapper/pixmaps/progressbar.png: new icon converted fron xpm.
	* libstetic/wrapper/pixmaps/statusbar.png: new icon converted fron xpm.

2005-02-19  Dan Winship  <danw@novell.com>

	* libstetic/WidgetBox.cs (PopupContextMenu): new event to mean
	"pop up a context menu for some reason", which could be because of
	a keypress or button press in either the widgetbox itself or its
	child.
	(InterceptButtonPress, OnButtonPressEvent): Handle this stuff here
	rather than passing it off to WidgetSite.

	* stetic/WidgetSite.cs:
	* libstetic/WidgetSite.cs: move stetic/WidgetSite.cs to libstetic,
	minus the very very small amount that depended on other things in
	stetic/.

	* libstetic/WindowSite.cs: split this out of WidgetSite.cs

	* stetic/WidgetFactory.cs (CreateWidgetSite): connect to the
	site's PopupContextMenu event.

2005-02-18  Dan Winship  <danw@novell.com>

	* libstetic/TranslatableAttribute.cs: new attribute to mark a
	string property of an attribute as being translatable.

	* libstetic/ObjectWrapperAttribute.cs (Name): add
	TranslatableAttribute to this property

	* libstetic/CommandAttribute.cs: add a Description field, and mark
	the Label and Description as Translatable.

	* libstetic/CommandDescriptor.cs: extract description from
	CommandAttribute and make it available via the Description field

	* libstetic/DescriptionAttribute.cs: new attribute to give a
	translatable label and description for a property.

	* libstetic/PropertyDescriptor.cs: extract label and description
	info from ParamSpecs or DescriptionAttributes, and make them
	available via the Label and Description fields

	* libstetic/wrapper/Box.cs: 
	* libstetic/wrapper/Button.cs:
	* libstetic/wrapper/ComboBox.cs: 
	* libstetic/wrapper/Icon.cs: 
	* libstetic/wrapper/MessageDialog.cs: 
	* libstetic/wrapper/Notebook.cs: 
	* libstetic/wrapper/RadioButton.cs: 
	* libstetic/wrapper/Table.cs: 
	* libstetic/wrapper/TextView.cs: add descriptions to commands and
	properties

	* stetic/Grid.cs (AppendPair, Append): add overloads that take a
	"description" arg, and set up tooltips.

	* stetic/PropertyGrid.cs (AppendProperty, AppendCommand): Pass the
	descriptions from the ItemDescriptors to the underlying Grid
	methods

2005-02-17  Dan Winship  <danw@novell.com>

	* libstetic/wrapper/Container.cs (RegisterWrapper): override the
	base RegisterWrapper method and scan the type for a
	Stetic.Wrapper.Container.ContainerChild subclass, and if found,
	remember it as the class's child wrapper class.
	(RegisterChildItems, ChildItemGroups): Gone now
	(ChildWrapper): Creates a child property wrapper for a WidgetSite
	(class ContainerChild): ObjectWrapper implementation for wrapping
	Gtk.Container.ContainerChild
	(CreateWidgetSite): Now an override of Widget's
	(HExpandable, VExpandable): moved to Widget

	* libstetic/wrapper/Widget.cs (CreateWidgetSite, HExpandable,
	VExpandable): moved here from Container, with non-Container base
	implementations.

	* libstetic/wrapper/Table.cs: implement a ContainerChild subclass
	and use it to implement AutoSize again. Also, split XOptions and
	YOptions into multiple bools.

	* libstetic/wrapper/Box.cs: implement a ContainerChild subclass.
	(SiteOccupancyChanged): when adding a new widget, set Expand and
	Fill correctly according to its expandability

	* libstetic/wrapper/ButtonBox.cs:
	* libstetic/wrapper/Notebook.cs:
	* libstetic/wrapper/Paned.cs: implement a ContainerChild subclass.

	* libstetic/wrapper/Bin.cs: 
	* libstetic/wrapper/Dialog.cs: 
	* libstetic/wrapper/ScrolledWindow.cs: 
	* libstetic/wrapper/Window.cs: make Bin better able to deal with
	subclasses that create their own WidgetSites.

	* libstetic/wrapper/Scrollbar.cs: kill this. HScrollbar and
	VScrollbar can inherit directly from Range.

	* libstetic/wrapper/HScale.cs (HExpandable):
	* libstetic/wrapper/HScrollbar.cs (HExpandable):
	* libstetic/wrapper/HSeparator.cs (HExpandable):
	* libstetic/wrapper/VScale.cs (VExpandable):
	* libstetic/wrapper/VScrollbar.cs (VExpandable):
	* libstetic/wrapper/VSeparator.cs (VExpandable): return true

	* libstetic/CommandDescriptor.cs:
	* libstetic/ItemDescriptor.cs:
	* libstetic/PropertyDescriptor.cs: s/object/ObjectWrapper/ in
	several parts of the API now that ContainerChildren have
	ObjectWrappers.

	* stetic/ContextMenu.cs
	* stetic/PropertyGrid.cs: 
	* stetic/PropertyEditor.cs: update for that

	* libstetic/IStetic.cs:
	* libstetic/WidgetSite.cs: remove the 2-arg CreateWidgetSite
	method from IStetic and add an "EmptySize" property to WidgetSite
	instead.

	* stetic/WidgetFactory.cs: 
	* stetic/WidgetSite.cs: update for CreateWidgetSite/EmptySize
	changes

	* libstetic/Set.cs: convenience class used by Table.

2005-02-17  Dan Winship  <danw@novell.com>

	* libstetic/ObjectWrapper.cs (RegisterWrapper): Renamed from
	RegisterItems.

	* libstetic/wrapper/*.cs: update for that

	* stetic/Stetic.cs: Put all of the windows into a single notebook.
	Probably not the best layout, but I'm getting sick of the multiple
	windows...

2005-02-16  Dan Winship  <danw@novell.com>

	* stetic/Grid.cs (Connect): static method to connect multiple
	grids so they have the same column widths.
	(OnSizeRequested, OnSizeAllocated): update for that

	* stetic/Stetic.cs (Main): Connect the Properties and
	ChildProperties grids.

2005-02-15  Dan Winship  <danw@novell.com>

	* libstetic/ObjectWrapper.cs: split out parts of
	libstetic/wrapper/Object.cs into this.
	(RegisterItems, RegisterContextMenu): static methods to register
	property grid and context menu items for a wrapper type.
	(ItemGroups, ContextMenuItems): these can be implemented here now
	rather than needing to be abstract and then reimplemented by each
	class.

	* libstetic/wrapper/Object.cs: simplified since most of it is in
	ObjectWrapper.cs now.

	* libstetic/wrapper/Container.cs: parallel some of the
	ObjectWrapper stuff for child properties

	* libstetic/wrapper/*: update for new (simplified) itemgroup
	handling.

	* stetic/PropertyGrid.cs (Notified): update prototype

2005-02-14  Dan Winship  <danw@novell.com>

	* libstetic/editor/GroupPicker.cs: property editor for a
	user-extensible list of strings

	* libstetic/wrapper/RadioButton.cs: use GroupPicker for the Group,
	and translate that into Gtk's terms.

2005-02-14  Dan Winship  <danw@novell.com>

	* libstetic/wrapper/Widget.cs (Widget): Set the Name property
	(based on the class name and a per-class counter).

	* libstetic/wrapper/Button.cs: 
	* libstetic/wrapper/CheckButton.cs: 
	* libstetic/wrapper/Expander.cs: 
	* libstetic/wrapper/Frame.cs: 
	* libstetic/wrapper/Label.cs: 
	* libstetic/wrapper/RadioButton.cs: 
	* libstetic/wrapper/ToggleButton.cs: 
	* libstetic/wrapper/Window.cs: use the widget name for the default
	label/title

	* libstetic/wrapper/Notebook.cs: Use real
	wrapped-labels-in-WidgetSites for the notebook tabs.

	* stetic/WidgetFactory.cs: remove widget naming stuff from here

	* stetic/Grid.cs (OnSizeRequested, OnSizeAllocated): fix layout of
	misc widgets (ie, command buttons)

2005-02-14  Dan Winship  <danw@novell.com>

	* libstetic/wrapper/Range.cs: 
	* libstetic/wrapper/Scale.cs: proxy notifications from the
	Adjustment so that the PropertyGrid will reflect manual changes to
	the widget's value

2005-02-14  Dan Winship  <danw@novell.com>

	* libstetic/RangeAttribute.cs: new attribute for specifying the
	range of a property.

	* libstetic/EditorAttribute.cs: local replacement for
	System.ComponentModel.EditorAttribute

	* libstetic/PropertyDescriptor.cs: update to look for
	Stetic.EditorAttribute rather than
	System.ComponentModel.EditorAttribute, and handle
	Stetic.RangeAttribute too.
	(PropertyInfo): property to return the underlying PropertyInfo
	(Minimum, Maximum): new, set from RangeAttribute
	(CanRead): Gone. We never really supported write-only properties.

	* stetic/PropertyEditor.cs (MakeEditor): use the
	PropertyDescriptor's Minimum and Maximum if available.
	(BasicEditor.BasicEditor): Use the property's PropertyInfo rather
	than its type as the "special" constructor used for enumerations,
	etc. This will let us have a few more special editor types. Don't
	bother trying to find a ctor that takes an initial value; it's
	easy enough to just set it post-construction.

	* libstetic/editor/Enumeration.cs: Change the Type ctor to take a
	PropertyInfo instead.

	* libstetic/editor/Text.cs: Use a PropertyInfo ctor, and check if
	there's an EditorAttribute with an EditorSize specified, and use
	that to set the textview's size if so.

	* libstetic/editor/Boolean.cs: 
	* libstetic/editor/Char.cs: 
	* libstetic/editor/Color.cs: 
	* libstetic/editor/File.cs: 
	* libstetic/editor/FloatRange.cs: 
	* libstetic/editor/IntRange.cs: 
	* libstetic/editor/OptIntRange.cs: 
	* libstetic/editor/StockItem.cs: 
	* libstetic/editor/String.cs: Remove "initial" arg from ctor.

	* libstetic/wrapper/ComboBox.cs (Items):
	* libstetic/wrapper/Icon.cs (Stock):
	* libstetic/wrapper/Image.cs (File):
	* libstetic/wrapper/TextView.cs (Text): use new EditorAttribute

	* libstetic/wrapper/Button.cs (StockId): use new EditorAttribute.
	Remove unused DefaultValueAttribute.

	* libstetic/wrapper/ColorButton.cs (Alpha): Use RangeAttribute to
	create a new Alpha property that combines the underlying UseAlpha
	and Alpha properties into a single "optional int range".

2005-02-13  Dan Winship  <danw@novell.com>

	* libstetic/CommandDescriptor.cs: like PropertyDescriptor, but
	describes commands implemented by the widget wrapper (which, like
	properties, can become sensitive and insensitive depending on
	other properties)

	* libstetic/CommandAttribute.cs: attribute for marking methods
	that will be referred to via CommandDescriptors

	* libstetic/IContextMenuProvider.cs: Gone, this functionality is
	part of CommandDescriptor now.

	* libstetic/ItemDescriptor.cs: abstract subclass for
	PropertyDescriptor and CommandDescriptor

	* libstetic/PropertyDescriptor.cs: make this a subclass of
	ItemDescriptor

	* libstetic/ItemGroup.cs: formerly PropertyGroup, but now can hold
	any ItemDescriptor.
	
	* libstetic/wrapper/Object.cs: add a ContextMenuItems property,
	empty by default.

	* libstetic/wrapper/*.cs: update for Item changes

	* libstetic/wrapper/Button.cs: implement "Remove Button Contents"
	and "Restore Button Label" as Commands. Add dummy properties
	HasLabel and HasContents for them to depend on.

	* libstetic/wrapper/Box.cs: 
	* libstetic/wrapper/Notebook.cs: 
	* libstetic/wrapper/Table.cs: change IContextMenuItemProvider
	stuff to use the new Command stuff

	* libstetic/wrapper/ComboBox.cs: replace Model property with a
	multi-line-text Items property

	* libstetic/wrapper/ComboBoxEntry.cs: new wrapper

	* libstetic/wrapper/Window.cs: on a DeleteEvent, just hide the window

	* stetic/Grid.cs: Allow adding of arbitrary widgets in addition to
	the property name/editor pairs.

	* stetic/PropertyGrid.cs: Implement CommandDescriptors by adding
	buttons to the Grid.

	* stetic/ContextMenu.cs: update for CommandDescriptor stuff

	* stetic/PropertyEditor.cs (EditorValueChanged, Update): Fix this
	again to avoid updating loops

	* stetic/WidgetSite.cs (WindowSite.Select): Show() the window, in
	case it was hidden

2005-02-13  Dan Winship  <danw@novell.com>

	* libstetic/ParamSpec.cs (gtksharp_get_type_id): Fix the library
	name in the DllImport attribute

2005-02-11  Dan Winship  <danw@novell.com>

	* stetic/Grid.cs: new base class for PropertyGrid. Instead of
	being a VBox of Expanders, its now a subclass of Container which
	lays out its contents by hand; this makes it much easier to make
	everything end up with the size and location we want (particularly
	in the presence of multi-line editors).

	* stetic/PropertyGrid.cs: Update to be a subclass of Grid

	* libstetic/editor/Text.cs: TextView-based multi-line text editor

	* libstetic/wrapper/TextView.cs: mark the "Text" property as
	wanting the "Text" editor type. Proxy the TextView's Buffer's
	"Changed" event so that the property editor will track typing in
	the widget.

	* stetic/WidgetSite.cs (OnMotionNotifyEvent): force the dragWindow
	to be at least 20x20, so that widgets that make very small
	requests expecting to be allocated much more space (eg, TextView)
	aren't invisible when dragged.

2005-02-09  Dan Winship  <danw@novell.com>

	* libstetic/editor/Color.cs: add an editor for Gdk.Color-valued
	properties

	* stetic/PropertyEditor.cs: Use it

	* stetic/PropertyGrid.cs: 
	* stetic/Stetic.cs: re-enable child packing property page

2005-02-09  Dan Winship  <danw@novell.com>

	* Major reorg again... Now instead of having the widget wrappers
	be subclasses of the types they wrap, they are a parallel set of
	classes. This lets them share code between each other more easily
	than before. Touches nearly every file. Also, update to use
	GLib.Object.AddNotification rather than our own notify hack.

2005-01-27  Dan Winship  <danw@novell.com>

	* stetic/ProjectView.cs: TreeView subclass for displaying the
	widget tree.

	* stetic/Project.cs: model for ProjectView

	* stetic/Palette.cs (IconForType): Split this code out so the
	Project window can make use of it too.

	* stetic/Stetic.cs (Main): Create a "Project" window. Some day
	there will be windows whose names don't start with "P".

	* stetic/WidgetSite.cs: s/ExpandabilityChanged/ContentsChanged/

	* stetic/WidgetFactory.cs (WidgetFactory, Create): set the widget
	Name property, a la glade
	(WindowFactory.OnButtonPressEvent): call
	SteticMain.Project.AddWindow()

	* libstetic/IContainerWrapper.cs: subclass IWidgetWrapper, not
	IObjectWrapper.
	(ContentsChanged): new event that replaces ExpandabilityChanged

	* libstetic/IWindowWrapper.cs: subclass IContainerWrapper, not
	IObjectWrapper

	* libstetic/SiteContentEnumerator.cs: IEnumerator to enumerate the
	real widget children of a container (rather than its WidgetSites)

	* widgets/*.cs: s/ExpandabilityChanged/ContentsChanged/

	* widgets/Dialog.cs: 
	* widgets/MessageDialog.cs: 
	* widgets/Window.cs: Implement ContentsChanged

	* widgets/Paned.cs (Paned): fix a bug in the shared Paned
	properties

	* widgets/ToggleButton.cs (ToggleButton): Initialize "label"

2005-01-25  Dan Winship  <danw@novell.com>

	* libstetic/IWidgetWrapper.cs: New dummy subclass of
	IObjectWrapper

	* libstetic/WidgetBox.cs: Implement OnSetScrollAdjustments (by
	passing them on to the child). Needed for ScrolledWindow.

	* widgets/Alignment.cs: 
	* widgets/EventBox.cs: 
	* widgets/Expander.cs: 
	* widgets/ScrolledWindow.cs: Wrap these

	* widgets/*.cs: s/IObjectWrapper/IWidgetWrapper/

	* stetic/WidgetSite.cs (ParentSite): Deal with the fact that the
	immediate parent won't be a WidgetSite in a few cases.

	* stetic/Palette.cs (AddWidgets): Look for IWidgetWrapper, not
	IObjectWrapper.

2005-01-20  Dan Winship  <danw@novell.com>

	* libstetic/IWindowWrapper.cs: new (empty) interface

	* libstetic/WidgetWrapperAttribute.cs (WidgetType): gone; we can
	distinguish widget wrappers based on whether they implement
	IWindowWrapper, IContainerWrapper, or just IObjectWrapper.

	* widgets/*.cs: remove WidgetType declarations from containers and
	windows.

	* widgets/Dialog.cs: 
	* widgets/Window.cs: Remove IContainerWrapper junk that wasn't
	being used anyway.

	* widgets/Calendar.cs: 
	* widgets/FontButton.cs: 
	* widgets/MessageDialog.cs: new wrappers

	* widgets/pixmaps/curve.png:
	* widgets/pixmaps/gammacurve.png:
	* widgets/pixmaps/hruler.png:
	* widgets/pixmaps/inputdialog.png:
	* widgets/pixmaps/selector.png:
	* widgets/pixmaps/vruler.png: Kill off some glade icons we won't
	be using

	* stetic/Palette.cs: Update for WidgetType going away, and
	reorganize into two columns

2005-01-20  Dan Winship  <danw@novell.com>

	* Move 90% of the files in the repository somewhere else.

	* libstetic/: classes needed by both Stetic itself and widget
	wrapper implementations

	* libstetic/editor/: moved from stetic/editor

	* widgets/: moved from stetic/wrapper and modified a bit to only
	require libstetic. (In particular, all the wrappers now have
	constructors that take an IStetic object which can be used to
	create new WidgetSites)

	* widgets/pixmaps: moved from pixmaps/

	* stetic/: now just the app itself, which links to libstetic and
	dynamically loads libsteticwidgets.
	
2005-01-20  Dan Winship  <danw@novell.com>

	* stetic/IObjectWrapper.cs (PropertyGroup): Make this take a
	varargs list of property names and build the PropertyDescriptors
	itself, to cut down on the amount of work the wrappers need to do.
	Also add an indexer to retrieve a PropertyDescriptor by name.
	(IPropertySensitizer): Gone

	* stetic/PropertyDescriptor.cs: Update the ctor for how
	PropertyGroup uses it now.
	(DependsOn, DependsInverselyOn, Dependencies,
	InverseDependencies): stuff to specify/probe inter-property
	dependencies, to replace the old IPropertySensitizer stuff more
	simply.

	* stetic/PropertyGrid.cs: Replace IPropertySensitizer stuff with
	PropertyDescriptor.Dependencies, etc

	* stetic/Palette.cs (AddWidgets): Catch exceptions from the
	Gdk.Pixbuf ctor and use the "broken image" image instead if it
	can't load the wrapper's specified image.

	* stetic/wrapper/*.cs: Update for new, simpler PropertyGroup
	creation and inter-property sensitivity settings.

	* stetic/wrapper/ColorButton.cs: 
	* stetic/wrapper/HScale.cs: 
	* stetic/wrapper/ProgressBar.cs: 
	* stetic/wrapper/Scale.cs: 
	* stetic/wrapper/Statusbar.cs: 
	* stetic/wrapper/VScale.cs: New wrappers

	* pixmaps/missing.png: "missing image" pixmap to use for now for
	widgets I don't have an icon for.

2005-01-14  Dan Winship  <danw@novell.com>

	* stetic/PropertyEditor.cs (BasicEditor.EditorValueChanged,
	BasicEditor.Update, RangeEditor.EditorValueChanged,
	RangeEditor.Update): Ignore EditorValueChanged if we're inside an
	Update, since it's just reflecting the change we're already
	making. Indirectly fixes a problem with deleting characters in an
	Entry.

	* stetic/wrapper/Arrow.cs: Add Misc.MiscProperties

	* stetic/wrapper/Button.cs: Implement IContextMenuProvider.
	(ContextMenuItems): Return a context menu with "Remove Button
	Contents" and "Restore Button Label" items, properly sensitized.
	(RemoveContents, RestoreLabel): Implement those.
	(InsensitiveProperties): Update to deal with RemoveContents

	* stetic/wrapper/CheckButton.cs: 
	* stetic/wrapper/RadioButton.cs: Add missing "Label" property plus
	Button.ButtonExtraProperties

	* stetic/editor/Enumeration.cs: Don't show the enumeration values
	in the menu.

	* stetic/editor/FloatRange.cs: Show 2 decimal digits

2005-01-14  Dan Winship  <danw@novell.com>

	* stetic/WidgetBox.cs: Remove InterceptEvents property and
	EventWindow. Instead, ConnectBefore to the child's
	ButtonPressEvent. (This should help to deal with
	non-container-like containers. Eg, GtkButton if you replace the
	label widget with something else.)
	(OnChildButtonPress): called when a button press is intercepted on
	the child widget

	* stetic/WidgetSite.cs: Update for WidgetBox changes.
	(OnChildButtonPress): Handle context menu or focus grabbing as
	needed
	(StartDrag): Change this to take an EventMotion arg. Return false
	if the event window isn't the WidgetBox's HandleWindow. (ie, don't
	allow drags from the widget itself any more, only from its
	handles).
	
	* stetic/WidgetFactory.cs (StartDrag): add evt arg

2005-01-13  Dan Winship  <danw@novell.com>

	* stetic/ContextMenu.cs (ContextMenuItem): add an "Enabled" field
	and a ctor to set it
	(ContextMenu): obey the "Enabled" field on IContextMenuProvider
	items
	(IContextMenuProvider): Turn ContextMenuItems from a property to a
	procedure, so we can pass the context item to it

	* stetic/wrapper/Notebook.cs: update for IContextMenuProvider
	change. Disable items (eg, "Go To Previous Page") as appropriate.

	* stetic/wrapper/HBox.cs:
	* stetic/wrapper/VBox.cs:
	* stetic/wrapper/Table.cs: update for IContextMenuProvider change

2005-01-13  Dan Winship  <danw@novell.com>

	* stetic/WidgetSite.cs (EmptySize): new property to set the site's
	size when empty
	(set_Occupancy): Use that rather than hardcoding 10x10
	(WidgetSite): New ctor to set EmptySize

	* stetic/wrapper/Window.cs: Use the new WidgetSite ctor rather
	than overriding OnSizeRequested

	* stetic/wrapper/Dialog.cs: Use the new WidgetSite ctor

2005-01-13  Dan Winship  <danw@novell.com>

	* stetic/Stetic.cs: Rename the main class from "Stetic" to
	"SteticMain", to work around really annoying C# semantics

	* stetic/WidgetFactory.cs (WindowFactory.OnButtonPressEvent):
	update for that

2005-01-13  Dan Winship  <danw@novell.com>

	* stetic/WidgetFactory.cs (WidgetFactoryAttribute): gone, turned
	into WidgetWrapperAttribute
	(WidgetFactory, WindowFactory): Take a Type directly rather than a
	WidgetFactoryDelegate.

	* stetic/WidgetWrapperAttribute.cs: replaces
	WidgetFactoryAttribute, but basically the same thing

	* stetic/Palette.cs (AddWidgets): Take an Assembly rather than a
	Type, and search for all Types in that Assembly with a
	WidgetWrapperAttribute.

	* stetic/Stetic.cs (Main): Update call to Palette.AddWidgets

	* stetic/wrapper/DefaultWidgets.cs: Gone

	* stetic/wrapper/Dialog.cs: 
	* stetic/wrapper/Notebook.cs: 
	* stetic/wrapper/TextView.cs: 
	* stetic/wrapper/ToggleButton.cs: wrap these

	* stetic/wrapper/*.cs: add WidgetWrapper attributes, make sure
	every class has a no-arg constructor

2005-01-13  Dan Winship  <danw@novell.com>

	* stetic/ContextMenu.cs (IContextMenuProvider): New interface for
	widget wrappers that want to add items to their context menus.
	(ContextMenu): support IContextMenuProvider.

	* stetic/IObjectWrapper.cs (IPropertySensitizer): Make
	InsensitiveProperties a property rather than a method

	* stetic/PropertyDescriptor.cs (PropertyDescriptor): Add a new
	constructor for "proxy" descriptors, which get a ParamSpec from
	the base class, but use the property on the derived class. Also,
	if the passed-in propertyName is invalid, throw an
	ArgumentException with a useful message rather than causing a
	NullArgumentException later.

	* stetic/PropertyGrid.cs (SetupSensitivity): Update for
	InsensitiveProperties change

	* stetic/WidgetSite.cs: Update for ContextMenu ctor change

	* stetic/wrapper/Button.cs: Use a proxy PropertyDescriptor for
	"Label", update InsensitiveProperties.

	* stetic/wrapper/ComboBox.cs: Fix a crasher typo noted by Peter
	Williams.

	* stetic/wrapper/Icon.cs: Use proxy PropertyDescriptors for Stock
	and IconSize.

	* stetic/wrapper/HBox.cs:
	* stetic/wrapper/VBox.cs: Implement IContextMenuProvider, adding
	"Insert Before" and "Insert After" commands.

	* stetic/wrapper/Table.cs: Implement IContextMenuProvider, adding
	"Insert Row/Column Before/After" and "Delete Row/Column". Use
	proxy PropertyDescriptors for NRows and NColumns since the base
	properties won't let you remove non-empty rows/columns. Update
	InsensitiveProperties.

	* stetic/stetic.in: If command-line args are passed, pass them to
	mono (since stetic doesn't take any arguments at the moment, and I
	use mono --trace a lot).

2005-01-12  Dan Winship  <danw@novell.com>

	* stetic/PropertyGrid.cs: Reorganize stuff so that ContainerChild
	classes can override properties and implement IPropertySensitizer
	as well.
	
	* stetic/IDesignTimeContainer.cs:
	* stetic/IObjectWrapper.cs (IContainerWrapper): Move the things
	that used to be in IDesignTimeContainer to IContainerWrapper. Kill
	IDesignTimeContainer.

	* stetic/WidgetSite.cs: Update for that

	* stetic/wrapper/Frame.cs:
	* stetic/wrapper/HBox.cs:
	* stetic/wrapper/HButtonBox.cs:
	* stetic/wrapper/HPaned.cs:
	* stetic/wrapper/VBox.cs:
	* stetic/wrapper/VButtonBox.cs:
	* stetic/wrapper/VPaned.cs:
	* stetic/wrapper/Window.cs: Update

	* stetic/wrapper/Table.cs: Update.
	(TableChild) Subclass Gtk.Table.TableChild with an "AutoSize"
	property saying whether or not to automatically adjust the packing
	of child widgets (defaults to on). Also implement
	IPropertySensitizer.
	(Sync): Update for that.

2005-01-12  Dan Winship  <danw@novell.com>

	* stetic/IObjectWrapper.cs (IContainerWrapper): new interface a la
	IObjectWrapper, but including child properties as well.

	* stetic/PropertyGrid.cs (ChildPropertyGrid): Use IContainerWrapper

	* stetic/wrapper/Box.cs: 
	* stetic/wrapper/ButtonBox.cs: 
	* stetic/wrapper/Paned.cs: add static child PropertyGroups

	* stetic/wrapper/HBox.cs: 
	* stetic/wrapper/HButtonBox.cs: 
	* stetic/wrapper/HPaned.cs: 
	* stetic/wrapper/Table.cs: 
	* stetic/wrapper/VBox.cs: 
	* stetic/wrapper/VButtonBox.cs: 
	* stetic/wrapper/VPaned.cs: Implement IContainerWrapper, add child
	PropertyGroups

	* stetic/wrapper/Frame.cs: 
	* stetic/wrapper/Window.cs: Implement IContainerWrapper, but
	return an empty ChildPropertyGroups

2005-01-11  Dan Winship  <danw@novell.com>

	* stetic/WidgetBox.cs (WidgetBox, OnRealized): Use WidgetFlags
	property instead of Obsolete Flags.
	(ShowHandles, OnRealized, OnExposeEvent): Set the Background of
	the HandleWindow to black when creating it, rather than filling in
	the foreground in OnExposeEvent.
	(OnSizeAllocated): Don't set HandleAllocation here, since the
	window may not have been realized yet, which would make
	TranslateCoordinates not work.
	(ShapeHandles): Figure out HandleAllocation here.
	
2005-01-07  Dan Winship  <danw@novell.com>

	* stetic/wrapper/Image.cs: wrapper for Gtk.Images that show files

	* stetic/wrapper/Icon.cs: wrapper for Gtk.Images that show stock icons

	* stetic/wrapper/SpinButton.cs: wrapper for Gtk.SpinButton
	
	* stetic/wrapper/Frame.cs: 
	* stetic/wrapper/HBox.cs: 
	* stetic/wrapper/HButtonBox.cs: 
	* stetic/wrapper/HPaned.cs: 
	* stetic/wrapper/VBox.cs: 
	* stetic/wrapper/VButtonBox.cs: 
	* stetic/wrapper/VPaned.cs: 
	* stetic/wrapper/Table.cs: 
	* stetic/wrapper/Window.cs: Implement IObjectWrapper on these
	(previously they just implemented IDesignTimeContainer)

	* stetic/wrapper/Box.cs: 
	* stetic/wrapper/ButtonBox.cs: 
	* stetic/wrapper/Paned.cs: static classes that define
	PropertyDescriptors used by their subclasses

	* stetic/wrapper/DefaultWidgets.cs: Update for new wrappers

	* stetic/editor/File.cs: editor for strings that represent filenames

	* stetic/Stetic.cs: Use Gnome.Program rather than Gtk.Application
	now, since we're using Gnome.FileEntry.

2005-01-06  Dan Winship  <danw@novell.com>

	* stetic/IDesignTimeContainer.cs: New name for the old
	IWidgetSite.

	* stetic/WidgetSite.cs (IWidgetSite): Now a "parent" for
	WidgetSite and WindowSite.
	(WidgetSite): Implement IWidgetSite and IDesignTimeContainer.
	(WindowSite): IWidgetSite implementation for toplevel windows.
	Includes the focus-tracking code formerly in
	Stetic.Wrapper.Window.

	* stetic/ContextMenu.cs (ContextMenu):
	* stetic/Stetic.cs (Select):
	* stetic/PropertyGrid.cs (PropertyGrid.Select,
	ChildPropertyGrid.Select): Change WidgetBox and WidgetSite params
	to IWidgetSite. This lets us select and show properties for toplevels.

	* stetic/WidgetFactory.cs (WindowFactory.OnButtonPressEvent):
	Create a WindowSite for the new window and connect to its
	FocusChanged event.

	* stetic/wrapper/*.cs: s/IWidgetSite/IDesignTimeContainer/

	* stetic/wrapper/Window.cs (OnSetFocus): Gone. Handled by
	WindowSite now.

2005-01-05  Dan Winship  <danw@novell.com>

	* stetic/ContextMenu.cs: Menu subclass to use as a WidgetSite's
	context menu. Currently a clone of Glade's context menu, but with
	no widget-specific content, and it doesn't actually implement Cut,
	Copy, or Paste. (Meaning you can do Select or Delete.)

	* stetic/WidgetSite.cs (OnPopupMenu): create a ContextMenu and pop
	it up.
	(OnButtonPressEvent): Call OnPopupMenu() on a right-click.
	(OnKeyReleaseEvent): hand off Delete key handling to Delete()
	(Delete): new public method to delete the site's child.

	* stetic/PropertyDescriptor.cs (PropertyDescriptor): fix a bug in
	the sub-property case

2005-01-05  Dan Winship  <danw@novell.com>

	* stetic/IObjectWrapper.cs (IPropertySensitizer): interface for
	wrapper classes that want to be able to tweak the sensitivity of
	their editors.

	* stetic/Notify.cs: static helper class for the GObject "notify"
	signal, which isn't currently bound by glib-sharp.

	* stetic/PropertyDescriptor.cs (EventInfo, ParamSpec, EditorType):
	Make these be properties of the PropertyDescriptor rather than
	being figured out in PropertyEditors.

	* stetic/PropertyEditor.cs: Renamed from PropertyEditors.cs and
	made into an abstract widget class rather than a static class.
	(MakeEditor): Now returns a PropertyEditor rather than just a
	Widget.
	(BasicEditor, RangeEditor, NoEditor): Now subclasses of
	PropertyEditor, and they implement an Update() method to force the
	editor to sync with the underlying property.

	* stetic/PropertyGrid.cs: Tweak for PropertyDescriptor and
	PropertyEditor changes. Use IPropertySensitizer if the displayed
	widget supports it. Use Stetic.Notify to notice when the user
	interacts with the displayed widget (eg, toggling a checkbox) and
	force the relevant property editor to update itself.

	* stetic/ParamSpec.cs (ParamSpecTypeHack): add an unused private
	subclass of GLib.Object so we can access the static protected
	LookupGType method. (This wouldn't be needed if ParamSpec was in
	glib-sharp, because there's an internal method we could use.)
	(LookupObjectProperty, LookupChildProperty): Take a Type rather
	than a GLib.Object, so we can look up a type's properties without
	needing an instatiated object.

	* stetic/wrapper/Button.cs: Make the UI for the "Stock ID" and
	"Label" properties work more nicely by wrapping both of them at
	the Stetic.Wrapper.Button level, and watching for notifications on
	the UseStock property, and setting the wrapper Label to the stock
	item's Label rather than its Name when setting a stock item (eg,
	"_OK" rather than "gtk-ok"). Also add the UseStock property, and
	implement the IPropertySensitizer interface so that only one of
	Stock ID and Label is sensitive at any time.

	* stetic/editor/StockItem.cs: Remove the "None" option; the editor
	should be desensitized if no stock item is being used.

	* glue/notify.c: glue for Stetic.Notify

	* glue/paramspec.c (stetic_param_spec_for_property,
	stetic_param_spec_for_child_property): Take a GType rather than a
	GObject.

2004-12-20  Dan Winship  <danw@novell.com>

	* stetic/IObjectWrapper.cs: interface for Stetic.Wrapper objects
	to use to allow them to define their properties

	* stetic/PropertyDescriptor.cs: a class describing an editable
	object property

	* stetic/PropertyGrid.cs: Reimplement this using
	PropertyDescriptors and PropertyGroups for the model, and
	Gtk.Expanders for the view.

	* stetic/PropertyEditorAttribute.cs: for Stetic.Editors to use to
	specify the property and/or event to use to interact with them

	* stetic/PropertyEditors.cs: Updated for PropertyDescriptor, the
	Stetic.Editor namespace, etc

	* stetic/ParamSpec.cs: make Minimum, Maximum, Default virtual
	methods on ParamSpec itself, overridden by subclasses.

	* stetic/editor/Boolean.cs: 
	* stetic/editor/Char.cs: 
	* stetic/editor/Enumeration.cs: 
	* stetic/editor/FloatRange.cs: 
	* stetic/editor/IntRange.cs: 
	* stetic/editor/OptIntRange.cs: 
	* stetic/editor/StockItem.cs: 
	* stetic/editor/String.cs: Editors for properties of various types

	* stetic/wrapper/Arrow.cs: 
	* stetic/wrapper/Button.cs: 
	* stetic/wrapper/CheckButton.cs: 
	* stetic/wrapper/ComboBox.cs: 
	* stetic/wrapper/DrawingArea.cs: 
	* stetic/wrapper/Entry.cs: 
	* stetic/wrapper/HScrollbar.cs: 
	* stetic/wrapper/HSeparator.cs: 
	* stetic/wrapper/Label.cs: 
	* stetic/wrapper/RadioButton.cs: 
	* stetic/wrapper/VScrollbar.cs: 
	* stetic/wrapper/VSeparator.cs: IObjectWrapper implementations

	* stetic/wrapper/Misc.cs: 
	* stetic/wrapper/Range.cs: 
	* stetic/wrapper/Widget.cs: static classes defining certain
	PropertyGroups

	* stetic/wrapper/HBox.cs:
	* stetic/wrapper/HPaned.cs:
	* stetic/wrapper/Table.cs:
	* stetic/wrapper/VBox.cs:
	* stetic/wrapper/VPaned.cs:
	* stetic/wrapper/Window.cs: s/Widget/Gtk.Widget/ since there is
	now a Stetic.Wrapper.Widget

	* stetic/wrapper/DefaultWidgets.cs: use the new wrappers

	* stetic/Makefile.am (stetic_exe_SOURCES): update

	* stetic/stetic.in: pass --debug to mono

2004-12-20  Dan Winship  <danw@novell.com>

	* stetic/wrapper: Rename "wrappers" dir to "wrapper", to match the
	namespace

	* stetic/Makefile.am (stetic_exe_SOURCES): update for that

2004-12-15  Dan Winship  <danw@novell.com>

	* stetic/Stetic.cs: 
	* stetic/WidgetSite.cs: 
	* stetic/wrappers/Table.cs: Clean up new mcs warnings

	* stetic/PropertyEditors.cs (Enum): Redo this using ComboBox to
	avoid the warning about OptionMenu being deprecated
	(Flags): Make this a no-op for now. The OptionMenu-based
	implementation wasn't very useful anyway.

2004-12-14  Dan Winship  <danw@novell.com>

	* stetic/*Wrapper.cs: Move these all to stetic/wrappers and rename

	* stetic/DefaultWidgets.cs: Moved out of stetic/WidgetFactory.cs

	* stetic/Makefile.am (stetic_exe_SOURCES): Update

2004-12-13  Dan Winship  <danw@novell.com>

	* stetic/PropertyEditors.cs (Enum, Flags): implement these by
	using private classes rather than anonymous delegates, to work
	around 69614.

	* stetic/TableWrapper.cs: fix a search-and-replace-o ("placesite"
	instead of "placeholder")
	(Sync): Don't adjust expand/fill settings of occupied sites.
	(ChildOccupancyChanged): When a site becomes occupied, reset its
	attach options.

2004-12-10  Dan Winship  <danw@novell.com>

	* stetic/WidgetBox.cs: Always have a GdkWindow, so that the
	background of a container can be clicked on to select it (if any
	background is visible). Fix up coordinate handling accordingly.

	* stetic/WidgetFactory.cs (DefaultWidgets): add VButtonBox and
	HButtonBox.

	* stetic/Makefile.am (stetic_exe_SOURCES): add
	HButtonBoxWrapper.cs, VButtonBoxWrapper.cs
	(stetic.exe): Use -pkg:gtk-sharp-2.0 rather than the output we
	already cached in configure.in, because Miggie says so. :)
	
2004-12-08  Dan Winship  <danw@novell.com>

	* Initial commit

