Find file
Fetching contributors…
Cannot retrieve contributors at this time
6372 lines (4907 sloc) 242 KB
2008-07-11 Mike Kestner <>
* libsteticui/ApplicationBackend.cs: removed some CWL spew. This
case is apparently expected for first-time builds.
2008-07-01 Mike Kestner <>
* libsteticui/AssemblyResolver.cs: make type resolver public.
* libsteticui/LibraryCache.cs: [ToolboxItem] and [Category] scanner
for identification of exported widgets from libraries.
2008-06-25 Mike Kestner <>
* libsteticui/Application.cs: use resolver.
* libsteticui/ApplicationBackend.cs: use resolver.
* libsteticui/AssemblyResolver.cs: integrate ImportContext. remove
usused method and field resolution methods.
* libsteticui/AssemblyWidgetLibrary.cs: refactor ImportContext.
use cached objects doc.
* libsteticui/CecilWidgetLibrary.cs: refactor to use cached docs
and assembly resolver.
* libsteticui/LibraryCache.cs: add document props for objects/gui.
add objects and gui resource extraction and caching. Refresh using
resolver if available.
* libsteticui/ProjectBackend.cs: ImportContext refactor to resolver.
2008-06-19 Mike Kestner <>
* detect cecil and substitute the dll path.
* libsteticui/ build using installed dll.
* libsteticui/lib/Mono.Cecil.dll: remove
2008-06-19 Mike Kestner <>
* libsteticui/AssemblyWidgetLibrary.cs: refactor to use LibraryCache.
* libsteticui/CecilWidgetLibrary.cs: use singleton Cache. Refine
NeedsReload. Call Load (XmlDocument) conditionally.
* libsteticui/LibraryCache.cs: hide Load and expose a singleton Cache
field to share between AssemblyWidgetLibrary and CecilWidgetLibrary.
Remove Gtk reference checking, we will use explicit ToolboxItem attrs
instead. Make HasWidgets a check for an objects.xml file, since we
will be constructing one for attr-only assemblies.
2008-06-18 Mike Kestner <>
* libstetic/WidgetLibrary.cs: refactor class addition logic from Load
into a protected AddClass method which subclasses can use to add
classes marked with [ToolboxItem].
2008-06-18 Mike Kestner <>
* libsteticui/CecilWidgetLibrary.cs: remove timestamp code and reuse
cache currency logic. flatten out an unnecessary if branch in Load.
2008-06-18 Mike Kestner <>
* libsteticui/Application.cs: remove dead code
2008-06-02 Mike Kestner <>
* libstetic/wrapper/Object.cs: dispose guarding
* libstetic/wrapper/Widget.cs: dispose guarding
2008-05-28 Mike Kestner <>
* libstetic/editor/ActionGroupEditor.cs: dispose guarding
* libstetic/editor/ActionMenuItem.cs: dispose guarding
* libsteticui/ActionGroupDesigner.cs: dispose guarding
* libsteticui/ActionGroupEditSession.cs: dispose guarding
* libsteticui/ActionGroupToolbar.cs: dispose guarding
* libsteticui/WidgetActionBar.cs: dispose guarding
2008-05-21 Mike Kestner <>
* libstetic/wrapper/ActionToolbarWrapper.cs: call FillMenu on Wrap
so that the actionTree is populated on the editor. Otherwise we
crash when inserting items. [Fixes #377672] Also fix what looks to
be a copy/paste error on a UIManagerItemType in the ActionTree.
2008-05-20 Mike Kestner <>
* libsteticui/LibraryCache.cs: do a recursive delete when revising
the cache directory.
2008-05-15 Mike Kestner <>
* libsteticui/Application.cs: remove redundant cache. Destroy widgets
on Dispose instead of Disposing them.
2008-05-13 Mike Kestner <>
* libsteticui/Application.cs: refactor to split out isolated backend
and inprocess backend cases. Dispose additions. Destroy handling for
the public accessors.
* libsteticui/ApplicationBackendController.cs: use IsolatedApplication.
* libsteticui/PluggableWidget.cs: IsolatedApplication handling and
dispose rework.
* libsteticui/Project.cs: ditto.
* stetic/Stetic.cs: use new ApplicationFactory.
2008-05-13 Mike Kestner <>
* libsteticui/AssemblyResolver.cs: update to JBs latest Linker version.
* libsteticui/CecilWidgetLibrary.cs: use new cache API.
* libsteticui/LibraryCache.cs: rewritten to use instances,
XmlSerialization of the index and keep the index in memory, and to add
HasWidgets capability. Should be able to remove the other cache from
Application now.
2008-05-11 Mike Kestner <>
* libsteticui/SignalsEditor.cs: some Disposal bulletproofing.
2008-04-30 Mike Kestner <>
* libstetic/wrapper/objects.xml: clamp Gtk.Misc.(X|Y)align to values
between 0.0 and 1.0.
2008-02-28 Lluis Sanchez Gual <>
* libstetic/editor/ActionItem.cs: Properly handle drag event fired by
the widget selection box. Fixes bug #363865.
2008-02-28 Lluis Sanchez Gual <>
* libsteticui/CecilClassDescriptor.cs,
libsteticui/CecilWidgetLibrary.cs: Properly load icons from
2008-02-25 Lluis Sanchez Gual <>
* libstetic/ErrorWidget.cs: Always write the ErrorWidget by reusing the
xml that generated it, unless we are exporting to another format,
in which case we can't write the same xml, and we replace it by a
label. Fixes bug #362596.
2008-02-21 Lluis Sanchez Gual <>
* libsteticui/CecilClassDescriptor.cs: Don't create black boxes for
custom widgets which allow children. Fixes bug #361650.
* libsteticui/ContextMenu.cs: Dont show invisible commands.
* libstetic/wrapper/Frame.cs, libstetic/wrapper/Table.cs,
libstetic/wrapper/Paned.cs, libstetic/wrapper/Box.cs,
libstetic/wrapper/ScrolledWindow.cs, libstetic/wrapper/Expander.cs,
libstetic/wrapper/Notebook.cs: Don't add placeholders if they are
not allowed.
* libstetic/wrapper/Container.cs: Don't allow placeholders if a
container can't have children.
* libstetic/wrapper/objects.xml: Hide commands not allowed when
containers does not allow children.
2008-02-20 Lluis Sanchez Gual <>
* libsteticui/ActionComponent.cs, libstetic/wrapper/Action.cs: Added wrapper
properties for Label and StockId, since the notify event is not being
fired for Gtk.Action.
* libstetic/editor/ActionMenuItem.cs, libstetic/editor/ActionToolItem.cs:
Use new Action wrapper properties to access to the label and stock id.
2008-02-06 Lluis Sanchez Gual <>
* libsteticui/SignalsEditorBackend.cs: TargetObject can't be set when no
project is selected.
2008-01-25 Lluis Sanchez Gual <>
* libsteticui/PropertyTree.cs: Use a theme color for the property group
headers. Fixes bug #356244.
2008-01-25 Lluis Sanchez Gual <>
* libstetic/wrapper/Label.cs: Fix generation of MnemonicWidget property
* libstetic/wrapper/objects.xml: The default way of
* libstetic/editor/WidgetSelector.cs: Sort the list of widgets. Hide
unselectable widgets.
2008-01-21 Lluis Sanchez Gual <>
* libsteticui/GuiDispatchServerSink.cs, libsteticui/WidgetDesigner.cs,
libsteticui/Project.cs: Made events fired by the designer synchronous.
Fixes some criticals caused by events being fired in the wrong order.
* libstetic/wrapper/Frame.cs, libstetic/wrapper/CheckButton.cs,
libstetic/wrapper/Container.cs, libstetic/wrapper/ScrolledWindow.cs: Fix
some gtk warnings and criticals.
2008-01-16 Lluis Sanchez Gual <>
* libsteticui/WidgetDesigner.cs: Fix typo.
2008-01-15 Lluis Sanchez Gual <>
* libstetic/wrapper/ComboBox.cs: Fix bug #324925 - Glade import: Text combos
not correctly imported.
2008-01-14 Lluis Sanchez Gual <>
* libstetic/editor/Boolean.cs: Improve rendering of checkbox.
2008-01-11 Marek Safar <>
* libstetic/editor/ActionMenu.cs, libstetic/editor/ActionMenuBar.cs,
libstetic/editor/ActionToolbar.cs, libstetic/undo/ActionDiffAdaptor.cs
libstetic/editor/ActionGroupEditor.cs: Build with the latest gmcs.
2008-01-11 Marek Safar <>
* libsteticui/ActionGroupToolbar.cs: Build with the latest gmcs.
2008-01-08 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs: Don't fire load events when loading a
widget. Fixes part of bug #352065.
* libstetic/wrapper/Paned.cs: Fix bug in paned initialization. Fixes part of
bug #352065.
* libstetic/editor/IconSelectorItem.cs: Added null check. Fixes some
2007-12-13 Lluis Sanchez Gual <>
* libstetic/wrapper/Container.cs: Call base method when attaching/detaching
designer, since Object has some logic in those methods.
2007-12-13 Lluis Sanchez Gual <>
* libstetic/wrapper/ScrolledWindow.cs, libstetic/wrapper/objects.xml: Set
the correct default for ScrolledWindow.XscrollbarPolicy.
2007-12-12 Lluis Sanchez Gual <>
* libstetic/editor/ActionMenuItem.cs: Don't try to remove the menu item
controls if they have not been added to the table.
2007-12-12 Lluis Sanchez Gual <>
* libsteticui/libsteticui.mdp, libstetic/libstetic.mdp, stetic/stetic.mdp,
stetic.mds: Updated.
* libstetic/wrapper/objects.xml: In ScrolledWindow, ignore the default for
scrollbar policy. The default value returned by gtk is not correct.
Fixes bug #344196.
* libstetic/ErrorWidget.cs: Allow exporting projects with unknown widgets.
* stetic/UIManager.cs: Use gtk stock icons instead of gnome's.
2007-10-26 Lluis Sanchez Gual <>
* libsteticui/PaletteBackend.cs: Moved defaultActionIcon to ActionComponent.
* libsteticui/ActionComponent.cs, libsteticui/ComponentType.cs,
libstetic/wrapper/Action.cs: Added a label property to the
ActionComponent. The label will be shown in the toolbox now. Also show
the default action icon if no icon is specified, instead of the missing
image icon.
2007-10-25 Lluis Sanchez Gual <>
* libstetic/editor/ActionItem.cs: Ignore the SelectionDisposed event if the
action item has already been disposed.
2007-10-23 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs: Remove undo annotations from the xml
document when saving.
2007-10-22 Lluis Sanchez Gual <>
* libstetic/wrapper/objects.xml: Set default value for ShowScrollbars
2007-10-18 Lluis Sanchez Gual <>
* libstetic/editor/ActionItem.cs: The selected object needs to be the action
because that's what is shown in the properties pad.
2007-10-16 Lluis Sanchez Gual <>
* libstetic/wrapper/TextView.cs, libstetic/wrapper/TreeView.cs: By default,
show TextView and TreeView widgets wrapped in a ScrolledWindow. Fixes
bug #324439.
* libstetic/wrapper/Widget.cs, libstetic/wrapper/Container.cs,
libstetic/wrapper/ScrolledWindow.cs, libstetic/wrapper/Viewport.cs,
libstetic/wrapper/objects.xml: Implemented new ShowScrollbars
pseudo-property for widgets. When set, the widget will be wrapped inside
a ScrolledWindow. This scrolled window will be bound to the widget, so
if the widget is deleted or moved, the ScrolledWindow will also be
deleted or moved.
* libstetic/wrapper/Table.cs, libstetic/wrapper/Paned.cs,
libstetic/wrapper/Box.cs, libstetic/wrapper/Notebook.cs: Methods for
adding widgets to a container other than Add() do not fire the child
Added event, so it has to be manually called.
2007-10-16 Lluis Sanchez Gual <>
* libstetic/Clipboard.cs, libsteticui/Clipboard.cs: Moved to libstetic.
* libstetic/editor/ActionGroupEditor.cs, libstetic/editor/ActionItem.cs,
libstetic/editor/ActionMenuItem.cs, libstetic/editor/ActionToolItem.cs:
Factorized common code in ActionMenuItem and ActionToolItem into
ActionItem. Implemented IEditableObject.
* libstetic/editor/ActionMenu.cs: Improved support for keyboard. Return now
edits the selected item, and ctrl+right/left adds/removes submenus.
* libstetic/editor/ActionMenuBar.cs, libstetic/editor/ActionToolbar.cs: Keep
the selection when a node is deleted. Track other api changes.
* libstetic/IEditableObject.cs: New interface to be implemented by objects
which can handle clipboard operations.
* libstetic/libstetic.mdp, libstetic/,
libsteticui/libsteticui.mdp, libsteticui/ Updated.
* libstetic/Placeholder.cs, libstetic/wrapper/Widget.cs: Implemented
* libsteticui/ContextMenu.cs: Use the new IEditableObject interface to
implement the clipboard operations.
* libsteticui/ProjectBackend.cs, libsteticui/WidgetDesigner.cs,
libsteticui/WidgetEditSession.cs: Use IEditableObject to handle
clipboard operations.
2007-10-16 Lluis Sanchez Gual <>
* libsteticui/WidgetEditSession.cs: Removed unneeded dispose and destroy
calls. The toolbar will be destroyed together with the parent.
* libsteticui/ActionGroupEditSession.cs: If the designer has not been
requested, it means it has not been added to a container, so it has to
be explicitely destroyed.
* libsteticui/WidgetActionBar.cs: Removed unneeded Dispose and Destroy calls
(Destroy already calls dispose).
* libsteticui/WidgetDesignerBackend.cs: Make sure base.Dispose is always
called. Handle exceptions thrown by the GConf query.
* libsteticui/ActionGroupDesignerBackend.cs: Remove references on dispose.
Helps tracking down leaks.
* libsteticui/PluggableWidget.cs: Don't try to create an image of the
designer if it is not visible. Don't explicitely destroy the child
designer. It will be destroyed by the subclass.
* libstetic/editor/ActionToolbar.cs, libstetic/editor/ActionGroupEditor.cs:
Properly destroy items.
2007-10-04 Lluis Sanchez Gual <>
* libstetic/wrapper/Action.cs: Avoid providing a null name in the Gtk.Action
constructor. Fixes crash in gtk+ 2.12.
2007-10-01 Lluis Sanchez Gual <>
* libsteticui/CecilWidgetLibrary.cs: Added missing null check.
2007-09-20 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs, libsteticui/AssemblyWidgetLibrary.cs,
libsteticui/CecilWidgetLibrary.cs, libsteticui/ApplicationBackend.cs,
libsteticui/Application.cs: Added a callback for resolving assembly
2007-09-17 Lluis Sanchez Gual <>
* libsteticui/ActionGroupDesigner.cs, libsteticui/Designer.cs,
libsteticui/WidgetDesigner.cs: Added a property for getting the project
element being edited in the designer.
* libsteticui/ComponentEventHandler.cs: Added property for getting the new
name in the args for the name change event.
2007-09-13 Lluis Sanchez Gual <>
* libstetic/WidgetUtils.cs: Fix version comparison logic.
2007-09-10 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs, libsteticui/WidgetEditSession.cs,
libsteticui/Project.cs: Properly propagate the widget name change event
when saving the contents of the designer.
2007-09-06 Lluis Sanchez Gual <>
* libsteticui/WidgetEditSession.cs: Removed unneeded code.
2007-09-06 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs, libsteticui/WidgetEditSession.cs: When
creating the designer, about creating twice the window widget (once for
the source project and once for the project being edited). Removed some
debug code.
2007-09-06 Lluis Sanchez Gual <>
* libsteticui/ActionGroupDesigner.cs, libsteticui/ApplicationBackend.cs,
libsteticui/Designer.cs, libsteticui/Application.cs,
libsteticui/WidgetDesigner.cs: The Application.ActiveProject has been
replaced by Application.ActiveDesigner, which coveys more information
about what to show in the designer widgets.
* libsteticui/ProjectBackend.cs, libsteticui/Project.cs, libstetic/DND.cs:
Implemented lazy loading of windows. The project now only loads the xml,
and only creates the widgets when they have to be shown in the designer.
* libsteticui/WidgetEditSession.cs, libsteticui/WidgetTree.cs,
libsteticui/ProjectView.cs, libsteticui/ProjectViewBackend.cs: Renamed
ProjectView to WidgetTree. This widget now only displays the widget tree
of the currently active designer.
* libsteticui/libsteticui.mdp, libsteticui/ Added new files.
* libsteticui/PaletteBackend.cs: Hide the palette if there is no active
* libstetic/IProject.cs, libstetic/ObjectWrapper.cs,
libstetic/wrapper/Widget.cs: Added notification methods to IProject, in
this way some common events can be forwarded to the project without
having to subscribe them on every widget.
* libstetic/wrapper/Button.cs, libstetic/wrapper/Object.cs,
libstetic/wrapper/Container.cs, libstetic/TypedPropertyDescriptor.cs:
Make sure change events are not fired when widgets are loaded from xml.
* libstetic/WidgetUtils.cs: Removed unused code.
* stetic/Stetic.cs, stetic/DesignerView.cs, stetic/,
stetic/, stetic/stetic.mdp, stetic/WindowListWidget.cs,
stetic/UIManager.cs: Added a new widget for displaying the list of all
windows in the project, since the project view now only displays the
widget tree of the active designer. Track other api changes.
2007-09-04 Lluis Sanchez Gual <>
* libstetic/wrapper/objects.xml: Added support for NodeView. Fixes bug
2007-09-04 Lluis Sanchez Gual <>
* libstetic/wrapper/ComboBox.cs: Comboboxes are now of type Text by default.
Fixes bug #81763.
2007-09-04 Lluis Sanchez Gual <>
* libstetic/wrapper/Notebook.cs: Workaround for GTK bug. ShowAll is not
propagated to tab labels. Fixes bug #82476.
2007-09-04 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs: When reloading a project, reuse the same
icon factory instance, since it may be inherited from another project.
Fixes bug #82527.
* libsteticui/WidgetEditSession.cs: Removed unneeded assignement.
* libsteticui/CodeGenerator.cs, libsteticui/CodeGeneratorInternalClass.cs,
libsteticui/CodeGeneratorPartialClass.cs, libstetic/GeneratorContext.cs:
Fix crash when generating the icon factory (the root object was not set
in the GeneratorContext).
* libsteticui/Project.cs: Special handling of IconFactory is not needed.
* libstetic/editor/ActionToolItem.cs: In CreateControls, fix crash caused by
the icon property being set too early, when it might be null.
* libstetic/editor/ActionToolbar.cs: Added missing null check.
2007-09-03 Lluis Sanchez Gual <>
* libstetic/wrapper/objects.xml: FileChooserButton doesn't have a default
constructor, it requires the title and the action. Fixes bug #82671.
2007-08-16 Lluis Sanchez Gual <>
* libsteticui/ApplicationBackend.cs, libsteticui/Application.cs,
libsteticui/ApplicationBackendController.cs: When a library is unloaded
notify the application frontend. The frontend can then clear cached data
from the library.
* libstetic/wrapper/objects.xml: Update EventBox category to 'container'.
* libstetic/ClassDescriptor.cs: When no label is set for a widget, use the
class name, without namespace.
2007-08-08 Lluis Sanchez Gual <>
* libstetic/wrapper/Widget.cs: Added missing null check. Don't set the Name
property to unselectable widgets.
2007-07-31 Lluis Sanchez Gual <>
* libstetic/wrapper/Button.cs, libstetic/wrapper/ButtonBox.cs: Don't
store the IsDialogButton property. The value can be determined on
the fly.
2007-07-31 Lluis Sanchez Gual <>
* libsteticui/WidgetEditSession.cs: Assign the target gtk version to
the project being edited.
* libstetic/wrapper/IconView.cs, libstetic/wrapper/objects.xml,
libstetic/libstetic.mdp, libstetic/ Added wrapper for
* libstetic/TypedPropertyDescriptor.cs: Added null check.
2007-07-31 Lluis Sanchez Gual <>
* libstetic/ImageInfo.cs, libstetic/editor/ThemedIcon.cs,
libstetic/editor/StockIconList.cs, libstetic/editor/StockItem.cs,
libstetic/GeneratorContext.cs, libstetic/WidgetUtils.cs: Fixed
loading of theme and gtk stock icons.
2007-07-31 Lluis Sanchez Gual <>
* libsteticui/WidgetPropertyTreeBackend.cs: Added missing null check.
2007-07-27 Lluis Sanchez Gual <>
* libsteticui/CecilWidgetLibrary.cs: Added null check.
* libsteticui/PluggableWidget.cs: When updating the child widget, do
not add it to the notebook if it is already a child of the
* libstetic/wrapper/pixmaps/comboentry.png,
libstetic/wrapper/pixmaps/iconview.png, libstetic/libstetic.mdp,
libstetic/ Added some missing icons.
* libstetic/wrapper/Widget.cs, libstetic/wrapper/objects.xml: Fixed
some issues with HasDefault. It can only be assigned when the
widget already has a parent.
* libstetic/TypedClassDescriptor.cs: Report icon loading errors.
2007-07-20 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs: Make DeleteSelection work for
* libsteticui/WidgetEditSession.cs, libsteticui/Component.cs,
libsteticui/WidgetDesigner.cs, libsteticui/WidgetComponent.cs:
Moved all clipboard checking properties to WidgetDesigner.
2007-07-16 Lluis Sanchez Gual <>
* libsteticui/Project.cs: Fixes on ActionGroup management.
2007-07-16 Lluis Sanchez Gual <>
* libsteticui/ActionGroupToolbar.cs: Notify group changes to the
* libsteticui/ActionGroupEditSession.cs: Don't delay the creation of
the designer because when used in combination with the widget
designer, change events are subscribed since the begining
2007-07-10 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs: Fix NRE (bug #82052).
2007-07-09 Lluis Sanchez Gual <>
* libstetic/editor/ActionMenuItem.cs,
libstetic/editor/ActionToolItem.cs: Show menu items and tool
buttons insensitive when bound to an insensitive action. Fixes bug
2007-07-09 Lluis Sanchez Gual <>
* libsteticui/ProjectViewBackend.cs: Cosmetic fixes.
2007-07-09 Lluis Sanchez Gual <>
* libsteticui/CecilWidgetLibrary.cs: Return 2.4 target gtk version is
none is provided.
* libsteticui/ApplicationBackend.cs, libsteticui/Application.cs,
libsteticui/ComponentType.cs: Added Library property to
* libsteticui/PluggableWidget.cs: The widget may be unrealized after
adding the notebook. Added a null check for this case. Fixes bug
2007-06-27 Lluis Sanchez Gual <>
* libsteticui/CecilWidgetLibrary.cs, libsteticui/Application.cs,
libsteticui/ComponentType.cs: When reading the component list of a
library, get the target version.
* libsteticui/ApplicationBackend.cs: Properly report an error when
dropping a widget of a class that doesn't exist.
* libstetic/WidgetLibrary.cs, libstetic/DND.cs: Added null check.
2007-06-27 Jacob Ilsø Christensen <>
* libstetic/WidgetLibrary.cs: Added handling of
an empty objects.xml file.
2007-06-22 Lluis Sanchez Gual <>
* libsteticui/CecilWidgetLibrary.cs: When looking for widgets in a
library, ignore those without a palette category.
* libsteticui/ApplicationBackend.cs: Added null check.
* libsteticui/Application.cs: Don't try to load widgets from an
assembly if we know that's not a widget library.
* libstetic/CustomWidget.cs: Add IntPtr constructor.
* libstetic/EnumDescriptor.cs: Fix problem with the enum loading code,
which was not working when loading Gtk.SelectionMode, because it
has two members with the same value.
* libstetic/wrapper/Container.cs: When dropping an object, look for
placeholders in all the child hierarchy, not only the direct
2007-06-20 Lluis Sanchez Gual <>
* libsteticui/WidgetEditSession.cs: Flickering fixes.
* libsteticui/WidgetDesigner.cs: In BeginComponentDrag, don't take a
callback when the component type is known.
2007-06-20 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs, libsteticui/WidgetEditSession.cs,
libsteticui/WidgetDesigner.cs, libsteticui/PluggableWidget.cs,
libsteticui/Project.cs: Fixed flickering in widget designers caused
by project reloading. The new ProjectReloading event is fired
before the whole process reloading starts, and the designer takes a
'screenshot' of the old desiger, which is shown in place of the
real designer during the reloading process.
* libsteticui/CecilWidgetLibrary.cs, libsteticui/Application.cs: Added
GetComponentTypes method, which returns a list of widgets
implemented in a library, without having to load it.
* libsteticui/ApplicationBackend.cs, libstetic/IProject.cs,
libstetic/ObjectWriter.cs, libstetic/ObjectWrapper.cs,
libstetic/wrapper/Container.cs, libstetic/DND.cs: Added support for
dragging widgets from a palette before loading the widget library
that implements them. When the widget is dropped, a callback is
called (which is supposed to load the library) and the new widget
is created.
* libstetic/wrapper/pixmaps/widget.png, libstetic/libstetic.mdp,
libstetic/ Added new image.
2007-06-19 Lluis Sanchez Gual <>
* libstetic/wrapper/objects.xml: Added some missing gtk 2.8 properties.
2007-06-18 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs, libsteticui/SignalsEditorBackend.cs,
libsteticui/WidgetEditSession.cs, libsteticui/PropertyTree.cs,
libsteticui/WidgetActionBar.cs, libsteticui/ApplicationBackend.cs,
libsteticui/PaletteBackend.cs, libsteticui/Project.cs,
libstetic/IProject.cs, libstetic/ItemDescriptor.cs,
libstetic/ObjectWrapper.cs, libstetic/WidgetLibrary.cs,
libstetic/ErrorWidget.cs, libstetic/WidgetUtils.cs,
libstetic/ClassDescriptor.cs: Allow selecting the target the gtk#
version of a project.
* libstetic/wrapper/objects.xml: Added new widgets, properties and
events for gtk# 2.6.
2007-06-12 Lluis Sanchez Gual <>
* libsteticui/lib/Mono.Cecil.dll: Updated from SVN, to keep in sync
with MD.
2007-06-11 Lluis Sanchez Gual <>
* libsteticui/Project.cs: Make sure the project backend is loaded when
checking the CanGenerateCode property.
2007-06-11 Lluis Sanchez Gual <>
* libstetic/ImageInfo.cs: Load images from a path relative to the entry
assembly location.
2007-06-11 Lluis Sanchez Gual <>
* libsteticui/Project.cs: Fix problem with reading empty action groups.
2007-06-04 Lluis Sanchez Gual <>
* libstetic/GeneratorContext.cs: IconLoader must be an internal class.
2007-05-31 Lluis Sanchez Gual <>
* libstetic/wrapper/Action.cs: Generate initialization of the Active
and DrawAsRadio properties. They are not generated by default
because they belong to a Gtk.Action subclass. Fixes bug #81785.
2007-05-31 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs, libsteticui/Project.cs: Added method
for getting all widget types included in a project.
* libstetic/wrapper/objects.xml: Gtk.Bin now inherits the properties of
2007-05-31 Lluis Sanchez Gual <>
* libsteticui/CecilClassDescriptor.cs: Added missing null check when
checking for base classes in FindEvent.
2007-05-30 Lluis Sanchez Gual <>
* libsteticui/libsteticui.mdp, libsteticui/ Added reference
to glib.
* libsteticui/WidgetActionBar.cs, libstetic/CommandDescriptor.cs: Use
Menu size for command icons.
* libsteticui/WidgetTreeCombo.cs: Replaced the popup widget menu by a
popup widget tree view. Fixes bug #81762.
2007-05-30 Lluis Sanchez Gual <>
* libstetic/wrapper/Window.cs: Store the WindowPosition property in the
Window wrapper, since it may sometimes be changed by the embedder
* libstetic/wrapper/objects.xml: Added default value for Widget.Events
* libstetic/wrapper/Dialog.cs: (Wrap) Don't initialize the HasSeparator
property if the provided instance is already initialized.
2007-05-30 Lluis Sanchez Gual <>
* libstetic/editor/ActionMenuBar.cs, libstetic/editor/ActionMenu.cs:
When a menu bar loses the focus, reset the menu item selection
before hiding the submenus. Fixes bug #81761.
2007-05-23 Lluis Sanchez Gual <>
* libstetic/editor/StockIconSelectorItem.cs,
libstetic/editor/IconSelectorItem.cs: Added IntPtr constructors. It
seems to crash without them in some contexts.
2007-05-21 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs: When saving write to a temporary file
first, just in case something fails.
2007-05-21 Lluis Sanchez Gual <>
* libsteticui/CecilSignalDescriptor.cs,
libsteticui/CecilWidgetLibrary.cs: Properly handle generic event
handler types. Fixes bug #80783.
2007-05-19 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs, libsteticui/WidgetEditSession.cs,
libsteticui/WidgetDesigner.cs, libsteticui/Project.cs,
libstetic/IProject.cs: Added ImagesRootPath, which is the root path
where to start looking for images. Added the ImportFileCallback
callback, called when an image file is referenced from the stetic
* libstetic/ImageInfo.cs: Image files are now relative to
* libstetic/, libstetic/editor/SelectImageDialog.cs: Use
the new root image path to create relative paths to images.
* libstetic/editor/ImageSelector.cs: Make the clean button smaller.
* libstetic/WidgetUtils.cs: Added AbsoluteToRelative function.
2007-05-17 Lluis Sanchez Gual <>
* libstetic/wrapper/Notebook.cs, libstetic/wrapper/objects.xml: Added
CurrentPage property to Notebook.
2007-05-17 Lluis Sanchez Gual <>
* libsteticui/CecilSignalDescriptor.cs: Added missing null check.
* libsteticui/ProjectBackend.cs: Remove debug cwl.
* libstetic/wrapper/Container.cs: Don't show the main window if the
visible flag is not set. Fixes bug #81365.
2007-05-17 Lluis Sanchez Gual <>
* libsteticui/WidgetActionBar.cs, libstetic/CommandDescriptor.cs: Fix
bug about widget commands without an icon not being properly shown.
* libstetic/wrapper/Notebook.cs: Implemented Swap methods.
* libstetic/libstetic.mdp: Updated.
2007-05-16 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs, libsteticui/WidgetEditSession.cs,
libsteticui/PaletteBackend.cs, libsteticui/Project.cs: Added
support for internal widgets and internal widget libraries.
Internal widgets won't be shown in the palette unless the library
to which they belong is internal to the project.
* libsteticui/Component.cs, libsteticui/ActionGroupComponent.cs,
libsteticui/WidgetComponent.cs: Added properties for changing the
GeneratePublic flag.
* libstetic/ImageInfo.cs, libstetic/ProjectIconFactory.cs,
libstetic/GeneratorContext.cs: Added a GenerateLoadPixbuf method
which creates a pixbuf from a stock image name in safe way (it
won't crash if the image doesn't exist, but it will return a
'missing image' icon).
* libstetic/wrapper/ActionGroup.cs: Allow generatic private action
* libstetic/ClassDescriptor.cs: Added support for internal widgets.
2007-05-15 Lluis Sanchez Gual <>
* libsteticui/ActionGroupDesigner.cs, libsteticui/ProjectBackend.cs,
libsteticui/WidgetInfoEventHandler.cs, libsteticui/Application.cs,
libsteticui/Project.cs, libsteticui/PluggableWidget.cs,
stetic/Stetic.cs, stetic/DesignerView.cs, stetic/UIManager.cs:
Implemented lazy loading of projects. Project widgets won't be
instantiated until necessary. The new WidgetInfo class allows
getting the list of toplevels in a project without having to
completely load it.
* libsteticui/CecilSignalDescriptor.cs,
libsteticui/LibraryCache.cs, libsteticui/CecilClassDescriptor.cs,
libsteticui/CecilWidgetLibrary.cs: Store parsed information in a
cache file. When loading the library again stetic will check if the
library has changed, and it if has not it will load widget info
from the cache file.
* libsteticui/libsteticui.mdp, libsteticui/ Updated.
* libsteticui/ProjectView.cs, libsteticui/ProjectViewBackend.cs: Added
SelectionChanged event. Moved from the Project class, since project
doesn't have the concept of Selection anymore.
* libsteticui/WidgetDesigner.cs: Added clipboard check operations from
the Project class.
* libstetic/wrapper/Widget.cs: After reading the info of a widget,
store the oldName field, so it can properly track name changes.
* stetic/, stetic/stetic.mdp: Added new files.
2007-05-08 Lluis Sanchez Gual <>
* libstetic/wrapper/ScrolledWindow.cs: Manually notify that a child has
been added, since the child added event is not being fired.
* libstetic/GladeUtils.cs: Normalize glade field names when loading.
2007-05-02 Mike Kestner <>
* libsteticui/WidgetFactory.cs: don't Destroy from Dispose override
since the circular ref GC mechanism can get to the child before the
2007-05-01 Mike Kestner <>
* libstetic/wrapper/MenuBar.cs:
* libstetic/wrapper/ActionToolbarWrapper.cs:
* libstetic/editor/ActionMenuItem.cs:
* libstetic/editor/IconSelectorMenuItem.cs:
* libstetic/editor/ActionMenu.cs: Call base.Dispose on GLib.Objects
after all other dispose actions are performed.
2007-05-01 Mike Kestner <>
* libsteticui/WidgetFactory.cs:
* libsteticui/ProjectView.cs:
* libsteticui/PaletteBackend.cs:
* libsteticui/SignalsEditor.cs:
* libsteticui/ActionGroupToolbar.cs:
* libsteticui/WidgetDesigner.cs:
* libsteticui/PluggableWidget.cs:
* stetic/DesignerView.cs: Call base.Dispose on GLib.Objects after
all other dispose actions are performed.
2007-04-27 Mike Kestner <>
* libstetic/editor/ActionToolbar.cs (FillMenu): can't Destroy
after Disposing the widgets. Just Destroy, as it disposes.
2007-04-27 Mike Kestner <>
* libsteticui/ObjectWrapper.cs: ContainerChildHashItem.Equals needs
to return avoid cast and return false if comparing to another type.
2007-04-26 Mike Kestner <>
* libsteticui/PaletteBackend.cs: ActionGroupBox.Dispose needs to
do its cleanup before invoking base.Dispose.
2007-04-18 Lluis Sanchez Gual <>
* libsteticui/libsteticui.mdp, libstetic/libstetic.mdp: Updated.
* libstetic/wrapper/Box.cs, libstetic/wrapper/Table.cs: Set spacing to
6 by default.
* libstetic/wrapper/ScrolledWindow.cs: Set scrolling to automatic by
* libstetic/WidgetUtils.cs, libstetic/ClassDescriptor.cs,
libstetic/TypedClassDescriptor.cs: When looking for default values,
avoid initializing the test instance, make sure the get an instance
with all default values.
2007-04-10 Lluis Sanchez Gual <>
* libsteticui/CecilWidgetLibrary.cs: Performance improvements in the
method that resolves widget types.
* libstetic/wrapper/ButtonBox.cs: Don't automatically bind dialog
buttons with response type set to None.
* libstetic/PropertyDescriptor.cs: Set the hasDefault flag when a
default is explicitely set in the objects.xml file.
* libstetic/ Updated.
2007-03-28 Lluis Sanchez Gual <>
* libsteticui/ApplicationBackend.cs: Don't allow cutting/copying top
level widgets. Fixes bug #81015.
2007-03-28 Lluis Sanchez Gual <>
* libstetic/wrapper/Container.cs, libstetic/wrapper/Widget.cs: When
selecting a widget, avoid setting the focus to the parent
container, since it may end changing the selection. Fixes bug
2007-03-28 Lluis Sanchez Gual <>
* libstetic/wrapper/objects.xml: Removed properties already inherited
from Gtk.Button.
2007-03-28 Lluis Sanchez Gual <>
* libstetic/undo/XmlDiffAdaptor.cs: Don't crash if a child element
doesn't exist.
* libstetic/editor/StockItem.cs: Fix warning.
2007-03-28 Lluis Sanchez Gual <>
* libstetic/wrapper/ScrolledWindow.cs: Don't generate the viewport if
there isn't any child. Make scrollbars always visible in the
* libstetic/wrapper/objects.xml: Ignore the default for DrawIndicator,
since the default is 'false', but a default CheckButton has 'true'
as value.
2007-03-26 Lluis Sanchez Gual <>
* libsteticui/WidgetEditSession.cs,
libstetic/wrapper/Widget.cs, libstetic/wrapper/objects.xml: Support
generating private classes.
* libsteticui/ComponentType.cs, libstetic/ImageInfo.cs,
libstetic/wrapper/Action.cs, libstetic/wrapper/ImageMenuItem.cs,
libstetic/editor/StockItem.cs, libstetic/WidgetUtils.cs: Use the
new MissingIcon constant.
* libstetic/wrapper/ComboBox.cs: Made combo values translatable. Fixes
bug #81033.
* libstetic/HandleWindow.cs: Removed unused file.
2007-03-08 Lluis Sanchez Gual <>
* libstetic/wrapper/Container.cs: Fix null ref.
* libstetic/wrapper/Widget.cs: Use a wrapper property for CanFocus
since it may be changed by the designer.
2007-03-08 Lluis Sanchez Gual <>
* libsteticui/WidgetDesignerBackend.cs: ResetSelection now sets the
focus to the fixed container.
* libsteticui/PropertyTree.cs: Dispose the edit session of a cell when
losing the focus.
* libsteticui/PaletteBackend.cs: Don't call SetActionGroups when
disposing, since it ends calling show().
* libstetic/wrapper/Container.cs: Use ResetSelection to remove the
focus from the current widget.
* libstetic/editor/TextEditor.cs: Don't fire the changed event at every
key press, only when pressing enter or losing the focus.
* libstetic/PropertyEditorCell.cs: When losing the focus, update the
property value.
* libstetic/wrapper/Widget.cs: Don't try to change widget event flags
if the widget is already realized.
2007-03-06 Lluis Sanchez Gual <>
* libsteticui/ApplicationBackend.cs: Added some null checks. Added
BeginComponentDrag, to allow using an external toolbox.
* libsteticui/ProjectBackend.cs, libsteticui/WidgetDesigner.cs,
libsteticui/Project.cs: Added method for getting all component
types accessible from a project. Added some null checks.
* libsteticui/WidgetEditSession.cs: Reload the project when the widget
libraries change.
* libsteticui/Application.cs: Fill ComponentType with category
* libsteticui/PropertyTree.cs: Removed the horizontall scrollbar. Cell
size will always fit the available space. Allow changing the column
width by dragging the divider.
* libsteticui/PaletteBackend.cs: The library list of a project now
includes the core library.
* libsteticui/ActionGroupComponent.cs: Added null check.
* libsteticui/ComponentType.cs: Added category information. Allow
creating a ComponentType from an action.
* libsteticui/WidgetComponent.cs: Added some null checks.
* libstetic/editor/Enumeration.cs: Use a combo box entry with no frame
as selector. It takes less space.
* libstetic/editor/TextEditor.cs, libstetic/editor/Flags.cs,
libstetic/editor/String.cs, libstetic/editor/IntRange.cs,
libstetic/editor/Identifier.cs, libstetic/editor/OptIntRange.cs,
libstetic/editor/StringArray.cs: Removed frames from all editors.
Take less space.
2007-02-24 Zach Lute <>
* libstetic/ImageInfo.cs: Fixed an issue in which an image thumbnail
wouldn't be scaled if width and height were equal. Fixes bug #80927.
2007-03-02 Lluis Sanchez Gual <>
* libstetic/ObjectReader.cs, libstetic/wrapper/Container.cs: Fixed
issues with internal children when importing a glade file.
* libstetic/GladeUtils.cs: Use invariant culture to parse floats.
2007-02-20 Lluis Sanchez Gual <>
* libsteticui/ActionGroupEditSession.cs: Added null check.
* libstetic/wrapper/Action.cs: Don't set the type to Radio unless a
real group name is provided.
* libstetic/editor/ActionMenu.cs: Set AppPaintable, since we do some
custom painting in the Expose event. Also call the base
OnExposeEvent after painting the background. Fixes bug #80864.
2007-02-19 Nate Hancock <>
* libstetic/wrapper/object.xml: Gtk.ToggleButton now has base class
Gtk.Button instead of Gtk.Container.
2007-02-19 Lluis Sanchez Gual <>
* libsteticui/WidgetFactory.cs, libsteticui/WidgetEditSession.cs:
Several fixes in the disposing code.
* libsteticui/ActionGroupToolbar.cs: Unsubscribe all events, since gtk#
seems to leak if not done. Replaced all anonymous methods, since
keep to many references in memory.
* libsteticui/ActionGroupDesignerBackend.cs: Removed the Dispose
method, since everything will be disposed when the backend is
* libsteticui/libsteticui.mdp, libstetic/libstetic.mdp,
stetic/stetic.mdp: Updated.
* libsteticui/WidgetDesigner.cs: Added some checks to avoid operating
on disposed designers.
* libsteticui/ActionGroupEditSession.cs: Delay the creation of the
action group designer until it is really required.
* libsteticui/PluggableWidget.cs: Explicitely destroy replaced
* libstetic/undo/UndoManager.cs: Don't use an anonymous method since it
will hold a reference to the object to which the event is being
added, and we don't want this.
* libstetic/wrapper/Container.cs, libstetic/wrapper/Widget.cs: Moved
tooltip generation code from Widget to Container. Reset the
generated widget code when starting code generation.
* libstetic/wrapper/MenuBar.cs: Dispose the attached ActionTreeNode
object when the palette item is disposed.
* libstetic/wrapper/ActionTree.cs: Recursively dispose node children.
* libstetic/editor/ActionGroupEditor.cs: Unsubscribe events when
2007-02-13 Lluis Sanchez Gual <>
* libstetic/wrapper/Container.cs: Emit the content changed event when a
new child is added.
* libstetic/wrapper/Paned.cs: Add1 and Add2 does not fire the child
added event, so the parent has to be manually notified.
2007-02-13 Lluis Sanchez Gual <>
* libstetic/RadioGroupManager.cs: Implement the IRadioGroupManager
* libstetic/wrapper/Action.cs, libstetic/wrapper/objects.xml,
libstetic/wrapper/RadioActionGroupManager.cs: Implemented support
for radio groups in RadioAction objects.
* libstetic/wrapper/RadioToolButton.cs,
libstetic/wrapper/RadioMenuItem.cs: Implement the new
IRadioGroupManagerProvider interface.
* libstetic/IRadioGroupManager.cs: Added new interface for wrapping
group managers.
* libstetic/editor/GroupPicker.cs: Get the group manager from the
manager provider, instead of looking for a static method.
* libstetic/libstetic.mdp, libstetic/ Updated.
2007-02-12 Lluis Sanchez Gual <>
* libsteticui/ApplicationBackend.cs, libsteticui/Application.cs,
libstetic/, libstetic/wrapper/Container.cs,
libstetic/libstetic.mdp, libstetic/, stetic/Stetic.cs,
stetic/Configuration.cs: When dropping a non-container into a main
window, warn the user whether they really wanted that, or if they
instead wanted a container to be in place. Make this warning dialog
* libsteticui/PropertyTree.cs: Removed unused code.
2007-02-12 Lluis Sanchez Gual <>
* libsteticui/PropertyTree.cs: Refiltering the tree while it is being
edited has lots of issues, so filtering has been completely
removed. Now, the label of hidden properties are shown as disabled,
and the content blank.
* stetic/, stetic/stetic.mdp: Added missing resource.
2007-02-12 Lluis Sanchez Gual <>
* libsteticui/libsteticui.mdp, libsteticui/,
libstetic/, stetic/ Flush.
* libsteticui/WidgetDesigner.cs: When disposing the active project,
reset the active project property.
* libstetic/GeneratorContext.cs: Added a code generation option for
specifying the Gettext class to use.
2007-02-08 Lluis Sanchez Gual <>
* libsteticui/libsteticui.mdp, libsteticui/ Fixed
* Added missing modules.
2007-02-08 Lluis Sanchez Gual <>
* libsteticui/, libstetic/, stetic/
Distcheck fixes.
* libstetic/GeneratorContext.cs: Don't generate gettext for empty
* Add missing package.
* stetic/stetic.mdp, libsteticui/libsteticui.mdp,
libstetic/libstetic.mdp, stetic.mds: Added MonoDevelop projects.
2007-02-05 Lluis Sanchez Gual <>
* libsteticui/WidgetEditSession.cs: Clone the widget library list from
the master project since the list is cleared when the copy project
is closed.
* libstetic/ObjectWrapper.cs, libstetic/wrapper/Button.cs,
libstetic/PropertyDescriptor.cs, libstetic/WidgetUtils.cs: Properly
generate translatable properties.
2007-02-02 Lluis Sanchez Gual <>
* libstetic/editor/SelectImageDialog.cs,
libstetic/editor/SelectIconDialog.cs, libstetic/WidgetUtils.cs,
libstetic/wrapper/pixmaps/missing.png: Looks like some themes don't
have icon for gtk-missing-image. Added a fallback to avoid crashes.
* stetic/UIManager.cs: Action fixes.
2007-02-01 Lluis Sanchez Gual <>
* More dependency removal.
2007-02-01 Lluis Sanchez Gual <>
* Removed gnome-common dependency.
2007-01-31 Lluis Sanchez Gual <>
* libsteticui/Clipboard.cs: Use the new PasteChild method, since
ReplaceChild is now protected.
* libsteticui/Glade.cs: Don't try to resolve references when loading a
glade file.
* libsteticui/libsteticui.dll.config, libstetic/libstetic.dll.config:
Added dlls maps for MacOSX
* libstetic/wrapper/Button.cs, libstetic/wrapper/CheckButton.cs: Set
UseUnderline = true by default.
* libstetic/wrapper/Container.cs: Made ReplaceChild protected. Make
sure widgets copied from clipboard are properly registered in the
undo system.
* libstetic/wrapper/Paned.cs, libstetic/wrapper/Box.cs,
libstetic/wrapper/Frame.cs, libstetic/wrapper/Fixed.cs,
libstetic/wrapper/ScrolledWindow.cs, libstetic/wrapper/Toolbar.cs,
libstetic/wrapper/Notebook.cs, libstetic/wrapper/Expander.cs: Made
ReplaceChild protected.
* libstetic/wrapper/ComboBoxEntry.cs: Fix code generation issue for
text combo box.
* libstetic/wrapper/objects.xml: Added UseUnderline property to
* libstetic/DND.cs: Use the native format for copy/paste widgets.
2007-01-25 Lluis Sanchez Gual <>
* libsteticui/CodeGenerator.cs,
libsteticui/CodeGeneratorPartialClass.cs: Make sure the globla
Initialization is called from internal and partial classes.
* libstetic/editor/ActionMenuItem.cs,
libstetic/editor/ActionToolItem.cs: Fix compilation conflict with
recent gtk# versions.
2007-01-22 Lluis Sanchez Gual <>
* libsteticui/WidgetDesigner.cs: Avoid disposing twice the designer.
2007-01-22 Lluis Sanchez Gual <>
* libsteticui/ApplicationBackend.cs, libsteticui/ProjectBackend.cs,
libsteticui/Application.cs: Fixed problem when updating project
libraries. Make sure referenced libraries are not unloaded when
they are still needed.
* libsteticui/CecilWidgetLibrary.cs: Null check.
2007-01-22 Lluis Sanchez Gual <>
* libsteticui/ActionGroupDesigner.cs, libsteticui/ProjectView.cs,
libsteticui/SignalsEditor.cs, libsteticui/PluggableWidget.cs: Some
protection to avoid dispatching some events after the object has
been disposed.
* libsteticui/ApplicationBackend.cs: Changed the way libraries are
loaded. If a library has dependencies, the dependencies are loaded
* libsteticui/CecilSignalDescriptor.cs,
libsteticui/CecilWidgetLibrary.cs: New classes which allow loading
a widget library using cecil.
* libsteticui/ProjectBackend.cs, libsteticui/Project.cs: Project
libraries are now stored in the project file. In this way it is
possible to generate code for projects which depend on other
libraries using the command line tool.
* libsteticui/GuiDispatchServerSink.cs: Removed debug message.
* libsteticui/CodeGenerator.cs: Avoid dependency on
* libsteticui/WidgetTreeCombo.cs, stetic/Stetic.cs: Misc fixes.
* libsteticui/WidgetEditSession.cs, libsteticui/WidgetDesigner.cs: Some
protection to avoid dispatching some events after the object has
been disposed. Some fixes for the out-of-process mode.
* libsteticui/Application.cs: Implemented method which determines if an
assembly is a widget library or not. Other misc fixes.
* libsteticui/PaletteBackend.cs: Update the widget list when the
registry changes.
* libsteticui/ Updated. Added Cecil dependency.
* libsteticui/AssemblyWidgetLibrary.cs, libstetic/WidgetLibrary.cs:
Added GetLibraryDependencies method, which returns widget libraries
needed by the widgets of this library.
* libstetic/ItemGroup.cs, libstetic/Registry.cs: When looking for an
item group of a class, avoid returning a group which has not been
declared in the class, but inherited by a base class.
* libstetic/NoGuiDispatchAttribute.cs: Moved from libsteticui to
* libstetic/ObjectWrapper.cs: Added an extended data property where
class descriptors can store random information.
* libstetic/wrapper/Container.cs: Removed dependency on
* libstetic/wrapper/FontSelectionDialog.cs,
libstetic/wrapper/ComboBox.cs, libstetic/wrapper/ColorButton.cs:
Set the correct base class.
* libstetic/wrapper/ScrolledWindow.cs: Destory viewport after replacing
* libstetic/wrapper/objects.xml, libstetic/ClassDescriptor.cs,
libstetic/TypedClassDescriptor.cs: Implemented support for
'base-type' attribute, which means that a widget class inherits all
properties and events of the referenced type.
* libstetic/wrapper/TreeView.cs: New wrapper for TreeView.
* libstetic/ Updated.
* libstetic/AssemblyWidgetLibrary.cs: Moved to libsteticui.
2007-01-17 Lluis Sanchez Gual <>
* libstetic/EnumDescriptor.cs: Avoid importing enum values which have
not been declared in the xml file. Shoud fix bugs 80007 and 80471.
* libstetic/wrapper/objects.xml: Removed missing property.
2007-01-17 Lluis Sanchez Gual <>
* libsteticui/ApplicationBackend.cs: Fixed some warnings.
* libsteticui/WidgetDesignerBackend.cs,
libsteticui/WidgetEditSession.cs, libstetic/IDesignArea.cs,
libstetic/editor/ActionToolItem.cs: Provide information about the
drag hot point when firing the drag event. Allow enabling/disabling
drag support.
* libsteticui/ProjectBackend.cs: Fix cast exception when changing
signals in actions.
* libsteticui/Clipboard.cs, libstetic/wrapper/Button.cs,
libstetic/wrapper/Frame.cs, libstetic/wrapper/ButtonBox.cs: User
the new ReplaceChild overload.
* libsteticui/WidgetDesigner.cs: Improve error message when the
designet can't be loaded.
* libsteticui/,, stetic/ Build
libstetic with mcs instead of gmcs, since that assembly may need to
be linked with widget libraries based on .net 1.1.
* libstetic/wrapper/pixmaps/fixed.png: New bitmap for Gtk.Fixed.
* libstetic/wrapper/Container.cs: Added protected methods for notifying
the add/remove child event, since some containers don't fire them.
Added ReplaceChild overload which will explicitely destroy the
replaced widget. Don't allow dragging top level widgets.
* libstetic/wrapper/Fixed.cs, libstetic/ Implemented
support for Gtk.Fixed.
* libstetic/wrapper/Window.cs: Don't generate code for the Type
property, since it's read-only.
* libstetic/wrapper/objects.xml: Implemented support for Gtk.Fixed.
Hide the Type property, since code for that property can't be
generated (it must be provided by the user in the window
* libstetic/DND.cs: Added properties for getting the hot drag point
when dragging a widget.
2007-01-15 Lluis Sanchez Gual <>
* libsteticui/UndoQueue.cs: Removed debug messages.
2007-01-15 Lluis Sanchez Gual <>
* libsteticui/ApplicationBackend.cs, libstetic/Registry.cs: Allow
grouping several changes in the registry in a single transaction.
* libsteticui/CodeGenerator.cs, libsteticui/Application.cs,
libsteticui/CodeGenerationResult.cs, libstetic/ObjectWrapper.cs,
libstetic/GeneratorContext.cs, libstetic/ErrorWidget.cs,
stetic/Stetic.cs: Added an option to allow generating code even
when not all referenced widgets are available. Added support for
warnings in the code generation methods, so the caller can get
information about what went wrong during the generation process.
* libsteticui/ Added CodeGenerationResult.
* libstetic/wrapper/Widget.cs: Clear the signal list when reloading a
widget. Fixed action group read code.
* libstetic/wrapper/Table.cs: Always return the children of the table
in the same order, to avoid unneeded changes in the diff files.
2007-01-12 Lluis Sanchez Gual <>
* libsteticui/ContainerUndoRedoManager.cs: Added missing file.
2007-01-12 Lluis Sanchez Gual <>
* libsteticui/WidgetEditSession.cs: When saving the designer session,
instead of deleting the old widget and adding the new one, update
the existing widget.
* libsteticui/Application.cs: Added some thread locking.
* libsteticui/Project.cs: When a widget name changed event is received,
update the corresponding component from the current thread, there
is no need to do it in the gui thread.
* libstetic/wrapper/Container.cs: Added null check for container child.
2007-01-11 Lluis Sanchez Gual <>
* libsteticui/ActionGroupDesigner.cs, libsteticui/WidgetDesigner.cs,
libsteticui/ActionGroupEditSession.cs: Added undo support for the
global action group designer.
* libsteticui/ApplicationBackend.cs: Catch errors when loading a
library to avoid aborting the whole update operation.
* libsteticui/ProjectBackend.cs,
libsteticui/PaletteBackend.cs, libsteticui/PropertyGrid.cs,
libstetic/undo/ActionDiffAdaptor.cs, stetic/Stetic.cs,
stetic/DesignerView.cs: Track api changes.
* libsteticui/CodeGenerator.cs: Include actions in the bind field list.
* libsteticui/ComponentEventHandler.cs, libsteticui/Project.cs: The
component removed event now provides the name of the removed
component, no the component reference. Needed since the component
is already removed, and providing an instance in this case is
* libsteticui/ActionComponent.cs: Added property for gettion the group
of an action.
* libsteticui/ Added new file.
* libsteticui/UndoQueue.cs: Generalized the undo manager, so it can be
used for the action group editor.
* libstetic/undo/DiffGenerator.cs: Improved error message.
* libstetic/undo/UndoManager.cs: Make sure the UndoWriter works for
wrappers other than widgets. Don't include disposed or unregistered
wrappers into the undo event.
* libstetic/ObjectWrapper.cs: Factorized some undo properties and
methods into ObjectWrapper.
* libstetic/wrapper/Action.cs: More undo support.
* libstetic/wrapper/Container.cs, libstetic/wrapper/Widget.cs: Removed
some methods and properties now implemented in ObjectWrapper.
* libstetic/wrapper/ActionGroup.cs: ActionGroup is now an ObjectWrapper
subclass. Added better support for Undo.
* libstetic/editor/ActionGroupEditor.cs: Use new new ObjectChanged
* libstetic/GeneratorContext.cs: Made GenerateInstanceExpression
* stetic/LibraryManagerDialog.cs: Fixed warning.
2007-01-09 Lluis Sanchez Gual <>
* libsteticui/CodeGenerator.cs: Don't generate variables for
unselectable widgets. Use CodeDom expressions instead of variable
names when possible. When using partial classes, avoid creating
unneeded local variables, use field references instead.
* libsteticui/WidgetTreeCombo.cs: Don't show unselectable widgets, but
show its children if they are selectable.
* libsteticui/CodeGeneratorInternalClass.cs: Use CodeDom expressions
instead of variable names when possible. Fixed some incorrect
variable names. Make sure the generated class names are valid.
* libsteticui/CodeGeneratorPartialClass.cs: Use CodeDom expressions
instead of variable names when possible.
* libstetic/RadioGroupManager.cs, libstetic/ObjectWrapper.cs,
libstetic/wrapper/Button.cs, libstetic/wrapper/Label.cs,
libstetic/wrapper/RadioButton.cs, libstetic/wrapper/Frame.cs,
libstetic/wrapper/ActionGroup.cs, libstetic/wrapper/Window.cs,
libstetic/wrapper/ComboBox.cs, libstetic/wrapper/ColorButton.cs,
libstetic/wrapper/Notebook.cs, libstetic/wrapper/ButtonBox.cs,
libstetic/wrapper/RadioMenuItem.cs, libstetic/wrapper/Expander.cs,
libstetic/wrapper/Bin.cs, libstetic/wrapper/CheckButton.cs,
libstetic/ErrorWidget.cs: Track api changes. Variable name in code
generation methods has been replaced by a CodeDom expression.
* libstetic/wrapper/Container.cs, libstetic/wrapper/Widget.cs: Instead
of calling Show for each visible widget, call ShowAll on the top
level container child, and hide all invisible widgets. Track api
* libstetic/GeneratorContext.cs: Don't use variable names to reference
widget instances anymore, use CodeDom expressions instead. Needed
since widgets can be stored in variables and in fields.
2006-12-17 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs, libsteticui/WidgetEditSession.cs,
libsteticui/WidgetDesigner.cs, libsteticui/Project.cs: Added new
Changed event.
* libsteticui/PaletteBackend.cs, libsteticui/UndoQueue.cs,
libstetic/undo/ActionDiffAdaptor.cs, libstetic/wrapper/Action.cs,
libstetic/wrapper/Container.cs, libstetic/wrapper/Widget.cs,
libstetic/wrapper/ActionGroup.cs, libstetic/wrapper/MenuBar.cs,
libstetic/editor/ActionMenuBar.cs, libstetic/editor/ActionMenu.cs,
libstetic/editor/ActionToolbar.cs: Improved support for Undo.
* libstetic/undo/UndoManager.cs: Removed debug code.
* libstetic/undo/XmlDiffAdaptor.cs: Fix support for name and id
properties when diffing.
* libstetic/wrapper/objects.xml: HasFocus property doesn't need to be
available at design time.
* libstetic/wrapper/ActionToolbarWrapper.cs: Implemented support for
2006-12-17 Lluis Sanchez Gual <>
* libsteticui/ProjectBackend.cs, libsteticui/WidgetEditSession.cs,
libsteticui/WidgetDesigner.cs, libsteticui/Project.cs: Added new
Changed event.
* libsteticui/PaletteBackend.cs, libsteticui/UndoQueue.cs,
libstetic/undo/ActionDiffAdaptor.cs, libstetic/wrapper/Action.cs,
libstetic/wrapper/Container.cs, libstetic/wrapper/Widget.cs,
libstetic/wrapper/ActionGroup.cs, libstetic/wrapper/MenuBar.cs,
libstetic/editor/ActionMenuBar.cs, libstetic/editor/ActionMenu.cs,
libstetic/editor/ActionToolbar.cs: Improved support for Undo.
* libstetic/undo/UndoManager.cs: Removed debug code.
* libstetic/undo/XmlDiffAdaptor.cs: Fix support for name and id
properties when diffing.
* libstetic/wrapper/objects.xml: HasFocus property doesn't need to be
available at design time.
* libstetic/wrapper/ActionToolbarWrapper.cs: Implemented support for
2006-12-05 Lluis Sanchez Gual <>
* libsteticui/UndoQueue.cs: Added debug method.
* libstetic/UndoManager.cs: Moved to undo dir.
* libstetic/undo, libstetic/undo/IDiffAdaptor.cs,
libstetic/undo/DiffGenerator.cs, libstetic/undo/UndoManager.cs,
libstetic/undo/XmlDiffAdaptor.cs: Moved here UndoManager and added
some classes to generate undo diffs between objects and xml
* libstetic/wrapper/Button.cs, libstetic/wrapper/RadioToolButton.cs,
libstetic/wrapper/RadioButton.cs, libstetic/wrapper/OptionMenu.cs,
libstetic/wrapper/Image.cs, libstetic/wrapper/ImageMenuItem.cs,
libstetic/wrapper/ToolButton.cs: Track api changes.
* libstetic/wrapper/Action.cs, libstetic/wrapper/ActionGroup.cs,
libstetic/wrapper/ActionToolbarWrapper.cs: Added support for
* libstetic/wrapper/Container.cs, libstetic/wrapper/Widget.cs: Moved
all diffing code to the DiffGenerator class.
* libstetic/Placeholder.cs: Changed the name of the undo id property.
* libstetic/editor/ActionMenuItem.cs: Made atomic some action property
* libstetic/editor/ActionMenuBar.cs, libstetic/editor/ActionMenu.cs:
Added methods for saving/restoring the selection of a menu and
* libstetic/TypedPropertyDescriptor.cs: Added null check.
* libstetic/ Updated.
2006-12-01 Lluis Sanchez Gual <>
* libsteticui/ActionGroupDesigner.cs: Added null check.
* libsteticui/ProjectBackend.cs: Always return the top level widgets in
the same order they were stored in the project file.
* libsteticui/WidgetEditSession.cs, libsteticui/Clipboard.cs,
libsteticui/WidgetDesigner.cs, libsteticui/UndoQueue.cs,
libstetic/UndoManager.cs, libstetic/ObjectWrapper.cs,
libstetic/Placeholder.cs, stetic/Stetic.cs, stetic/DesignerView.cs,
stetic/UIManager.cs: Added support for undo/redo.
* libsteticui/Application.cs: Minor fix.
* libsteticui/Glade.cs, libsteticui/ActionGroupEditSession.cs,
libstetic/wrapper/Button.cs, libstetic/wrapper/Action.cs,
libstetic/wrapper/Container.cs, libstetic/wrapper/Widget.cs,
libstetic/wrapper/RadioButton.cs, libstetic/wrapper/Frame.cs,
libstetic/wrapper/ActionGroup.cs, libstetic/wrapper/OptionMenu.cs,
libstetic/wrapper/Notebook.cs, libstetic/wrapper/Image.cs,
libstetic/wrapper/MenuItem.cs, libstetic/wrapper/ButtonBox.cs,
libstetic/wrapper/ImageMenuItem.cs, libstetic/wrapper/Table.cs,
libstetic/wrapper/MenuBar.cs, libstetic/wrapper/Dialog.cs,
libstetic/wrapper/RadioMenuItem.cs, libstetic/wrapper/Expander.cs,
libstetic/wrapper/CheckButton.cs, libstetic/wrapper/ToolButton.cs,
libstetic/GladeUtils.cs, libstetic/ErrorWidget.cs,
libstetic/WidgetUtils.cs: Track api changes.
* libsteticui/, libstetic/ Updated.
* libsteticui/Project.cs: Update the app library list after removing a
* libstetic/ItemGroup.cs: Use an ordered dictionary to store
properties, so we always get them in the correct order.
* libstetic/CommandDescriptor.cs: Make sure the changes done by
commands are atomic.
* libstetic/ObjectReader.cs, libstetic/ObjectWriter.cs: New clases for
reading/writing objects
* libstetic/PropertyDescriptor.cs,
libstetic/TypedPropertyDescriptor.cs, libstetic/ClassDescriptor.cs,
libstetic/TypedClassDescriptor.cs: Added new method for
initializing and instance to its default values.
2006-11-13 Lluis Sanchez Gual <>
* libstetic/editor/Flags.cs:
* libstetic/editor/ActionToolItem.cs:
Fix build. Patch by Michael Schurter.
2006-09-22 Lluis Sanchez Gual <>
* libsteticui/WidgetEditSession.cs:
* libsteticui/Palette.cs:
* libsteticui/ProjectView.cs:
* libsteticui/SignalsEditor.cs:
* libsteticui/ApplicationBackend.cs: Reconnect the plug when the socket
is unrealized.
* libsteticui/WidgetDesignerBackend.cs: Added null check.
* libsteticui/WidgetDesigner.cs:
* libsteticui/ActionGroupEditSession.cs:
* libsteticui/PluggableWidget.cs:
* libsteticui/WidgetPropertyTree.cs:
* libsteticui/ActionGroupDesigner.cs:
* libstetic/Registry.cs:
* stetic/Stetic.cs:
* libsteticui/Application.cs: Fixed process restart workflow, to make
the process switch faster.
* libsteticui/GuiDispatchServerSink.cs:
* libsteticui/Component.cs:
* libsteticui/ApplicationBackendController.cs:
* libsteticui/Project.cs:
* libsteticui/ProjectBackend.cs: Misc bug fixes.
* libstetic/ItemDescriptor.cs: Made it serializable.
* libstetic/wrapper/Action.cs (CopyFrom): Clear the signals list before
adding the new signals.
* stetic/DesignerView.cs: Added getter for the root component.
2006-09-21 Lluis Sanchez Gual <>
* stetic/UIManager.cs:
* stetic/Stetic.cs: Use the new API.
* stetic/
* stetic/Configuration.cs:
* stetic/LibraryManagerDialog.cs: Implemented dialog for selecting
widget libraries.
* stetic/ Updated.
2006-09-21 Lluis Sanchez Gual <>
* libsteticui/ActionGroupDesigner.cs:
* libsteticui/ApplicationBackend.cs:
* libsteticui/WidgetDesignerBackend.cs:
* libsteticui/ProjectBackend.cs:
* libsteticui/SignalsEditorBackend.cs:
* libsteticui/WidgetPropertyTreeBackend.cs:
* libsteticui/WidgetEditSession.cs:
* libsteticui/Palette.cs:
* libsteticui/ComponentSignalEventHandler.cs:
* libsteticui/ProjectView.cs:
* libsteticui/ComponentEventHandler.cs:
* libsteticui/Component.cs:
* libsteticui/Application.cs:
* libsteticui/EmbedWindow.cs:
* libsteticui/PaletteBackend.cs:
* libsteticui/SignalsEditor.cs:
* libsteticui/ActionGroupComponent.cs:
* libsteticui/ApplicationBackendController.cs:
* libsteticui/ActionGroupDesignerBackend.cs:
* libsteticui/ActionComponent.cs:
* libsteticui/WidgetDesigner.cs:
* libsteticui/ActionGroupEditSession.cs:
* libsteticui/ComponentType.cs:
* libsteticui/Project.cs:
* libsteticui/WidgetComponent.cs:
* libsteticui/PluggableWidget.cs:
* libsteticui/WidgetPropertyTree.cs:
* libsteticui/ProjectViewBackend.cs:
* libstetic/IResourceProvider.cs:
Redesigned the API so it allows running the designer in a separate
process. This running mode is optional and not enabled by default
until all stability problems have been fixed.
* libsteticui/NoGuiDispatchAttribute.cs:
* libsteticui/GuiDispatchServerSinkProvider.cs:
* libsteticui/GuiDispatchServerSink.cs: A channel sink which ensures that
all incoming calls al dispatched in the GUI thread.
* libsteticui/ActionGroupToolbar.cs:
* libsteticui/WidgetActionBar.cs: Added the Bind to Field button
(moved from MD).
* libsteticui/CodeGenerator.cs: Added optional Gettext support.
* libsteticui/WidgetTreeCombo.cs:
* libsteticui/Clipboard.cs:
* libsteticui/Glade.cs:
* libsteticui/PropertyGrid.cs:
* libsteticui/UserInterface.cs:
* libsteticui/WidgetFactory.cs: Make classes internal.
* libsteticui/ Updated.
2006-09-21 Lluis Sanchez Gual <>
* libstetic/IProject.cs: Removed unused method.
* libstetic/ItemDescriptor.cs: Made some fields not serializable.
* libstetic/ObjectWrapper.cs: Allow binding a wrapper to a remote
frontend running in another process.
* libstetic/Registry.cs:
* libstetic/WidgetLibrary.cs: Implemented better support for library
* libstetic/wrapper/Container.cs:
* libstetic/wrapper/Widget.cs:
* libstetic/wrapper/Action.cs: Track api changes, added some null checks.
* libstetic/wrapper/Signal.cs:
* libstetic/SignalDescriptor.cs:
* libstetic/TypedSignalDescriptor.cs:
* libstetic/wrapper/SignalCollection.cs: Made it serializable.
* libstetic/wrapper/ActionGroup.cs: Made it sealed. Added some helper
* libstetic/wrapper/objects.xml: Action properties are translatable.
* libstetic/editor/ThemedIcon.cs, ImageSelector.cs: Don't use
stock_symbol-selection stock
icon since it is not available in all themes.
* libstetic/editor/Identifier.cs: Fix warning.
* libstetic/TypedPropertyDescriptor.cs: Improved error reporting.
* libstetic/GeneratorContext.cs: Added support for Gettext.
2006-09-01 Lluis Sanchez Gual <>
* libstetic/wrapper/Container.cs: When changing the selected item,
disable the focus event for the correct widget. Fixes bug #79247.
* libstetic/editor/ThemedIcon.cs:
* libstetic/editor/ImageSelector.cs: Use "..." as label for the selector
button since the icon stock_symbol-selection is not present in some
2006-09-01 Lluis Sanchez Gual <>
* libsteticui/Project.cs: Avoid the normal widget clearing callback
when closing a project. It may avoid a crash seen by some users
but which is hard to reproduce. Initialize the icon factory
when closing the project.
* libstetic/CommandDescriptor.cs: Added null check.
* libstetic/wrapper/Widget.cs: Clear the selection if the selected
widget is destroyed.
* libstetic/wrapper/WidgetEventHandler.cs: Set the wrapper property
in the args constructor.
* libstetic/wrapper/Viewport.cs: Wrapper properties can't be initialized
in the constructor.
* libstetic/wrapper/objects.xml: Set the default value for Visible to
'true' (in gtk, the default is false, but for stetic it is true).
* libstetic/editor/ActionMenuItem.cs: Added null check.
* libstetic/editor/SelectImageDialog.cs: Don't allow addin/removing
resources if there is no resource manager.
2006-08-30 Lluis Sanchez Gual <>
* libsteticui/ActionGroupDesigner.cs: Use Dispose instead of destroy
since it was generating some warnings.
* libsteticui/WidgetDesigner.cs: Dispose is enough.
* libsteticui/Project.cs: Don't add unselectable widgets to the tree.
Moved here some selection code from Widget.cs.
* libstetic/ItemGroup.cs: Make sure properties are returned in the
same order they are declared in objects.xml.
* libstetic/ObjectWrapper.cs: Don't nullify proj and signals on dispose,
it is causing some nullrefs.
* libstetic/wrapper/Container.cs: Changed a bit how selection works.
Everything is now controled by the project.
* libstetic/wrapper/Widget.cs: Make sure clicks for unselectable widgets
are intercepted.
* libstetic/wrapper/Notebook.cs: Track api changes.
* libstetic/wrapper/Table.cs: Destroy widgets removed from the table.
* libstetic/editor/ActionGroupEditor.cs: Implemented public Cut, Copy,
Paste and Delete methods.
* stetic/Stetic.cs:
* libstetic/TypedPropertyDescriptor.cs: Improved some error messages.
2006-08-29 Lluis Sanchez Gual <>
* libsteticui/ActionGroupDesigner.cs:
* libsteticui/ActionGroupToolbar.cs:
* libsteticui/Palette.cs:
* libsteticui/WidgetDesigner.cs:
* libsteticui/Project.cs:
* libsteticui/WidgetActionBar.cs:
* libstetic/ObjectWrapper.cs:
* libstetic/editor/ActionMenuBar.cs:
* libstetic/editor/ActionMenu.cs:
* libstetic/editor/ActionGroupEditor.cs:
* stetic/Stetic.cs: Explicitely destroy custom widgets to avoid memory
2006-08-26 Lluis Sanchez Gual <>
* libstetic/wrapper/WidgetEventHandler.cs: Added WidgetWrapper property.
* libsteticui/PropertyGrid.cs:
* libsteticui/Palette.cs:
* libsteticui/ProjectView.cs:
* libsteticui/WidgetActionBar.cs:
* libsteticui/SignalsEditor.cs:
* stetic/Stetic.cs:
* stetic/UIManager.cs:
* libsteticui/WidgetPropertyTree.cs: Track changes in WidgetEventHandler.
* libsteticui/Project.cs: Factorized cleanup methods into Close().
Properly dispose actions.
* libstetic/wrapper/Action.cs: Properly read the action id.
* libstetic/wrapper/Container.cs: Disconnect container events when
disposing. Sync the table after reading it.
* libstetic/wrapper/Widget.cs: Properly track unwrapped children
and intercept clicks for them.
* libstetic/wrapper/Box.cs: Don't create drop faults if the widget is
not selectable.
* libstetic/wrapper/ActionGroup.cs: Implemented IDisposable.
* libstetic/wrapper/ButtonBox.cs: Destroy buttons being removed (this will
dispose the wrapper).
* libstetic/wrapper/objects.xml: Inherit IsTextCombo property.
* libstetic/editor/ActionMenuBar.cs: Show an "Empty" message when the widget
is not selected.
* libstetic/editor/StockIconSelectorItem.cs: Removed gnome stock icons since
they need some special initialization code. Still available in the stock
icon selection box.
* libstetic/editor/ActionToolItem.cs: Propagate to menu popup the key used
to show the menu.
* libstetic/PropertyDescriptor.cs: Store translation info in the object wrapper,
instead of a global hashtable. This avoids keeping a reference to the object
forever in the translation info hashtable.
* libstetic/wrapper/TextView.cs:
* libstetic/wrapper/Window.cs:
* libstetic/wrapper/Scale.cs:
* libstetic/wrapper/Range.cs:
* libstetic/wrapper/Dialog.cs:
* libstetic/wrapper/Toolbar.cs: Unsubscribe events on dispose.
* libstetic/editor/SelectIconDialog.cs:
* libstetic/ Added warning to stock selection icon, shown when
the selected icon needs special icon factories.
2006-08-18 Lluis Sanchez Gual <>
* libsteticui/ActionGroupToolbar.cs: Fix exception.
* libsteticui/CodeGenerator.cs: Use CodeArgumentReferenceExpression
instead of CodeVariableReferenceExpression to reference parameters.
* libsteticui/WidgetDesigner.cs: Update the widget design size when
it changes.
* libstetic/ObjectWrapper.cs: Added setter for Loading.
* libstetic/wrapper/Container.cs: Don't fire ChildRemoved event
when loading.
* libstetic/wrapper/ActionGroup.cs: Added Remove method.
* libstetic/wrapper/ActionTree.cs:
* libstetic/wrapper/ActionToolbarWrapper.cs:
* libstetic/wrapper/MenuBar.cs: Don't fire change events when
creating the menu and toolbar.
* libstetic/wrapper/Widget.cs:
* libstetic/wrapper/Bin.cs: Implemented support for UIManagers
in custom widgets.
* libstetic/editor/Accelerator.cs: Fire change event when the
accelerator is set.
* stetic/UIManager.cs: Some UI improvements.
2006-08-17 Lluis Sanchez Gual <>
* libsteticui/PropertyEditor.cs: Made the class internal.
* libsteticui/UserInterface.cs: Added new overload for
* stetic/Stetic.cs: Close the project before opening a new one.
* stetic/UIManager.cs: Fixed bug when opening recent files.
* libsteticui/ActionGroupDesigner.cs: New file.
* libsteticui/Project.cs: Set the modified flag when a widget
is added or removed from the project.
* stetic/Stetic.cs: Moved page creation code to DesignerView.cs.
* DesignerView.cs: New file.
* libstetic/wrapper/Custom.cs:
* libstetic/CustomWidget.cs: Make public again, since it is
being used by the MD addin.
* libsteticui/ Updated.
2006-08-16 Lluis Sanchez Gual <>
* libsteticui/*:
* libstetic/*
* stetic/*: Added Catalog.GetString to all translatable strings.
2006-08-16 Lluis Sanchez Gual <>
* stetic/Stetic.cs: If a file name is specified when starting
Stetic, load it. Warn the user when closing an unsaved project.
Implemented Close command. Read and save the main window position.
* stetic/ Added an status bar.
* stetic/UIManager.cs: Implemented "Recent Files" submenu.
* stetic/RecentFiles.cs:
* stetic/Configuration.cs: New files.
* stetic/ Updated.
2006-08-16 Lluis Sanchez Gual <>
* libsteticui/Shadow.cs:
* libsteticui/EmbedWindow.cs:
* libsteticui/Metacity: Moved from libstetic.
* libsteticui/WidgetFactory.cs: Don't allow dragging window
* libsteticui/Glade.cs: Removed unused BeginGladeImport method.
* libsteticui/CodeGenerator.cs: Use GenerateCreationCode instead
of GenerateBuildCode to generate the code for the root window,
since it includes initialization code for properties which are
usually provided as constructor parameters.
* libsteticui/WidgetTreeCombo.cs: Fix warning.
* libsteticui/Project.cs: Added Close method. Removed some unused
* libsteticui/PropertyTree.cs: Made CellRendererPropertyGroup internal.
* libsteticui/UserInterface.cs: Added method overload.
CreateActionGroupDesigner now creates the toolbar.
* libsteticui/ContextMenu.cs:
* libsteticui/Grid.cs: Made the class internal.
* libsteticui/WidgetDesigner.cs: Moved from libstetic. Renamed from
PreviewBox to WidgetDesigner.
* libsteticui/WidgetPropertyTree.cs:
* libsteticui/SignalsEditor.cs: Track api changes.
* libsteticui/ Updated.
2006-08-16 Lluis Sanchez Gual <>
* libstetic/CustomWidget.cs:
* libstetic/wrapper/Custom.cs: Made the class internal.
* libstetic/wrapper/Frame.cs:
* libstetic/wrapper/Notebook.cs:
* libstetic/wrapper/ButtonBox.cs:
* libstetic/wrapper/Expander.cs:
* libstetic/HandleWindow.cs:
* libstetic/editor/Translatable.cs: Track api changes.
* libstetic/PreviewBox.cs:
* libstetic/EmbedWindow.cs:
* libstetic/Shadow.cs:
* libstetic/Metacity: Moved to libsteticui.
* libstetic/IDesignArea.cs: Moved here a delegate previously declared
in PreviewBox.
* libstetic/IProject.cs: Removed unused event.
* libstetic/ObjectWrapper.cs: Added public methods for attaching/detaching
* libstetic/wrapper/Container.cs: Removed unused code.
* libstetic/editor/TextBox.cs: Moved to Editors directory.
* libstetic/PropertyDescriptor.cs: Made TranslationInfo internal.
* libstetic/GeneratorContext.cs: Added initialization code for
top level widgets.
* libstetic/wrapper/ActionToolbarWrapper.cs:
* libstetic/wrapper/objects.xml: Support specifying a "Default" style for
the toolbar, which will cause the toolbar to take the style from the
gnome preferences.
* libstetic/ Updated.
2006-08-11 Lluis Sanchez Gual <>
* libstetic/editor/DateTimeEditor.cs:
* libstetic/editor/TimeSpanEditor.cs:
* libstetic/PropertyEditorCell.cs:
* libstetic/ Added editors for DateTime and TimeSpan.
2006-08-11 Lluis Sanchez Gual <>
* libsteticui/WidgetTreeCombo.cs: Don't show unselectable
widgets in the combo.
* libstetic/IProject.cs:
* libsteticui/Project.cs: Removed tooltips property. They are
now handlerd in a different way.
* libstetic/ObjectWrapper.cs:
* libstetic/wrapper/Container.cs:
* libstetic/wrapper/Frame.cs:
* libstetic/wrapper/Button.cs: Fixed some issues when reading
and writing buttons.
* libstetic/wrapper/Notebook.cs:
* libstetic/wrapper/MenuItem.cs:
* libstetic/wrapper/OptionMenu.cs:
* libstetic/wrapper/Expander.cs:
* libstetic/wrapper/CheckButton.cs:
* libstetic/wrapper/Object.cs: Track api changes.
* libstetic/wrapper/objects.xml: Added initialization property
for windows. Use Entry.IsEditable instead of Editable, which is
* libstetic/editor/Flags.cs: Fix warnings.
* libstetic/wrapper/Widget.cs: Generate code for displaying
* libstetic/GeneratorContext.cs:
* libstetic/PropertyDescriptor.cs: Support code generation of
DateTime and TimeSpan.
* libstetic/DND.cs: Fixed several issues with insert bars in
* libstetic/ Updated.
2006-08-01 Lluis Sanchez Gual <>
* libstetic/ItemGroup.cs: Use a hashtable to store the items.
* libstetic/wrapper/Button.cs:
* libstetic/wrapper/Object.cs:
* libstetic/wrapper/Table.cs:
* libstetic/ObjectWrapper.cs: Avoid firing events while the objects
are loading.
* libstetic/wrapper/Container.cs: Don't validate names while the object
is being loaded.
* libstetic/ItemGroupCollection.cs: Added helper method for getting
an item.
* libstetic/WidgetUtils.cs: Avoid using SelectSingleNode since it's very
slow. Use the ChildNodes property instead. Merged ReadProperties and
ReadSignals in a single ReadMembers method, which is more efficient.
2006-08-01 Lluis Sanchez Gual <>
* libsteticui/Clipboard.cs: When copying a widget, store it as
xml, so if the widget is deleted the clipboard will still
have the data. Fixes bug #78938.
* libstetic/PreviewBox.cs:
* libstetic/EmbedWindow.cs: Avoid a crash when metacity is not
installed. Fixes bug #78916.
* libstetic/wrapper/Container.cs: Properly read internal children
when using Glade format.
* libstetic/wrapper/RadioButton.cs: Fix read code for radio buttons.
Fixes bug #78909.
* libstetic/wrapper/Dialog.cs:
* libstetic/wrapper/ButtonBox.cs: Added special code generation case
when the button box is the action area of a dialog. In this case
widgets are added using dialog.AddActionWidget(). Fixes bug #78956.
* libstetic/editor/Accelerator.cs: Capture the key combination using
a modal dialog, to avoid messing with the container accelerators.
Fixes bug #78867.
2006-07-24 Lluis Sanchez Gual <>
* libstetic/EnumDescriptor.cs: Don't throw an exception if the
CLR enum has more members than the enum declared in objects.xml.
A new backward compatible version of a library may introduce new
members which Stetic is unaware of.
2006-07-24 Lluis Sanchez Gual <>
* libstetic/wrapper/Table.cs: Don't try to automatically set
the horizontal expansion property of widgets which expand
more than one column, since we may have a different expand
value for each column, and changing it for every column may
end up in an infinite loop when syncing the table. The
same for rows and vertical expansion.
2006-07-21 Alp Toker <>
* libsteticui/CodeGenerator.cs:
* libsteticui/PropertyTree.cs:
* libstetic/TypedPropertyDescriptor.cs:
* libstetic/WidgetUtils.cs: Trivial comment typofixes.
2006-07-04 Lluis Sanchez Gual <>
* libsteticui/WidgetActionBar.cs: Assign the label of the command
to the button.
* libstetic/PreviewBox.cs: Added property for getting the current
* libstetic/wrapper/Action.cs: Use IconSet.RenderIcon to render
action icons.
* libstetic/wrapper/Image.cs:
* libstetic/wrapper/Label.cs: Changed base wrapper to Misc.
* libstetic/wrapper/objects.xml: Use the new identifier editor
for the widget name. Added alignment commands for Label and
for table child.
* libstetic/wrapper/Table.cs: Implemented Fill/Expand commands.
* libstetic/editor/ImageSelector.cs: Use a default size of 16
for thumbnail icons.
* libstetic/editor/StockItem.cs: Render icons using the icon set,
not the theme.
* libstetic/WidgetUtils.cs: In ParseWidgetName, limit numeric suffix
to 4 digits.
* libstetic/ Added Identifier.cs and Misc.cs.
* libstetic/TypedClassDescriptor.cs: If a wrapper is inherited
from a base class, ignore the CreateInstance method since it
is going to create an instance of the base class.
2006-06-12 Lluis Sanchez Gual <>
* libstetic/ItemDescriptor.cs: Properly invoke method based checks
for item descriptors.
* libstetic/wrapper/Action.cs: Copy signals when cloning actions.
* libstetic/ErrorWidget.cs: Improve error message when generating code.
* libstetic/GeneratorContext.cs:
* libstetic/PropertyDescriptor.cs: Add support for string arrays.
* libstetic/wrapper/objects.xml:
* libstetic/wrapper/ComboBox.cs: Added property which when set generates
a text based combobox.
* libstetic/wrapper/Notebook.cs:
* libstetic/RadioGroupManager.cs: Fix bug when accessing to widget
variable names. Patch by Jasiu.
2006-06-12 Lluis Sanchez Gual <>
* libsteticui/PropertyTree.cs: Don't show empty item groups.
* libsteticui/WidgetActionBar.cs: Call the virtual AddWidgetCommands
only once per widget.
* libstetic/editor/ActionToolbar.cs: Remove debug code.
* libstetic/wrapper/Widget.cs: When deleting a widget unselect it if
it is the current selection. Fixes bugs #78620 and 78622.
* libstetic/wrapper/ColorButton.cs: Don't generate the Alpha property
if the value is -1 (not set).
* libstetic/wrapper/objects.xml:
* libstetic/wrapper/pixmaps/expander.png: Added icon for the expander
widget by ml.
2006-06-09 Lluis Sanchez Gual <>
* libstetic/CommandDescriptor.cs:
* libsteticui/WidgetActionBar.cs: Add support for icon based
commands and for toogle commands.
* libstetic/ItemDescriptor.cs: invisible-if and disable-if elements
now support calling a method to get the check value.
* libstetic/WidgetLibrary.cs: Assign the widget library to
class descriptors.
* libstetic/wrapper/Container.cs: Implemented IncBorder and DecBorder
* libstetic/wrapper/Box.cs: Implemented BoxExpand and BoxFill toggle
* libstetic/wrapper/objects.xml: Added IncBorder and DecBorder commands
to containers. Added BoxExpand and BoxFill to box child.
* libstetic/editor/Accelerator.cs: Fixed. Added button for clearing
the accelerator.
* libstetic/editor/ActionToolbar.cs:
* libstetic/editor/ActionMenuBar.cs: Make sure the menu has some height
when there are no items, so it can be easily selected.
* libstetic/editor/ActionToolItem.cs: Don't allow editing separators.
* libstetic/PropertyEditorCell.cs: Paint text, not markup.
* libstetic/ClassDescriptor.cs: Added property which returns the widget
library that implements the class descriptor.
* libstetic/AssemblyWidgetLibrary.cs: Implemented GetResource method.
2006-06-08 Lluis Sanchez Gual <>
* libstetic/wrapper/Box.cs: In GladeChildren return children
based on the order of their positions. Fixes bug #78160.
2006-05-26 Lluis Sanchez Gual <>
* libsteticui/Palette.cs: Don't show the toolitems section,
since it's not being used right now. Show a default icon
for actions which don't have an icon.
* libsteticui/PropertyTree.cs: If the property tree only
has one group, allways expand it.
* libsteticui/ Added resource.
* libsteticui/WidgetPropertyTree.cs: There is no need to delay
the tree filling when the selection is null.
* libstetic/PreviewBox.cs: Minor fixes.
* libstetic/ImageInfo.cs: Added some image scaling methods.
* libstetic/ProjectIconFactory.cs: Added RenderIcon method.
* libstetic/wrapper/Action.cs: Added Accelerator property.
Other minor fixes.
* libstetic/wrapper/Widget.cs: Notify changes in the local
action groups. Register the accel group of the generated
* libstetic/wrapper/objects.xml: Disabled the old toolbar
model. Use the action based toolbar instead.
* libstetic/wrapper/ActionTree.cs: Added Changed event.
* libstetic/editor/ActionMenuItem.cs: Use the new icon
selection menu.
* libstetic/editor/StockItem.cs: Implemented a new editor
which uses the new icon selector menu.
* libstetic/PropertyDescriptor.cs: Added support for
specifying a default value for a property in the xml file.
* libstetic/ Updated.
* wrapper/ActionToolbarWrapper.cs:
* editor/ActionToolbar.cs:
* editor/ActionToolItem.cs: New toolbar designer.
* editor/IconSelectorItem.cs:
* editor/IconSelectorMenu.cs:
* editor/IconSelectorMenuItem.cs:
* editor/ProjectIconSelectorItem.cs:
* editor/StockIconSelectorItem.cs: New menu for selecting icons.
* libstetic/wrapper/MenuBar.cs:
* libstetic/editor/ActionMenu.cs:
* libstetic/editor/ActionGroupEditor.cs:
* libstetic/editor/ActionMenuBar.cs:
* libstetic/wrapper/ActionGroup.cs: Several fixes.
* stetic/
* stetic/UIManager.cs:
* stetic/Stetic.cs: Added a toolbar to the UI.
2006-05-19 Lluis Sanchez Gual <>
* libsteticui/WidgetFactory.cs: Highlight the item on mouse over.
* libsteticui/ActionGroupToolbar.cs: Implemente a single group
mode, to be used when editing global action groups.
* libsteticui/CodeGenerator.cs: Generate code for actions and
icon factories.
* libsteticui/Palette.cs: Adjusted some margins. Update actions
when they change.
* libsteticui/ProjectView.cs: Clean the tree when no project
is selected.
* libsteticui/ Added UserInterface.cs.
* libsteticui/Project.cs: Added IconFactory property.
* libsteticui/SignalsEditor.cs: Added missing null check.
* libstetic/Metacity/ButtonLayout.cs:
* libsteticui/WidgetPropertyTree.cs: Minor fix.
* libstetic/IProject.cs: Added Modified and IconFactory properties.
* libstetic/PreviewBox.cs: Implemented UpdateObjectViewers.
* libstetic/ Added icon selector and icon factory editor.
* libstetic/RadioGroupManager.cs:
* libstetic/wrapper/MenuBar.cs:
* libstetic/wrapper/ActionTree.cs:
* libstetic/wrapper/ActionGroup.cs:
* libstetic/wrapper/Action.cs: Implemented code generation. Avoid name
duplication inside action groups.
* libstetic/wrapper/Container.cs: Moved method ParseWidgetName into
* libstetic/wrapper/Widget.cs: Added some methods for supporting code
action generation.
* libstetic/wrapper/ActionGroup.cs: Added memberName property.
* libstetic/editor/ImageSelector.cs:
* libstetic/editor/StockItem.cs:
* libstetic/GladeUtils.cs:
* libstetic/editor/TextEditorDialog.cs: Fix warning.
* libstetic/editor/ThemedIconList.cs: Factorized some code into the
new base class IconList.
* libstetic/editor/ActionMenuItem.cs: Added context menu. Added support
for separators. Use the new icon selector for selecting action items.
* libstetic/editor/SelectImageDialog.cs: Improved disabling of OK button when
nothing is selected.
* libstetic/editor/ActionGroupEditor.cs:
* libstetic/editor/ActionMenu.cs:
* libstetic/editor/ActionMenuBar.cs: Implemented some context menu commands.
* libstetic/GeneratorContext.cs: Support generating code for ActionGroups.
Make WidgetMap work for non-widget objects (e.g. Action).
* libstetic/WidgetUtils.cs: Moved from Container.cs.
* libstetic/ Updated. Added Mono.Unix reference.
* libstetic/editor/IconList.cs: Base class for two-column icon lists.
* libstetic/ProjectIconFactory.cs: Holds information about icons defined
in a project.
* libstetic/editor/ProjectIconList.cs: IconList subclass that shows
icons from a project icon factory.
* libstetic/editor/EditIconDialog.cs: Dialog for editing icons.
* libstetic/editor/StockIconList.cs: IconList subclass that shows
stock icons only.
* libstetic/editor/EditIconFactoryDialog.cs: Dialog for editing an
icon factory.
* libstetic/editor/SelectIconDialog.cs: Dialog for selecting an icon.
* libstetic/editor/TreeViewCellContainer.cs: Bridge widget to be used for
cell rederers with custom editors.
* libstetic/editor/CellRendererComboBox.cs: A combo cell renderer.
* stetic/Stetic.cs: Make sure Gtk is properly initialized before trying
to generate code.
* stetic/UIManager.cs: Added EditProjectIcons command.
2006-05-12 Lluis Sanchez Gual <>
* libsteticui/ActionGroupToolbar.cs: Initialize the action group
editor after binding it.
* libstetic/PreviewBox.cs: Call OnDesignerAttach when attaching
a widget for editing.
* libstetic/wrapper/Widget.cs:
* libstetic/ObjectWrapper.cs: Moved basic code generation methods
here from Widget.cs, since generic objects may also need to
support it (for example, Gtk.Action).
Added OnDesignerAttach, which is called when a widget is attached
to a designer.
* libstetic/wrapper/Container.cs: Implement OnDesignerAttach.
* libstetic/wrapper/Action.cs: Implemented CopyTo in ActionCollection.
* libstetic/wrapper/Box.cs: Use Add insted of PackStart to add a widget
from drag-drop. Looks like PackStart does not fire the ChildAdded
* libstetic/editor/ActionMenuItem.cs: Grab the keyboard focus after editing
is done.
* libstetic/editor/ActionMenuBar.cs: Show a dummy menu item when none is
defined, so the menubar has a proper height. Unselec any selected
item when the bar is unselected. Allow dropping actions from the
* libstetic/editor/ActionGroupEditor.cs: Sort action alphabetically.
* libstetic/editor/ActionMenu.cs: Destroy menu items when the menu
is disposed.
* libstetic/GeneratorContext.cs: In GenerateCreationCode, added the variable
for the new object to the statements collections after calling
GenerateObjectCreation, so statements needed for the object creation
are added before the declaration.
* libstetic/TypedClassDescriptor.cs: Lazily initialize the missingIcon
static variable.
* stetic/Stetic.cs: Show stetic help before standard gnome app help.
* libstetic/wrapper/ActionTree.cs:
* libstetic/wrapper/MenuBar.cs:
* libstetic/wrapper/ActionGroup.cs: Added code generation support.
* libstetic/wrapper/HScale.cs:
* libstetic/wrapper/Expander.cs:
* libstetic/wrapper/ToolButton.cs:
* libstetic/wrapper/VScrollbar.cs:
* libstetic/wrapper/ComboBoxEntry.cs:
* libstetic/wrapper/ComboBox.cs:
* libstetic/wrapper/HScrollbar.cs:
* libstetic/wrapper/VScale.cs: Renamed GenerateWidgetCreation to
a more generic GenerateObjectCreation.
* libstetic/wrapper/objects.xml: Defined some initialization properties.
2006-05-11 Lluis Sanchez Gual <>
* libstetic/wrapper/ActionMenuItem.cs:
* libstetic/wrapper/ActionMenu.cs: Moved to /editor
* libstetic/ Updated.
2006-05-11 Lluis Sanchez Gual <>
* libsteticui/Palette.cs: Show all action groups inside
an "Actions" section.
* libsteticui/ Updated.
* libsteticui/ActionGroupToolbar.cs: Toolbar for the ActionGroup
* libsteticui/Project.cs: Forwards events fired when changing action
* libsteticui/SignalsEditor.cs: Include the action name in generated
* libstetic/IDesignArea.cs: Added some methods for getting the
current selection.
* libstetic/PreviewBox.cs: Implemented the new IDesignArea methods.
* libstetic/wrapper/Action.cs: Implemented clone and copy methods.
* libstetic/wrapper/ActionMenuItem.cs: Many fixes.
* libstetic/wrapper/Widget.cs: Allow more than one local action group.
Forward signal change events from the action groups.
* libstetic/wrapper/ActionGroup.cs: Added several events.
* libstetic/wrapper/ActionMenu.cs: Implemented keyboard support.
* libstetic/wrapper/objects.xml: Added name property to gtk.Action.
* libstetic/wrapper/MenuBar.cs: Moved ActionMenuBar to its own file.
* libstetic/WidgetUtils.cs: Added common GetDesignArea method.
* libstetic/ Updated.
* libstetic/editor/ActionGroupEditor.cs: Implemented an editor for
action groups.
* stetic/Stetic.cs: Added some support for the new action group editor.
2006-05-05 Lluis Sanchez Gual <>
* libstetic/wrapper/objects.xml: Ignore the default for the
Position property of BoxChild. The position always needs to
be set, even if it's 0. Fixes bug #78307.
2006-05-03 Lluis Sanchez Gual <>
* libsteticui/Palette.cs: Added support for drag&drop between
action groups. Temporarily disabled action group support.
* libsteticui/Project.cs: Create a global action group by
* libstetic/IDesignArea.cs: Added MoveWidget method.
* libstetic/IProject.cs: Added ActionGroups property.
* libstetic/PreviewBox.cs: Update the preview window title when
the wrapped window title changes. Implemented IDesignArea.MoveWidget.
* libstetic/ObjectWrapper.cs: For Gtk.Container.ContainerChild objects,
store the object in the wrapper hashtable using a special container
objects which properly implements the GetHashCode and Equals methods.
This is needed since every call to the Gtk.Container indexer returns
a new instance of the container child.
* libstetic/wrapper/Action.cs: Implemented Read/Write methods. Added
some missing events. Improved ActionCollection.
* libstetic/wrapper/Container.cs: Fixed some issues with name conflict
checking. Checks can't be done in the ParentSet event, since when
it is fired the child is not yet shown as a child of the container.
Properly dispose container child wrappers.
* libstetic/wrapper/Widget.cs: Same as before. Implemented read/write
support for action groups, but it is disabled for now.
* libstetic/wrapper/Box.cs: In the ChildContentsChanged method, avoid
setting Expand and Fill properties if the values don't change.
This avoids firing some unneeded change events.
* libstetic/wrapper/ActionGroup.cs: Implemented.
* libstetic/wrapper/objects.xml: Added some 'min' values to properties.
* libstetic/wrapper/ActionTree.cs: Implemented read/write methods. Added
some events.
* libstetic/WidgetUtils.cs: Added support for reading/writing properties
of arbitrary objects, not only widgets.
* libstetic/wrapper/MenuBar.cs:
* libstetic/wrapper/ActionMenu.cs:
* libstetic/wrapper/ActionMenuItem.cs: Support editing of menu items in
a menu bar. Bug fixes and improvements.
2006-04-28 Lluis Sanchez Gual <>
* libsteticui/WidgetFactory.cs: Added PaletteItemFactory class,
as a base class for palette factories. Added InstanceWidgetFactory,
to support Action palette items.
* libsteticui/SignalsEditor.cs:
* libsteticui/CodeGenerator.cs: Track api changes in signal handling.
* libsteticui/Palette.cs: Add action groups to the palette.
* libsteticui/PropertyTree.cs: After editing a property,
notify the change to the wrapper.
* libsteticui/Project.cs: Added action group collection.
Track api changes in signal handling.
* libsteticui/WidgetPropertyTree.cs: Allow showing properties of any
kind of wrapper, not only widgets.
* libstetic/PreviewBox.cs: Implemented IDesignArea. Implemented a new
way of drawing the widget selection box.
* libstetic/wrapper/Widget.cs:
* libstetic/ObjectWrapper.cs: Moved signal properties and the notify
event from Widget to ObjectWrapper.
* libstetic/wrapper/SignalCollection.cs:
* libstetic/wrapper/Signal.cs:
* libstetic/wrapper/SignalEventHandler.cs:
* libstetic/wrapper/SignalChangedEventHandler.cs:
* libstetic/wrapper/Container.cs: Use the new selection box system,
based in IDesignArea.
* libstetic/wrapper/objects.xml: Added Action class.
* libstetic/DND.cs: Some minor changes to allow dragging widgets which
don't have a wrapper.
* libstetic/ Updated.
* libstetic/IDesignArea.cs: New class for providing some designer
services to widget wrappers.
* libstetic/ObjectWrapperEventHandler.cs: New handler for
ObjectWrapper events.
* libstetic/wrapper/Action.cs: Wrapper for Gtk.Action.
* libstetic/wrapper/ActionMenu.cs: Widget for editing a Menu.
* libstetic/wrapper/ActionMenuItem.cs: An action menu item editor.
* libstetic/wrapper/ActionGroup.cs: Wrapper for Gtk.ActionGruoup.
* libstetic/wrapper/ActionTree.cs: An action tree structure (menu or
* libstetic/wrapper/MenuBar.cs: Wrapper for Gtk.MenuBar.
2006-04-24 Lluis Sanchez Gual <>
* libstetic/PreviewBox.cs: When handling the case of metacity
not being installed, don't specifically check for
a DllNotFoundException, since the exception may be wrapped
in another exception.
* libstetic/EmbedWindow.cs: Don't crash if the metacity
libs can't be found.
* libstetic/wrapper/Table.cs: Fix hang when loading project
which contains a table (bug #78167).
2006-04-21 Lluis Sanchez Gual <>
* libstetic/wrapper/VScale.cs:
* libstetic/wrapper/HScrollbar.cs:
* libstetic/wrapper/HScale.cs:
* libstetic/wrapper/VScrollbar.cs: Generate valid construction
2006-04-18 Lluis Sanchez Gual <>
* libstetic/wrapper/objects.xml:
* libstetic/wrapper/Notebook.cs: Disable "Insert Before" and
"Delete Page" commands when there are no pages in the notebook.
* stetic/Stetic.cs: Fix crash when deleting a widget.
2006-04-18 Lluis Sanchez Gual <>
* libstetic/wrapper/Widget.cs:
* libstetic/wrapper/Container.cs: When adding a widget to a container,
make sure the identifiers are not duplicated.
* libstetic/wrapper/Frame.cs: Fixed code generation for
the label widget.
* libstetic/wrapper/Expander.cs: Fix code generation. Fixes bug #78090.
2006-04-10 Lluis Sanchez Gual <>
* libstetic/editor/Boolean.cs: Fix nullref in some themes.
2006-04-03 Lluis Sanchez Gual <>
* libsteticui/WidgetTreeCombo.cs: Don't show children
for widgets which don't allow children.
* libsteticui/ProjectView.cs: Allow deleting top level
widgets from the project view.
* libsteticui/ContextMenu.cs: Don't allow deleting or
cutting top level widgets.
* libstetic/CustomWidget.cs: Use EventBox as base class.
A gdk window is required to make child widgets selectable.
* libstetic/wrapper/Container.cs: Minor change in focus
handling. Don't allow deleting the only placeholder of a
top level container.
* libstetic/wrapper/Widget.cs: Avoid handling the FocusIn
event fired by an internal Select call.
* libstetic/wrapper/objects.xml: Removed some read-only
* libstetic/TypedPropertyDescriptor.cs: Provide defaults only
for primitive type properties.
* stetic/Stetic.cs: When deleting a top level widget, hide the
corresponding tab.
2006-03-31 Lluis Sanchez Gual <>
* libsteticui/PropertyTree.cs: Changed the way instance
information is stored. The value is now stored in
the tree store instead of a hashtable.
* libstetic/wrapper/Table.cs: Added a flag to avoid
recursively notifying changes in properties.
2006-03-29 Lluis Sanchez Gual <>
* libstetic/ImageInfo.cs: Don't crash if an icon is not
found in the current theme.
2006-03-22 Lluis Sanchez Gual <>
* libsteticui/WidgetTreeCombo.cs: A combo that shows the
tree of widgets of a window.
* libsteticui/WidgetPropertyTree.cs:
* libsteticui/PropertyTree.cs: A TreeView based property
* libsteticui/WidgetActionBar.cs: A toolbar that shows
the tree of widgets on a combo and some commands
available for the selected widget.
* libsteticui/Project.cs: Replaced the Selected event by
SelectionChanged, which uses a standard signature
for event handlers.
* libsteticui/PropertyGrid.cs:
Track changes in the widget selected event.
* libsteticui/PropertyEditor.cs: Moved most of code to
* libsteticui/Palette.cs: Show windows before widgets, since
windows are the first thing an user is going to create.
* libsteticui/ProjectView.cs: Track changes in the widget
selected event. Added WidgetActivated event.
* libsteticui/SignalsEditor.cs: Make columns resizable.
Track changes in the widget selected event.
* libsteticui/ContextMenu.cs: Show the Delete command for
placeholders. Delete placeholders through their container.
* libsteticui/ Updated.
* libstetic/PropertyEditorCell.cs: New file. Implements the base
class for property editors that need custom rendering.
* libstetic/IProject.cs: Added SelectionChanged event.
* libstetic/ItemDescriptor.cs: HasDependencies now returns true
if there are visibility dependencies, not only sensitivity.
* libstetic/ Added text editor dialog.
* libstetic/wrapper/Button.cs: Added null check.
* libstetic/wrapper/Container.cs: When the last placeholder of
a container is delete, delete the container.
* libstetic/wrapper/Paned.cs: Don't allow deleting placeholders.
* libstetic/wrapper/Box.cs: Removed AllowPlaceholders override,
now will always return true. Why was this override needed?
* libstetic/wrapper/Window.cs: Store the window icon in an ImageInfo
* libstetic/wrapper/objects.xml: Fixed some editor references.
Removed icons that don't exist. Moved scrollbar and separator
widgets to the "widget" palette category.
* libstetic/wrapper/Table.cs: Make sure placeholders can only be
deleted using the delete row/column commands.
* libstetic/editor/Color.cs:
* libstetic/editor/Boolean.cs:
* libstetic/editor/ImageSelector.cs:
* libstetic/editor/Enumeration.cs:
* libstetic/editor/Flags.cs:
* libstetic/editor/StockItem.cs:
* libstetic/editor/IntRange.cs:
* libstetic/editor/ResponseId.cs: Implemented as a PropertyEditorCell,
since it needs custom rendering.
* libstetic/editor/Text.cs: Implemented as a subclass of TextEditor.
* libstetic/editor/Image.cs: Make the editor visible.
* libstetic/editor/StringArray.cs: New implementation based on the
TextEditor dialog.
* libstetic/editor/TextEditorDialog.cs:
* libstetic/editor/TextEditor.cs: A new editor for strings.
* libstetic/DND.cs:
* libstetic/WidgetUtils.cs: Added some null checks.
* libstetic/TypedClassDescriptor.cs: Properly handle errors while
loading widget icons.
* libstetic/ Updated.
* stetic/
* stetic/UIManager.cs:
* stetic/Stetic.cs: Implemented a new interface model. Design windows are
now embedded, instead of floating around. Using the new property tree.
2006-03-14 Lluis Sanchez Gual <>
* libsteticui/CodeGenerator.cs: Moved statements collection into
the GeneratorContext class.
* libsteticui/PropertyEditor.cs: Register new image editor.
* libstetic/IProject.cs:
* libsteticui/Project.cs: Added property for IResourceProvider.
* libstetic/ObjectWrapper.cs: Generate an error widget if something
fails while loading the project.
* libstetic/Registry.cs: In LookupItem, throw an exception if the
item can't be found.
* libstetic/wrapper/Button.cs: Use the new ImageInfo class for
storing the pixbuf.
* libstetic/wrapper/Label.cs: Generate specific code for setting
the MnemonicWidget property.
* libstetic/wrapper/TextView.cs: Don't allow placeholders in a
text view. Generate code for setting the text of the buffer.
* libstetic/wrapper/Widget.cs: The Visible property is the last
one to be set, in this way nothing is shown until everything
is built.
* libstetic/wrapper/Toolbar.cs: Put placeholders inside a ToolItem.
* libstetic/wrapper/Image.cs: Simplified the code by using an ImageInfo
object for storing the pixbuf.
* libstetic/wrapper/ComboBox.cs:
* libstetic/wrapper/ComboBoxEntry.cs: If some items have been
added at design time, generate a text combo box.
* libstetic/wrapper/RadioToolButton.cs:
* libstetic/wrapper/RadioButton.cs:
* libstetic/wrapper/Window.cs:
* libstetic/wrapper/Notebook.cs:
* libstetic/wrapper/RadioMenuItem.cs:
* libstetic/wrapper/Bin.cs:
* libstetic/wrapper/Container.cs: Moved statements collection into
the GeneratorContext class.
* libstetic/wrapper/objects.xml: Added some min values. Removed the
Bin control from the palette. Track changes in Image and Button
image properties.
* libstetic/wrapper/CheckButton.cs: In the generated code, remove
the default label child widget if not needed.
* libstetic/wrapper/ToolButton.cs: Simplified the code by using a n
ImageInfo object for storing the pixbuf.
* libstetic/editor/ThemedIcon.cs: Fixed some compilation problems.
Moved ThemedIconList to its own file.
* libstetic/PropertyDescriptor.cs: Added support for type converters.
* libstetic/TypedPropertyDescriptor.cs: Implemented RuntimePropertyType.
* libstetic/GeneratorContext.cs: Added the statements collection that
will contain all generated code. Added EndGeneration, which
runs all post build generation methods.
* libstetic/ErrorWidget.cs: Added support for reporting load errors.
* libstetic/editor/FlagsSelectorDialog.cs:
* libstetic/editor/Flags.cs: When there are more than 5 flag values,
use a dialog to select them, since the checkbox list takes too
much space.
* libstetic/ Updated.
2006-03-03 Lluis Sanchez Gual <>
* libstetic/WidgetLibrary.cs: Made Dispose virtual.
* libstetic/wrapper/objects.xml: Declared initializer properties.
* libstetic/wrapper/Container.cs: Don't generate code for building
children if children are not allowed.
* libstetic/wrapper/Widget.cs: Support generating code for untyped
class descriptors.
* libstetic/TypedClassDescriptor.cs: When looking for a static
CreateInstance method, look for an overload that takes
a ClassDescriptor as parameter.
* libstetic/wrapper/Bin.cs: In CreateInstance, return the
CustomWidget instance only if the class is a Gtk.Bin.
Don't do it for subclasses of Bin.
* libstetic/wrapper/RadioButton.cs:
* libstetic/wrapper/RadioMenuItem.cs:
* libstetic/wrapper/RadioToolButton.cs: Track api changes.
2006-03-03 Lluis Sanchez Gual <>
* libsteticui/SignalsEditor.cs: Add the name of the widget
to the handler name, to avoid collisions when mapping
the same event from different widgets.
* libstetic/wrapper/Notebook.cs: Added some specific generation
2006-03-02 Lluis Sanchez Gual <>
* libsteticui/CodeGenerator.cs: Generated class is not internal.
Generate a new Build overload, which takes a type instead of
an id as parameter. Other minor fixes.
* libsteticui/Palette.cs: Added methods for showing/hiding groups.
Added property for setting the widget libraries to show in
the palette.
* libsteticui/Clipboard.cs: Use the native format to make copies
of widgets.
* libsteticui/ProjectView.cs: Redraw the tree when widget names
* libsteticui/Project.cs: Added method for getting a node.
* libstetic/PreviewBox.cs: Added some null checks.
* libstetic/wrapper/RadioToolButton.cs:
* libstetic/wrapper/RadioButton.cs:
* libstetic/wrapper/RadioMenuItem.cs:
* libstetic/RadioGroupManager.cs: Added support for code generation.
* libstetic/Registry.cs: Added getter for the core widget library.
* libstetic/wrapper/Container.cs: Generate code only for properties
available at run time.
* libstetic/wrapper/Widget.cs: Same as previous. Also use the wrapped
type name specified by the class descriptor, instead of using the
real type of the object, since it may be a design-time only object.
* libstetic/wrapper/Object.cs: Translate gtk property names to managed
names when firing the notify event.
* libstetic/wrapper/Custom.cs: Don't use GdkWindow.SetBackPixmap since
it seems to fail for some widget sizes.
* libstetic/wrapper/objects.xml: Specified a custom wrapper for Bin.
Added references to Gtk.Widget properties and signals.
* libstetic/PropertyDescriptor.cs: Added some methods for handling
property values at run-time.
* libstetic/TypedPropertyDescriptor.cs: Added support for run-time
* libstetic/GeneratorContext.cs: Added CodeNamespace property.
* libstetic/WidgetUtils.cs: Use XmlElement instead of XmlDocument
for exporting/importing widgets (its more generic). Implemented
Copy/Paste methods based on native format serialization.
Added some BuildWidget methods (which are not used right now).
* libstetic/ClassDescriptor.cs: Properly initialize the name of the
* libstetic/TypedClassDescriptor.cs: Moved name initialization to
base class.
* libstetic/ Updated.
2006-02-24 Lluis Sanchez Gual <>
* libsteticui/Glade.cs: Use the new api for reading/writing.
* libsteticui/Palette.cs: Update the palette when the
registry changes.
* libsteticui/ProjectView.cs: Update the project tree when
the project has been reloaded (due for example to a
registry change).
* libsteticui/ Updated.
* libsteticui/Project.cs: Make it aware of changes in the
registry. When the registry changes, reload the project.
Added Read/Write and Load/Save methods, based on the
native format. Added ProjectReloaded event, which is fired
after the project has been reloaded due to a registry change.
Other minor changes.
* libsteticui/SignalsEditor.cs: Refresh when the project is
reloaded. Addded SignalActivated, which is fired when double-
clicking an event.
* libsteticui/ContextMenu.cs: Get class descriptors from wrappers,
instead of looking up in the registry. Track some other api
* libsteticui/PropertyGrid.cs: Refresh when the project is
reloaded. Track some api changes.
* libstetic/ParamSpec.cs: Commented out some methods and
properties which depend on P/Invoke calls.
* libstetic/ItemGroup.cs: Delegate item creation to the
owner class.
* libstetic/wrapper/Button.cs:
* libstetic/wrapper/Container.cs: Replaced glade export/import
methods by Read/Write methods. Implemented code generation.
* libstetic/wrapper/Widget.cs: Select the widget when it gets
the focus. Changed InternalChildId by InternalChildProperty,
which has more useful information. Made Visible a wrapper
property for all widgets. Replaced glade export/import
methods by Read/Write methods. Implemented code generation.
* libstetic/wrapper/Window.cs: Implemented code generation.
* libstetic/wrapper/ComboBox.cs: Removed unneeded override.
* libstetic/wrapper/objects.xml: Added some init-properties
and wrapper attributes.
* libstetic/wrapper/Table.cs: Fixed bug when setting column
* libstetic/wrapper/Dialog.cs: Track api changes. Don't throw
the buttons changed event while reading from xml.
* libstetic/wrapper/RadioMenuItem.cs:
* libstetic/wrapper/ImageMenuItem.cs:
* libstetic/wrapper/Notebook.cs:
* libstetic/wrapper/MenuItem.cs:
* libstetic/wrapper/ButtonBox.cs:
* libstetic/wrapper/Box.cs:
* libstetic/wrapper/Expander.cs:
* libstetic/wrapper/CheckButton.cs:
* libstetic/wrapper/ToolButton.cs:
* libstetic/wrapper/Frame.cs:
* libstetic/wrapper/RadioButton.cs:
* libstetic/wrapper/OptionMenu.cs:
* libstetic/editor/ResponseId.cs:
* libstetic/editor/Enumeration.cs:
* libstetic/editor/GroupPicker.cs:
* libstetic/editor/Flags.cs:
* libstetic/ItemDescriptor.cs:
* libstetic/wrapper/RadioToolButton.cs: Track api changes.
* libstetic/SignalDescriptor.cs: Moved all code that depends
on Type and Reflection to TypedSignalDescriptor. Added
ParameterDescriptor, which replaces ParameterInfo.
* libstetic/CommandDescriptor.cs: Made several changes to avoid
ClassDescriptor.WrapperType, which has been removed. Instead
of getting the method to call from the wrapped type, it gets
it from the type of the object when the command is invoked.
* libstetic/editor/Char.cs: Fix worng type check.
* libstetic/editor/Accelerator.cs: Removed glue P/Invokes.
* libstetic/Placeholder.cs: Looks loke GdkWindow.SetBackPixmap
doesn't work very well. Draw filled rectangle instead.
* libstetic/HandleWindow.cs: If the window is embedded in a
preview box, use the gdk window of that box, which has more room
for drawing the handles.
* libstetic/PropertyDescriptor.cs: Moved all code that depends
on Type and Reflection to TypedPropertyDescriptor.
Added StringToValue and ValueToString methods for parsing and
converting values to string.
* libstetic/GladeUtils.cs: Track api changes. Removed dependencies
to some ParamSpec properties that have been removed. The most
complex one to remove is the type of the glade property. Now it
is taken from the type of the corresponding class property.
* libstetic/EnumDescriptor.cs: Use the registry to lookup the type
of the enum. The registry will look in all available libraries.
* libstetic/ClassDescriptor.cs: Moved all code that depends
on Type and Reflection to TypedClassDescriptor.
* libstetic/ Updated.
* libstetic/ObjectWrapper.cs: Replaced glade export/import
methods by Read/Write methods with support for native format.
Added ClassDescriptor property. There is no need to lookup
for classes in the registry since it can be accessed most of
the time from wrappers.
* libstetic/Registry.cs: Added support for external widget
* ErrorWidget.cs:
* EmbedWindow.cs:
* Shadow.cs:
* TypedClassDescriptor.cs:
* TypedPropertyDescriptor.cs:
* TypedSignalDescriptor.cs:
* WidgetLibrary.cs:
* Metacity/*:
* wrapper/Entry.cs:
* WidgetUtils.cs:
* GeneratorContext.cs:
* PreviewBox.cs:
* AssemblyWidgetLibrary.cs:
* WidgetLibrary.cs: New files.
* Removed glue directory from the build.
* stetic/Stetic.cs: Added support for code generation from
the command line.
* stetic/ Added debug option.
* stetic/ Updated.
* stetic/Glade.cs: Moved to libsteticui.
* stetic/UIManager.cs: Added Load and Save commands.
2006-02-09 Lluis Sanchez Gual <>
* Add a reference to the new libsteticui dll.
*, Add libsteticui dir.
* stetic/WidgetFactory.cs:
* stetic/Grid.cs:
* stetic/missing.png:
* stetic/PropertyGrid.cs:
* stetic/PropertyEditor.cs:
* stetic/Palette.cs:
* stetic/Clipboard.cs:
* stetic/ProjectView.cs:
* stetic/
* stetic/Project.cs:
* stetic/SignalsEditor.cs:
* stetic/ContextMenu.cs:
Moved files to libsteticui.
2006-02-07 Lluis Sanchez Gual <>
* libstetic/ItemGroup.cs: Converted to class. Added support for
Signal items.
* libstetic/wrapper/Container.cs: Added properties for storing
the width and height of the container (at design time).
* libstetic/wrapper/Widget.cs: Added support for signals.
Added some new events: NameChanged, WidgetChanged, SignalAdded,
SignalRemoved, SignalChanged.
* libstetic/wrapper/Window.cs: Don't show the window when it's
selected. That's something that the hosting application has to
decide. The selection change event in Project can be used for this.
* libstetic/wrapper/objects.xml: Added signals.
* libstetic/editor/ResponseId.cs:
* libstetic/editor/Translatable.cs:
* libstetic/editor/Char.cs:
* libstetic/editor/Color.cs:
* libstetic/editor/ThemedIcon.cs:
* libstetic/editor/Boolean.cs:
* libstetic/editor/Image.cs:
* libstetic/editor/FloatRange.cs:
* libstetic/editor/Text.cs:
* libstetic/editor/Accelerator.cs:
* libstetic/editor/Enumeration.cs:
* libstetic/editor/GroupPicker.cs:
* libstetic/editor/OptIntRange.cs:
* libstetic/editor/Flags.cs:
* libstetic/editor/StringArray.cs:
* libstetic/editor/String.cs:
* libstetic/editor/IntRange.cs:
Implement the new IPropertyEditor interface.
* libstetic/HandleWindow.cs: Use a wider focus rectangle.
Get the correct top level window when it's embedded in another window.
* libstetic/GladeUtils.cs: Added helper methods for exporting and
importing widgets. Read/Write signal information.
* libstetic/ClassDescriptor.cs: Added support for signals.
* stetic/
* libstetic/ Updated.
* libstetic/Registry.cs: Added some helper methods for locating
* Set version to 0.1.0. Added .pc file.
* stetic/WidgetFactory.cs: Don't show the window when it's
created. The hosting app can do it by subscribing the
Project.WidgetAdded event.
* stetic/Glade.cs: Top level widgets don't need to be windows,
they can be containers.
* stetic/PropertyGrid.cs: Some big changes. This widget is not a Grid
anymore, but a VBox of grids. There is a grid for every ItemGroup, and
they are reused for all widgets that share the same ItemGroup. The
property grid is now much faster.
* stetic/Stetic.cs: Added the signals editor. Handle some events
previously handled in the widget code, but which I moved here to
make the code more generic.
* libstetic/IPropertyEditor.cs: New interface to be implemented
by all property editors.
* stetic/PropertyEditor.cs: Replaced all code that relied on reflection
to create and initialize property editors. All this is now done through
the new IPropertyEditor interface. Now it is also possible to reuse
the same PropertyEditor for different objects that share the same
* stetic/Palette.cs:
* stetic/ProjectView.cs: Added support for changing the project to
which those widgets are bound.
* stetic/ Added the signals editor.
* stetic/Project.cs: Added several events which are needed to
integrate Stetic in an IDE.
* Added.
* libstetic/SignalDescriptor.cs: New descriptor for signals.
* libstetic/wrapper/WidgetEventHandler.cs:
* libstetic/wrapper/WidgetNameChangedHandler.cs:
* libstetic/wrapper/SignalEventHandler.cs:
* libstetic/wrapper/SignalChangedEventHandler.cs
* libstetic/wrapper/SignalCollection.cs:
* libstetic/wrapper/Signal.cs: New class. Holds information
about signal handlers bound to a widgets.
* libstetic/ItemGroupCollection.cs: New collection class.
* stetic/SignalsEditor.cs: The new signals editor.
2005-09-27 Dan Winship <>
* libstetic/HandleWindow.cs (HandleEvent): hack around bgo 316871
(shaped windows block update events in gtk+ 2.8.0 - 2.8.3).
2005-09-26 Dan Winship <>
* libstetic/wrapper/objects.xml: bring back ThemedIcon images and
buttons. Add <itemgroup ref="Gtk.Widget"> to a few classes that
were missing it.
* libstetic/editor/ThemedIcon.cs: Fix to work under Gtk# 2.4
* libstetic/wrapper/Button.cs: bring back ThemedIcon buttons
* libstetic/wrapper/Image.cs: bring back ThemedIcon images.
* libstetic/wrapper/Frame.cs: don't crash when importing a frame
with no label widget. If the LabelWidget changes, create a new
wrapper for it.
* libstetic/wrapper/Container.cs (GladeImport): don't crash when
importing a placeholder into a !AllowPlacerholders container.
2005-09-26 Dan Winship <>
* libstetic/wrapper/Dialog.cs (Buttons): make this a number rather
than having an enum of standard button choices; the HIG prefers
stronger labels than "OK"/"Yes", so we shouldn't be making it
easier to use bad labels than good ones.
(HelpButton): reorder the help button to be the first child so
that it won't ever get deleted when you decrement Buttons
(ButtonsChanged): keep the Buttons and HelpButton properties in
sync if the user manipulates the buttonbox contents by hand
* libstetic/wrapper/Button.cs (StockId): if the button's ReponseId
matches its old StockId (or is unset), update it to match it's new
(IsDialogButton): replaces HasResponseId and is now settable
rather than being figured out automatically. Also, set
button.CanDefault when turning on IsDialogButton.
(ResponseIdForStockId): maps Gtk.Stock values to Gtk.ResponseType
* libstetic/wrapper/ButtonBox.cs (NewButton): if the buttonbox is
a dialog's action_area, set IsDialogButton on new child buttons.
(AllowPlaceholders): false
(InsertBefore, InsertAfter): Reimplement using Secondary/non-
Secondary rather than PackType.
(ButtonBoxChild): add InDialog property
* libstetic/wrapper/Container.cs (ContextChildProps): for use in
context-menu ops; gets the child properties corresponding to the
ancestor of the widget that is a child of the container.
* libstetic/wrapper/Box.cs (AllowPlaceholders): only return false
if InternalChildId is unset. (Eg, we definitely want to allow
placeholders in a dialog box's internal vbox).
(InsertBefore, InsertAfter): use Container.ContextChildProps so
that this works regardless of what descendant widget was clicked
* libstetic/wrapper/objects.xml (Gtk.ButtonBox): Change the
command labels to "Insert Button Before" and "Insert Button
(Gtk.ButtonBox+ButtonBoxChild): Remove PackType, since the
interaction of PackType and Secondary is unnecessarily annoying.
Also add a new internal InDialog property and hide Secondary if
that's true (since we handle Help buttons specially and nothing
else should be secondary).
(Gtk.Button): s/HasResponseId/IsDialogButton/
(Gtk.Dialog): change the description of Buttons since it's now a
number, and give it a minimum value of "1".
(Gtk.ResponseType): add labels/descriptions for this enum
(Stetic.Wrapper.Dialog+StandardButtons): and kill this one
* libstetic/editor/ResponseId.cs: update this to use
2005-09-22 Dan Winship <>
* libstetic/ClassDescriptor.cs: Handle <contextmenu ref="..." />
* libstetic/DND.cs (Cancel): fix a crash
* libstetic/Registry.cs (LookupContextMenu): look up a context
menu by class name.
(NewInstance): Look up a class and invoke NewInstance on it
* libstetic/wrapper/ButtonBox.cs: Wrapper for ButtonBox, that
automatically fills in dummy buttons as needed.
* libstetic/wrapper/objects.xml (Gtk.ButtonBox): use the new
ButtonBox wrapper. Add a "Size" property and a context menu.
* libstetic/wrapper/Container.cs (AllowPlaceholders): new virtual
property saying whether or not to allow arbitrary placeholders in
the container.
(Wrap, GladeImport, Delete): Don't add placeholders if
(DragEnd): Remove the dragSource placeholder after a successful
drag if !AllowPlaceholders
* libstetic/wrapper/Box.cs (AllowPlaceholders): false
(InsertBefore, InsertAfter): If invoked on the box directly
(rather than via the submenu from one of its children), insert
before the first / after the last child.
* libstetic/wrapper/Button.cs: Remove CreateInstance method;
default to text-only buttons like Glade does.
* libstetic/wrapper/Dialog.cs (AddButton): Use
* libstetic/wrapper/Notebook.cs (InsertPage): Use
* stetic/ContextMenu.cs: Fix up for bxc 75689 again, since it was
still broken before.
2005-09-20 Dan Winship <>
* libstetic/EnumDescriptor.cs: New descriptor class for English
(and later localized) enum value names and descriptions.
* libstetic/Registry.cs (Registry): Create EnumDescriptors before
(LookupEnum): return EnumDescriptors.
* libstetic/PropertyDescriptor.cs: throw an exception if an
enum-valued property has no EnumDescriptor in the registry.
* libstetic/editor/Enumeration.cs: simplify using EnumDescriptor.
Also set the combobox's tooltip to the description of the selected
enum value.
* libstetic/editor/Flags.cs: editor for flags values (vbox full of
checkbuttons, with tooltips).
* libstetic/wrapper/Widget.cs (Events): proxy this property, since
it can't be changed after the widget is realized.
* libstetic/wrapper/objects.xml: add <enum> nodes for all enum
types we use.
* stetic/PropertyEditor.cs (PropertyEditor): Use the Flags editor
for flags-valued enums
2005-09-16 Dan Winship <>
* libstetic/wrapper/Container.cs (ReplaceChild):
EmitContentsChanged() at the end, to fix a bug with the
Project tree being out of sync.
* bump gtk-sharp dependency back up to 2.3.91. There
are too many post-1.9.5 fixes we need.
* libstetic/DND.cs:
* libstetic/HandleWindow.cs:
* libstetic/editor/Accelerator.cs:
* libstetic/editor/Translatable.cs: Revert 1.9.5 reversions
2005-09-15 Dan Winship <>
* libstetic/wrapper/Label.cs: remove the custom ctor
* libstetic/wrapper/Notebook.cs (InsertPage): use the Gtk.Label
ClassDescriptor's NewInstace to create labels, so they end up
2005-09-14 Dan Winship <>
* drop gtk# dependency down to 1.9.5
* libstetic/ (libstetic_dll_sources): remove
editor/ThemedIcon.cs and wrapper/AboutDialog.cs
* libstetic/DND.cs:
* libstetic/HandleWindow.cs: use gtk# 1.9.5-compatible
Gdk.WindowAttr fields
* libstetic/ItemGroup.cs (ItemGroup): deal with comment nodes in
* libstetic/editor/GroupPicker.cs: comment out use of
* libstetic/editor/Translatable.cs (ButtonPressed): use gtk#
1.9.5-compatible Gtk.Menu.Popup call.
* libstetic/wrapper/objects.xml: comment out all 2.6 widgets and
* libstetic/wrapper/Image.cs: comment out "themed icon" support
* libstetic/wrapper/Button.cs: comment out "themed icon" buttons
and the use of Button.Image
* stetic/UIManager.cs: Comment out Gtk.AboutDialog usage, use
Gnome.About instead.
* stetic/Clipboard.cs: Comment out support for plaintext cut+paste.
* stetic/Stetic.cs: Comment out Gtk.AboutDialog-related stuff.
2005-08-18 Dan Winship <>
* libstetic/Tooltips.cs: Hashtable/Gtk.Tooltips mix. (Gtk.Tooltips
is write-only, so we can't use it by itself.)
* libstetic/IProject.cs (Tooltips): new tooltips field
* stetic/Project.cs (Tooltips): implement
* libstetic/wrapper/objects.xml (Gtk.Widget): add Tooltip
* libstetic/wrapper/Widget.cs (Tooltip): implement, using
2005-08-17 Dan Winship <>
* libstetic/wrapper/objects.xml (Expander): Remove "Label",
"UseMarkup", and "UseUnderline" properties; we'll treat the label
as a child widget now, like Glade does. Also fix palette-category
to be "container".
(Frame): Remove the Label property, as with Expander. Also remove
the redundant and deprecated "Shadow" property.
(Notebook): Remove some deprecated properties
* libstetic/wrapper/Expander.cs (Wrap): create an ObjectWrapper
for the expander's LabelWidget
(ReplaceChild): deal with LabelWidget
* libstetic/wrapper/Frame.cs: Likewise
* libstetic/wrapper/Notebook.cs (Wrap): remove the dummy page that
will have been added by Container.Wrap.
(Select): don't crash if the passed-in wrapper is null
2005-08-04 Dan Winship <>
Support cut+paste of widgets, including interprocess cut+paste and
drag+drop. (For some reason, it is very slow when going
* libstetic/GladeUtils.cs (ApplicationXGladeAtom): Gdk.Atom for
glade selections.
(XslImportTransform, XslExportTransform): do the import/export xsl
(Copy): copy a glade representation of a widget into a
Gtk.SelectionData (in the same format that glade uses for its own
internal clipboard).
(Paste): generate a widget from a glade representation in a
* libstetic/DND.cs (targetList): add application/x-glade to the
supported target types.
(Drag): connect to the source's DragDataGet signal
(Drop): if asked to drop an out-of-proc widget, call
Gtk.Drag.GetData and return null.
(DragDataGet): Respond by calling GladeUtils.Copy
(FaultDragDrop, FaultDragDataReceived): update to be able to deal
with receiving an out-of-proc widget
* libstetic/ObjectWrapper.cs (Project): new public property to get
the wrapper's Project
* libstetic/wrapper/Container.cs (GladeExport): create
<placeholder> elements as appropriate.
(CreatePlaceholder): connect to DragDataReceived.
(PlaceholderDragDataReceived): Paste the received widget data into
(GladeChildren): return AllChildren, not RealChildren, because we
want to include placeholders.
(ReplaceChild): make this public
* libstetic/wrapper/Button.cs (UseUnderline): wrap this; we can't
set it directly on the button when we have a special icon set.
(GladeImport): Remove a useless special case.
(GladeExport): Set the "label" property when the button has a
stock id.
(GladeChildren): return base.GladeChildren, not base.RealChildren.
* libstetic/wrapper/ScrolledWindow.cs (GladeChildren): don't need
to override any more.
* libstetic/wrapper/objects.xml (Gtk.Button): add UseStock as an
internal property.
(Gtk.ColorButton): Remove the "Color" property, since we have no
way to serialize it.
(Gtk.ColorSelection): Likewise for CurrentColor here.
* stetic/Clipboard.cs: new static class with some cut/paste helper
* stetic/ContextMenu.cs (DoCut, DoCopy, DoPaste, DoDelete): update
to use Clipboard
* stetic/Glade.cs: use GladeUtils.XslImportTransform and
* stetic/Project.cs (Selection): don't crash when clearing the
* stetic/UIManager.cs (Cut, Copy, Paste): Implement these for
widgets as well as text.
2005-08-02 Dan Winship <>
* libstetic/GladeUtils.cs (ParseEnum, ParseFlags, PropToString):
use Enum rather than obsolete EnumWrapper
* libstetic/editor/Translatable.cs (ButtonPressed): Use
non-obsolete Gtk.Menu.Popup().
* libstetic/wrapper/objects.xml: add "Stock" internal property to
Image so that stock images load correctly again. Fix
Gtk.Notebook's InsertBefore and InsertAfter commands.
* stetic/ContextMenu.cs (ContextMenu): work around another
anonymous delegates bug (75689)
2005-07-21 Dan Winship <>
* libstetic/wrapper/*.cs: add a bunch of missing EmitNotify()
2005-07-19 Dan Winship <>
* stetic/UIManager.cs: subclass of Gtk.UIManager for Stetic. Not
horribly functional yet, though it does track Edit menu
sensitivity, for both widgets and text, and implements
Cut/Copy/Paste for text (but not widgets).
* stetic/ Replace the menubar with another Custom.
* stetic/Stetic.cs (Main): create a Stetic.UIManager. Set
SteticMain.MainWindow (to the window containing the PropertyGrid).
Move menu command implementations to UIManager.cs
* stetic/ContextMenu.cs: use ImageMenuItems for Cut/Copy/Paste.
Use the UIManager to implement them.
* stetic/Project.cs (SelectedHandler, Selection): pass the
Gtk.Widget, not its wrapper, since there won't be a wrapper in the
Placeholder case.
* stetic/ProjectView.cs (WidgetSelected):
* stetic/PropertyGrid.cs (Selected): update for prototype change
2005-07-19 Dan Winship <>
* libstetic/IProject.cs: rename IStetic to IProject
* libstetic/*.cs:
* libstetic/wrapper/*.cs:
* stetic/Project.cs: update
2005-07-15 Dan Winship <>
* libstetic/PropertyDescriptor.cs (Translatable, IsTranslated,
SetTranslated, TranslationContext, SetTranslationContext,
TranslationComment, SetTranslationComment): support for
translatable properties.
* libstetic/GladeUtils.cs: Reorg a bunch to handle
translatable-string-related attributes on import/export.
(SetPacking): do GladeOverride packing properties correctly.
* libstetic/EditorAttribute.cs: gone. We weren't really using it
anyway, and editors can get data from the PropertyDescriptor now.
* libstetic/TextBox.cs: a vertically-scrolling
fixed-number-of-lines TextView. Stolen from Stetic.Editor.Text,
now also used by Stetic.Editor.Translatable.
* libstetic/editor/Translatable.cs: base class for translatable
property editors. Adds an icon indicating whether or not the
property is marked for translation, with a pop-up menu allowing
you to toggle that and set a context or comment (which appear
inline in the property grid rather than only in a separate
* libstetic/editor/String.cs: inherit from Translatable
* libstetic/editor/Text.cs: inherit from Translatable and use
* libstetic/editor/Enumeration.cs:
* libstetic/editor/GroupPicker.cs:
* libstetic/editor/StringArray.cs: update protytype to take a
PropertyDescriptor rather than a PropertyInfo.
* libstetic/wrapper/objects.xml: Mark all translatable string
properties with translatable="true". Also make more use of
<property ref=...> to simplify/correctify things.
* libstetic/wrapper/Container.cs (GladeSetInternalChild): Make
this look up the internal child using the properties on the
ClassDescriptor, since the "child" might really be a grandchild or
deeper descendant.
(GladeImportChild, GladeSetInternalChild): Update for
GladeUtils.SetPacking change.
* libstetic/wrapper/pixmaps/globe.png:
* libstetic/wrapper/pixmaps/globe-not.png: translated/not
translated icon
* stetic/ Remove the height_request and
width_request, because we only wanted to set initial defaults and
let it resize itself appropriately after that.
* stetic/PropertyEditor.cs (PropertyEditor): Pass
PropertyDescriptors, not PropertyInfos to editor constructors, and
add another new type (PropertyDescriptor, object).
* stetic/Glade.cs (Export): set the DOCTYPE after the xsl
transform, or else XslTransform will insist on adding lots of
redundant attributes we don't want.
2005-07-13 Dan Winship <>
* libstetic/ClassDescriptor.cs (ClassDescriptor) parse the
internal-children node of a class as an ItemGroup.
(InternalChildren): return it
* libstetic/wrapper/objects.xml: Add internal-children nodes to
Dialog and OptionMenu. Add info for AboutDialog, ColorSelection,
ColorSelectionDialog, FileChooserWidget, FileChooserButton,
FileChooserDialog, FontSelection, and FontSelectionDialog (several
of which also have internal-children). Move AutoSize from
ContainerChild to BoxChild and TableChild for now at least.
* libstetic/wrapper/Container.cs (Wrap): get the ClassDescriptor's
InternalChildren list and set InternalChildId and Name on the
container's internal children.
* libstetic/wrapper/Dialog.cs (Wrap):
* libstetic/wrapper/OptionMenu.cs (Wrap): Remove internal child
handling; it's done by Container now.
* libstetic/wrapper/AboutDialog.cs: wrap this, to make the
Website/WebsiteLabel behavior more interactively-sane, and to make
it not default to putting "Stetic" as the application name :).
* libstetic/wrapper/FontSelectionDialog.cs: wrapper to expose the
internal FontSelection widget.
* libstetic/editor/StringArray.cs: editor for string[] (for
* stetic/PropertyEditor.cs: add Stetic.Editor.StringArray to the
editors hashtable.
* stetic/Grid.cs (SizeAllocate): don't vertically center the label
wrt the editor if the editor is more than twice the line height
(eg, a multiline text box).
* stetic/Stetic.cs (Main): call Gtk.AboutDialog.SetUrlHook() here
rather than in About(), so that the UrlHook is set for
user-created about dialogs too.
2005-07-12 Dan Winship <>
* libstetic/ClassDescriptor.cs: fix some names with underscores to
use camelCase instead.
(ClassDescriptor): If a class has no wrapper typed specified, use
its parent's wrapper type. Allow a "cname" attribute, to override
the CName property, so we can use a different class at design time
than we do at runtime (eg, for MessageDialog). Remove the
never-necessary "commands" node and no-longer-necessary
"internal-properties" node. Count the number of "important"
(NewInstance): move the widget-name-generation code here from
Widget, and apply it to every property on the object with the
init-with-name attribute.
(ImportantGroups): return the number of "important" itemgroups
* libstetic/GladeUtils.cs (ExtractWrapperProperties, GetProps):
update for ItemGroup being enumerable.
(ExportWidget): use the ClassDescriptor's CName, not the wrapped
type's name.
* libstetic/ItemDescriptor.cs (ItemDescriptor, IsInternal): note
when properties are internal.
* libstetic/ItemGroup.cs: make this IEnumerable, clean up a bit
* libstetic/PropertyDescriptor.cs (PropertyDescriptor,
InitWithName): note when properties have the init-with-name
attribute set.
* libstetic/wrapper/objects.xml: Move all internal-properties
properties to internal="true" properties in itemgroups. Set
init-with-name where appropriate. Remove now-redundant
wrapper="..." attributes. Remove <commands> node from Gtk.Label.
Fix Custom and GtkMessageDialog with cname attributes.
* libstetic/wrapper/Bin.cs: gone; Container can handle all of
this now.
* libstetic/wrapper/Expander.cs:
* libstetic/wrapper/Frame.cs:
* libstetic/wrapper/ScrolledWindow.cs:
* libstetic/wrapper/Viewport.cs: inherit from Container now, since
Bin is gone
* libstetic/wrapper/CheckButton.cs (Wrap): Remove Label setting,
which now happens via init-with-name.
* libstetic/wrapper/Container.cs (Wrap): when initializing a
container, if it has no children, add a placeholder.
* libstetic/wrapper/Custom.cs: Remove references to C glue since
we can now do this entirely in C# via the "cname" property. Move
all of the properties into Stetic.Custom and remove
* libstetic/wrapper/Label.cs (Wrap): remove; LabelProp gets
initialized via init-with-name now
* libstetic/wrapper/MessageDialog.cs: create a new class
Stetic.MessageDialog that subclasses Gtk.Dialog (and update the
objects.xml entry to use that). The old solution of just creating
a special Gtk.Dialog in CreateInstance() doesn't work any more.
* libstetic/wrapper/RadioButton.cs (Wrap): remove the Label
setting, which now happens via init-with-name
* libstetic/wrapper/Widget.cs (Wrap): remove the Name setting,
which now happens in ClassDescriptor.
* libstetic/wrapper/Window.cs: inherit from Container, since Bin
is now gone, and remove Title setting, which now happens via
* stetic/PropertyEditor.cs: fix a bug in int properties with
neither a min nor a max specified.
* stetic/PropertyGrid.cs (AppendItemGroups): use
ClassDescriptor.ImportantGroups rather than assuming the first
ItemGroup should be expanded and the later ones shouldn't.
* glue/custom.c: no longer needed
2005-07-11 Dan Winship <>
* libstetic/wrapper/objects.xml: add some missing properties
2005-07-08 Dan Winship <>
* libstetic/wrapper/Widget.cs (InsensitiveManager): track
realize/unrealize events and only create the intercepting window
when the underlying widget is realized, or else it will end up as
a child of the root window and we'll totally lose.
2005-07-08 Dan Winship <>
* libstetic/wrapper/objects.xml: add <glade-transform> nodes with
XSL transformations to fix some oddities in the glade file format.
(GtkHButtonBox): set the "secondary" property on a Help button
child. Use Gtk.Box as a wrapper now, since we don't need a
ButtonBox wrapper any more.
(GtkButtonBox, GtkVButtonBox): use Gtk.Box as a wrapper.
(GtkMenuItem): a menuitem with no label should be a
(GtkTable): fix/break the non-standard "x_options" and "y_options"
(GtkWidget): remove/add the extraneous spaces in "events"
* libstetic/wrapper/ButtonBox.cs: gone
* libstetic/wrapper/Container.cs (GladeImport): Sync() at the end.
* libstetic/wrapper/Table.cs (GladeImportChild, GladeExportChild):
gone, handled by xsl now.
(GladeImport): gone, Container does the Sync() for us now.
* libstetic/GladeUtils.cs (ParseFlags): remove special case for
* libstetic/Registry.cs: handle the <glade-transform> nodes.
(GladeImportXsl, GladeExportXsl): properties to return
XslTransforms for glade import and export.
* stetic/Glade.cs: use Registry.GladeImportXsl and GladeExportXsl.
2005-07-08 Dan Winship <>
Rework the glade import/export framework to pass XmlElements
directly to the wrapper import/export methods, rather than trying
to parse out the "relevant" parts into Hashtables, etc. This makes
it easier to handle a lot of the things that need special
handling now, and will make it easier to handle signal,
accelerator, and a11y import/export stuff later.
* libstetic/GladePropertyAttribute.cs: gone, entirely replaced by
XML attributes now
* libstetic/GladeUtils.cs: update to use XML.
(ParseProperty): handle gunichar properties.
(Wrap): don't need the LateImportHelper stuff now
* libstetic/ObjectWrapper.cs (GladeImport): update to use XML
* libstetic/PropertyDescriptor.cs: Update for removal of
GladePropertyAttribute. Handle glade-name and glade-override xml
* libstetic/wrapper/objects.xml: Add glade-override="true" to
properties that should be read from/written to the wrapper rather
than the object during glade import/export. Move AutoSize from
Container to ContainerChild, where it belonged. Fix
Button.ResponseId to invisiblify correctly. Remove
palette-category="internal" since the Palette will now ignore
objects with no palette-category. Make Menu be wrapped by
Container rather than Widget, so its MenuItems will be added
* libstetic/wrapper/Button.cs (GladeImport, GladeExport): update
(GladeImportChild): update, and remove the GladeImportComplete
stuff, since we can do it immediately after
base.GladeImportChild() now.
(StockId): Fix so this actually works :)
* libstetic/wrapper/ButtonBox.cs (GladeImportChild): update,
remove redundant setting of button.ResponseId.
* libstetic/wrapper/Container.cs: make non-abstract, since Menu
uses this as its wrapper now.
(GladeImport, GladeImportChild, GladeSetInternalChild,
GladeExport, GladeExportChild): Update. In particular, Container
now handles recursing into child widgets itself, which is nice
because it means all of a widget's children are imported when its
base.GladeImport() call returns, which lets us simplify a few
places that used to need the GladeImportComplete event.
* libstetic/wrapper/Image.cs (Wrap): Fix the case of wrapping a
Gtk.Image with no image specified
(IconSize): Remove GladePropertyAttribute
* libstetic/wrapper/Label.cs (MnemonicWidget): make this a string,
for now at least.
* libstetic/wrapper/OptionMenu.cs (GladeImport, etc):
* libstetic/wrapper/Table.cs (GladeImport, etc): update. Remove
GladeImportComplete hacks.
* libstetic/wrapper/Widget.cs (GladeImport, GladeExport): Make
these work with XML.
(Visible, HasDefault, Sensitive): Remove the
* libstetic/wrapper/Window.cs (Modal, TypeHint, Type): Remove
* libstetic/wrapper/Bin.cs (GladeImport):
* libstetic/wrapper/ComboBox.cs (GladeImport):
* libstetic/wrapper/CheckButton.cs (GladeImportChild):
* libstetic/wrapper/Expander.cs (GladeImportChild, GladeExportChild):
* libstetic/wrapper/Frame.cs (GladeImportChild, GladeExportChild):
* libstetic/wrapper/ImageMenuItem.cs (GladeImport):
* libstetic/wrapper/Notebook.cs (GladeImportChild, GladeExportChild):
* libstetic/wrapper/MenuItem.cs (GladeImportChild):
* libstetic/wrapper/RadioButton.cs (GladeImport, GladeExport):
* libstetic/wrapper/RadioMenuItem.cs (GladeImport, GladeExport):
* libstetic/wrapper/RadioToolButton.cs (GladeImport, GladeExport):
* libstetic/wrapper/ToolButton.cs (GladeImport): update
* libstetic/editor/FloatRange.cs:
* libstetic/editor/IntRange.cs:
* libstetic/editor/OptIntRange.cs: Make these take object args,
and substitute in a default min/max value if either is null.
* libstetic/ClassDescriptor.cs:
* libstetic/ItemDescriptor.cs: Use SelectNodes, not
GetElementsByTagName, which is recursive. (Oops.)
* libstetic/ParamSpec.cs (IsUnichar): add this, to test
G_IS_PARAM_SPEC_UNICHAR, since you can't otherwise distinguish
them from uint paramspecs.
* stetic/Glade.cs: update to pass XML to libstetic, and to not
recurse (since the wrappers do it themselves now).
* stetic/Palette.cs: ignore classes with no palette category
* stetic/PropertyEditor.cs: merge BasicEditor and RangeEditor
together, and update for the range editor changes to handle
implicit min/max.
* glue/paramspec.c (stetic_param_spec_is_unichar): glue for
2005-07-06 Dan Winship <>
* libstetic/DND.cs (NewWindow):
* libstetic/HandleWindow.cs (HandleWindow): update for new
studlynamed WindowAttr fields.
2005-07-01 Dan Winship <>
* libstetic/wrapper/objects.xml: new XML description of widgets,
replacing the Register() methods and a lot of miscellaneous
property attributes.
* libstetic/CommandAttribute.cs:
* libstetic/DescriptionAttribute.cs:
* libstetic/ObjectWrapperAttribute.cs:
* libstetic/ObjectWrapperType.cs:
* libstetic/RangeAttribute.cs: gone (replaced by XML attributes)
* libstetic/ItemGroup.cs: construct from XML
* libstetic/ItemDescriptor.cs: construct from XML
(EnabledFor, VisibleFor): take the widget as an argument rather
than the wrapper
* libstetic/PropertyDescriptor.cs: construct from XML, remove
slashed property names
(GetValue, SetValue): take the widget rather than the wrapper
* libstetic/CommandDescriptor.cs: construct from XML
(Enabled, Run): take the widget rather than the wrapper
* libstetic/Registry.cs: New static class that handles keeping
track of ObjectWrappers and ClassDescriptors.
* libstetic/ClassDescriptor.cs: new, describes a class. Takes on a
lot of functionality that used to be in static ObjectWrapper
methods. Also, having ItemGroups, etc stored on a ClassDescriptor
object means we don't need a ObjectWrapper subclass for each
wrapped class (unless the wrapper implements some special
* libstetic/ObjectWrapper.cs: Remove a lot of static methods,
which are now handled by Registry and ClassDescriptor.
* libstetic/GladeUtils.cs: Misc updates for Registry/ObjectWrapper
* libstetic/wrapper/*.cs: remove Register() and various other
no-longer-needed things
* libstetic/wrapper/Alignment.cs:
* libstetic/wrapper/Arrow.cs:
* libstetic/wrapper/Calendar.cs:
* libstetic/wrapper/CheckMenuItem.cs:
* libstetic/wrapper/DrawingArea.cs:
* libstetic/wrapper/Entry.cs:
* libstetic/wrapper/EventBox.cs:
* libstetic/wrapper/HBox.cs:
* libstetic/wrapper/HButtonBox.cs:
* libstetic/wrapper/HPaned.cs:
* libstetic/wrapper/HSeparator.cs:
* libstetic/wrapper/Menu.cs:
* libstetic/wrapper/MenuBar.cs:
* libstetic/wrapper/Misc.cs:
* libstetic/wrapper/ProgressBar.cs:
* libstetic/wrapper/SeparatorMenuItem.cs:
* libstetic/wrapper/SeparatorToolItem.cs:
* libstetic/wrapper/Statusbar.cs:
* libstetic/wrapper/ToggleButton.cs:
* libstetic/wrapper/TreeView.cs:
* libstetic/wrapper/VBox.cs:
* libstetic/wrapper/VButtonBox.cs:
* libstetic/wrapper/VPaned.cs:
* libstetic/wrapper/VSeparator.cs: gone; these classes don't
need any special functionality beyond what can be specified in
* stetic/Palette.cs: Use Registry.AllClasses to get the palette
* stetic/PropertyEditor.cs: use objects directly rather than via
their wrappers (particularly since PropertyDescriptor.Get/SetValue
now work directly on the objects).
* stetic/WidgetFactory.cs: take a ClassDescriptor instead of name,
icon, and wrapperType.
* stetic/ContextMenu.cs:
* stetic/Project.cs:
* stetic/PropertyGrid.cs: misc updates for other changes
2005-06-28 Raja R Harinath <>
Fix 'make distcheck'.
* stetic/ (RESOURCE_FILES): Pick from
(stetic.exe): Prepend $(srcdir)/ to all source filenames.
Automake doesn't grok $(wildcard ..).
(dist-hook): New. Copy the png files here.
* libstetic/ (libstetic.dll): Prepend $(srcdir)/ to all
source filenames.
(EXTRA_DIST): Don't list wrapper/pixmaps/*.png.
(dist-hook): New. Copy the png files here.
2005-06-23 Dan Winship <>
* libstetic/ItemDescriptor.cs (DisabledIf): Replaces DependsOn and
DependsInverselyOn; specifies that a property is disabled if
another property has any of the listed values. (Rather than only
being able to depend on boolean values like before).
(InvisibleIf): Likewise replaces VisibleIf and InvisibleIf.
(HasVisibility): Tests if an item has any visibility constraints,
a la HasDependencies.
* libstetic/editor/ThemedIcon.cs: new editor for selecting a
themed icon (which can be either a registered stock icon or one of
the broader set of theme-based icons).
* libstetic/wrapper/Button.cs: Redo this using an enum to select
the type of button (Stock, Text-only, Themed icon + Label,
Icon-from-file + Label, or Custom contents). Use
ItemDescriptor.InvisibleIf to cause irrelevant fields to be
(Register): Rework for the above, plus for the
ToggleButton/CheckButton inheritance changes below.
(ThemedIcon): Use the ThemedIcon editor to select this.
* libstetic/wrapper/Image.cs: Handle the themed icon vs
icon-from-file distinction the same way Button does.
* libstetic/wrapper/CheckButton.cs: inherit from Container rather
than Button, since we're mostly not like Button.
* libstetic/wrapper/RadioButton.cs: inherit from CheckButton, not
* libstetic/wrapper/ToggleButton.cs: Simplify because it can
inherit more behavior from Button, now that CheckButton doesn't.
* libstetic/wrapper/Dialog.cs (AddButton): update for Button
* libstetic/wrapper/ScrolledWindow.cs (AddWithViewport): Set the
ShadowType on the Viewport to None.
* libstetic/wrapper/Box.cs (BoxChild.Register):
* libstetic/wrapper/ButtonBox.cs (ButtonBoxChild.Register):
* libstetic/wrapper/FontButton.cs (Register):
* libstetic/wrapper/Scale.cs (Register):
* libstetic/wrapper/Table.cs (TableChild.Register): Update for
ItemDescriptor changes.
* stetic/PropertyGrid.cs: Add logic to allow property visibility
to change on the fly, rather than being assumed to be constant for
a given object.
* stetic/Grid.cs (OnSizeAllocated): if a widget is invisible,
don't allocate space for it. If an editor is invisible, hide its
label too.
2005-06-12 Todd Berman <>
* libstetic/wrapper/Frame.cs: Make the frame HIG-ified by default.
* TODO: Update TODO.
2005-06-10 Dan Winship <>
* libstetic/wrapper/Widget.cs (InsensitiveManager): new static
class to manage insensitive widgets (using a Gtk.Invisible and
InputOnly Gdk.Windows to intercept clicks on them).
(Sensitive): Inform the InsensitiveManager about the widget's
* libstetic/HandleWindow.cs: Likewise, attach the HandleWindow to
a Gtk.Invisible, so we still get events on it even if the selected
widget is insensitive.
* TODO: Sensitive is handled properly now.
2005-06-01 Dan Winship <>
* libstetic/wrapper/ScrolledWindow.cs (AddWithViewport): Create
and wrap the viewport first, rather than trying to wrap it after
adding it to the window, which may cause a warning trying to set
its .Events in Widget.Wrap().
(ReplaceChild): If oldChild is in a Viewport, remove it from that
as well as removing the viewport from the scrolled window.
* libstetic/wrapper/Container.cs (Select): connect to the
selection's "Destroyed" event (and disconnect from the old
(SelectionDestroyed): Unselect the selection
(Delete): No longer need to do it here. (Now destroyed widgets get
properly unselected whether you delete them directly or delete one
of their ancestors.)
* stetic/Palette.cs: Fix this to not be a subclass of
ScrolledWindow; the caller can put it in a ScrolledWindow itself
if it wants to.
* stetic/Project.cs (Selection): don't try to unselect the
previous selection if it's been destroyed, or we'll get a warning.
* stetic/ Fill in the menu contents here, set up some
signal handlers.
* stetic/ An alternate UI file, with multiple
windows like glade.
* stetic/Stetic.cs (Main): update for the .glade file changes.
(Cut, Copy, Paste, Delete): currently dummy methods
(Quit): implement
(About): implement
2005-05-27 Dan Winship <>
* libstetic/wrapper/Box.cs (DoSync, Drop): Properly handle
PackStart vs PackEnd (particularly in terms of creating all the
right drag faults).
* libstetic/DND.cs (AddFault): add some new overloads
* TODO: remove comments about PackStart/PackEnd
2005-05-26 Dan Winship <>
* stetic/Stetic.cs (Main): Load the UI from a glade file rather
than hardcoding it.
* stetic/ the UI, now editable in itself
* stetic/Glade.cs: Rename this class to GladeFiles, because C#'s
namespacing rules suck.
* stetic/ add as a resource
* libstetic/wrapper/Container.cs (LookupParent): don't return
Unselectable wrappers
* libstetic/wrapper/Custom.cs (Int1, Int2): Add RangeAttributes
to these so the property grid doesn't crash
* libstetic/wrapper/Paned.cs (ReplaceChild): Make this actually
* libstetic/wrapper/ScrolledWindow.cs (ReplaceChild,
AddPlaceholder): when using a Viewport, create an (unselectable)
ObjectWrapper for it.
(RealChildren, GladeChildren): override to make the viewport show
up when glade-exporting, but not otherwise.
* libstetic/wrapper/Viewport.cs: new, wrapper for Gtk.Viewport.
2005-05-26 Dan Winship <>
* libstetic/GladeUtils.cs (ParseFlags, PropToString): Remove
special cases for TableChild options (now handled in Table.cs).
Use PropertyDescriptor.HasDefault.
* libstetic/IStetic.cs (Selection): Make this a Gtk.Widget, not a
Stetic.Wrapper.Widget, so we can keep more careful track of
Placeholder selections.
* libstetic/PropertyDescriptor.cs (HasDefault): new settable
property to say whether or not the property has a default value.
(See Scale.cs below).
* libstetic/wrapper/Bin.cs (GladeImport): at GladeImportComplete
time, if the bin is empty, add a Placeholder.
* libstetic/wrapper/Button.cs (GladeImport, GladeChildren): dtrt
with buttons that contain placeholders.
(FixupGladeChildren): set UseUnderline correctly.
(GladeExport): handle stock buttons correctly
* libstetic/wrapper/ButtonBox.cs (GladeImportChild): fix the
"Help" button case.
* libstetic/wrapper/Container.cs (LookupParent): was
Widget.ParentWrapper, but now can be used for Placeholders as
(Select, UnSelect): update for selection changes
* libstetic/wrapper/Image.cs (GladeExport): don't export the
"filename" property when it's a stock image, or the "stock"
property when it's an image file.
(UseStock, Stock, Filename): misc other fixes
* libstetic/wrapper/OptionMenu.cs (GladeImport): juggle the Menu
at GladeImportComplete time to force a proper size request
(GladeImportChild): allow the menu to be specified as an internal
or non-internal child, since different versions of glade
apparently do different things.
* libstetic/wrapper/Scale.cs (Register): clear HasDefault on the
DrawValue and ValuePos properties, since the ParamSpecs are
registered with the wrong default values.
* libstetic/wrapper/Table.cs (GladeImportChild, GladeExportChild):
translate between the "normal" flag value representation
("GTK_EXPAND|GTK_FILL") and TableChild's special representation
("expand|fill") here rather than in GladeUtils.
* libstetic/wrapper/Widget.cs (ParentWrapper): use
(WidgetEvent): update for selection changes
(UnSelect): gone, handled by other things now
* stetic/ContextMenu.cs: Fix (again) so that only the top level
menu has submenus. Add icons to the widget labels.
* stetic/Glade.cs (Export): close the file when we're done.
(ExportWidget): Remove a no-longer-relevant FIXME about
* stetic/Project.cs (Selection, etc): update for IStetic change to
make Selection a Gtk.Widget. Unselect the previous selection
always. (Previously Placeholders weren't unselected properly.)
* stetic/PropertyGrid.cs: Add a "Widget Class" line (with icon)
2005-05-24 Dan Winship <>
* libstetic/GladeUtils.cs: Fix up the parsing/unparsing to be
based on C# types rather than ParamSpec GTypes, so that it can be
used for C# wrapper properties. Update for PropertyDescriptor
GladeProperty changes.
* libstetic/PropertyDescriptor.cs (PropertyDescriptor): Allow the
"Foo" in a "Foo/Bar" property to be a wrapper property. Copy the
ParamSpec and GladeAttribute from a property to its glade proxy.
(GladeProperty): don't return null; if the property has no
GladeProperty proxy, return the property itself.
(GladeName): don't peek into GladeProperty. (Make the caller do
(GladeGetValue, GladeSetValue): gone; just use GetValue/SetValue
on the GladeProperty.
* libstetic/RadioGroupManager.cs (GladeGroupName): return the
glade "group" property value for a radio group item.
* libstetic/editor/GroupPicker.cs (Dispose): Changed from
OnDestroyed() to work around a gtk# refcounting bug at the moment.
* libstetic/wrapper/Button.cs (ConstructChild): build Unselectable
wrappers for the contents, so they can be glade-serialized
(GladeChildren): include or skip the child wrappers as
(HasResponseId): fix
* libstetic/wrapper/Calendar.cs (DisplayOptions): proxies
Gtk.Calendar.DisplayOptions, with a GladeProperty attribute.
(Register): Change properties to, "DisplayOptions/ShowHeading",
etc, so that DisplayOptions is treated as the glade property.
(GladeImport): no longer needed
* libstetic/wrapper/Container.cs (GladeChildren): new virtual
property to get a list of children for glade export purposes
* libstetic/wrapper/Custom.cs:
(Int1, Int2): make these ints now that GladeUtils can deal with
* libstetic/wrapper/MenuItem.cs (Label): store the label text
separately from the Label itself, since OptionMenu will steal the
Label of the selected MenuItem, so our Label will sometimes be
unexpectedly null.
(UseUnderline): remove glade proxy now that GladeUtils can
directly deal with the property being a bool.
* libstetic/wrapper/OptionMenu.cs (Items, FlattenMenu): Remove.
Make the contents be a menu, not just a list of labels.
(Wrap): mark the menu wrapper with the InternalChildId "menu"
(GladeImport): don't need FlattenMenu any more, but have to set
Active property after the menu is built.
(GladeChildren): return the menu.
* libstetic/wrapper/RadioButton.cs:
* libstetic/wrapper/RadioMenuItem.cs:
* libstetic/wrapper/RadioToolButton.cs (GladeImport): Re-set
"Active" after setting the group.
(GladeExport): Use GroupManager.GladeGroupName() to get the right
* libstetic/wrapper/Widget.cs (Unselectable): new property.
(FindWrapper): skip wrappers marked Unselectable.
* stetic/Glade.cs (ExportWidget): use GladeChildren rather than
2005-05-04 Dan Winship <>
* require gtk-sharp 2.5
* libstetic/editor/GroupPicker.cs: use ComboBox.RowSeparatorFunc
to add a separator to the menu
* libstetic/wrapper/Toolbar.cs (Tooltips): Remove; this is a real
property in gtk 2.6
* libstetic/wrapper/ToggleToolButton.cs (Active): Likewise
2005-04-28 Dan Winship <>
* 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 <>
* glue/ (pkglib_LTLIBRARIES): install
* libstetic/ (pkglib_DATA): install libstetic.dll and
(libstetic.dll): update to non-warned-about mcs option syntax
* libstetic/libstetic.dll.config: remove unused mapping
* libstetic/wrapper/pixmaps/ remove unused Makefile
* stetic/ (pkglib_DATA, bin_DATA): install stetic and
(stetic.exe): update to non-warned-about mcs option syntax
(run, trace, mdb, gdb): targets to run the uninstalled stetic.exe
* stetic/ redo this for installation
* stetic/stetic.exe.config: remove this; stetic.exe doesn't
DllImport anything of its own
* remove unused GACUTIL checks
2005-04-20 Dan Winship <>
* 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/ (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
* glue/ (libsteticglue_la_SOURCES): add misc.c
2005-04-19 Dan Winship <>
* 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 <>
* 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 <>
* 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
(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 <>
* 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
* TODO: misc updates
2005-04-07 Dan Winship <>
* 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 <>
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
(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
(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 <>
* 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 <>
* 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
* libstetic/wrapper/OptionMenu.cs (Wrap): create a wrapper for the
(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 <>
* libstetic/HandleWindow.cs (SelectionEvent): simplify for gdk#
* 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
* 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
* 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#
(FindWrapper): search all children (not just non-internal ones)
(Delete): new method to delete a widget (by calling
* stetic/ContextMenu.cs (DoDelete): use Wrapper.Widget.Delete()
2005-03-29 Dan Winship <>
* 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
* 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 <>
* 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 <>
* 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
(Drop): override to dtrt
2005-03-24 Dan Winship <>
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
(ShapeChanged): gone, replaced by ChildContentsChanged on
(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 <>
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
(Select): override
* libstetic/WidgetSite.cs (ParentSite): gone; replaced by
(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/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 <>
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
* 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
* libstetic/wrapper/Container.cs: update for site/placeholder
(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