2008-11-18 Mike Kestner * libstetic/editor/ActionMenuItem.cs: check for whitespace only Text values before saving actions to stop people from doing silly things. [Fixes #446281] 2008-11-18 Mike Kestner * *: kill gnome dependency. Dynamically load GConf.Client object to query for stetic theme. Dynamically load Gnome.Stock for icon editors. Establish callbacks for MIME resolution and showing urls. 2008-11-12 Mike Kestner * libsteticui/PropertyTree.cs: refine store column type declarations. * libsteticui/SignalEditorBacked.cs: eliminate multiple refreshes on selection changes. some changes to the store, simplifying to string and bool columns, and using AppendValues for all row insertions. I don't think most of the model changes are necessary, but this bug fought me so hard I was trying everything and am too tired of it to back down to a minimal patch. * libsteticui/WidgetPropertyEditorBacked.cs: check the selection is really changing before refreshing. [Fixes #431751] 2008-10-29 Mike Kestner * libstetic/editor/ActionMenuItem.cs (Select): don't clear and reshow parent's submenu if it's the current item's menu. Fixes #430520. 2008-10-27 Mike Kestner * libsteticui/AssemblyResolver.cs: use the app backend's name resolver in the AssemblyNameRef resolve overload to avoid some dependency load failures. I think this also fixes #436246. At least I can't repro it with this fix in place. 2008-09-15 Mike Kestner * libstetic/ErrorWidget.cs: add Project filename to the generation warning messages. Fixes #373244. 2008-08-19 Mike Kestner * libstetic/wrapper/ActionTree.cs: use field references for uim access. Use Action.Name for name in ui string if name isn't set. * libstetic/wrapper/Widget.cs: make UIManagerName fixed and dependent on action group presence. Adjust uim generation to field references. * libsteticui/CodeGenerator.cs (GetFieldsToBind): add uimanager field if needed. * libsteticui/CodeGeneratorPartialClass.cs: add uimanager field if needed. 2008-08-19 Mike Krüger * libsteticui/CecilClassDescriptor.cs: fixed some possible nullrefs. 2008-08-18 Mike Kestner * libstetic/wrapper/Widget.cs: null guarding for ToString(). 2008-08-10 Mike Kestner * libsteticui/LibraryCache.cs: add browsable properties and events to the toolbox item entries in the objects xml doc. 2008-07-27 Mike Krüger 2008-07-24 Mike Kestner * libsteticui/CecilWidgetLibrary.cs (Load): use Refresh to get the cache info so it has a better resolver to work with if the cache is dirty. 2008-07-22 Mike Kestner * libsteticui/LibraryCache.cs: only perform attribute parsing if there is no objects.xml resource. If an objects.xml resource exists, it is the definitive source of exported capabilities. 2008-07-22 Mike Kestner * libsteticui/CecilClassDescriptor.cs: some null guarding in prop lookup method. 2008-07-21 Mike Kestner Patch from David Makovsky and Jeremie Laval. * libstetic/PropertyDescriptor.cs: use invariant culture for doubles. * libsteticui/GladeUtils.cs: use invariant culture for doubles. 2008-07-16 Mike Kestner * libsteticui/CecilWidgetLibrary.cs (LoadDependencies): always set up dependencies to ensure we never return null. 2008-07-16 Mike Kestner * libsteticui/ApplicationBackend.cs (RegisterLibrary): null guarding. 2008-07-14 Mike Krüger * libsteticui/CecilWidgetLibrary.cs: fixed possible null reference exception. 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 * configure.in: detect cecil and substitute the dll path. * libsteticui/Makefile.am: 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 resurces. 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 assignment. * 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 crashes. 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 property. 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/Makefile.am, libsteticui/libsteticui.mdp, libsteticui/Makefile.am: Updated. * libstetic/Placeholder.cs, libstetic/wrapper/Widget.cs: Implemented IEditableObject. * 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 names. 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/Makefile.am: Added new files. * libsteticui/PaletteBackend.cs: Hide the palette if there is no active project. * 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.glade, stetic/Makefile.am, 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 #81238. 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/Makefile.am: Added wrapper for IconView. * libstetic/TypedPropertyDescriptor.cs: Added null check. 2007-07-31 Lluis Sanchez Gual * libstetic/ImageInfo.cs, libstetic/editor/ThemedIcon.cs, libstetic/editor/SelectImageDialog.cs, libstetic/editor/StockIconSelectorItem.cs, libstetic/editor/StockIconList.cs, libstetic/editor/StockItem.cs, libstetic/editor/SelectIconDialog.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 notebook. * libstetic/wrapper/pixmaps/comboentry.png, libstetic/wrapper/pixmaps/iconview.png, libstetic/libstetic.mdp, libstetic/Makefile.am: 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 placeholders. * 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 frontend. * 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 #81810. 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 ComponentType. * libsteticui/PluggableWidget.cs: The widget may be unrealized after adding the notebook. Added a null check for this case. Fixes bug #81977. 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 childs. 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/Makefile.am: 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/WidgetPropertyTreeBackend.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 Gtk.Container. 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/Makefile.am: 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 widget. * libstetic/wrapper/objects.xml: Added default value for Widget.Events property. * 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 project. * libstetic/ImageInfo.cs: Image files are now relative to ImagesRootPath. * libstetic/stetic.glade, 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 groups. * 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/CecilPropertyDescriptor.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/Makefile.am: 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/Makefile.am, 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 parent. 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 default. * 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/Makefile.am: 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 #81014. 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 designer. * 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, libsteticui/CodeGeneratorPartialClass.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 information. * 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 destroyed. * 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 children. * 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 disposing. 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 interface. * 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/RadioButton.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/Makefile.am: Updated. 2007-02-12 Lluis Sanchez Gual * libsteticui/ApplicationBackend.cs, libsteticui/Application.cs, libstetic/stetic.glade, libstetic/wrapper/Container.cs, libstetic/editor/NonContainerWarningDialog.cs, libstetic/libstetic.mdp, libstetic/Makefile.am, 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 configurable. * 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/Makefile.am, stetic/stetic.mdp: Added missing resource. 2007-02-12 Lluis Sanchez Gual * libsteticui/libsteticui.mdp, libsteticui/Makefile.am, libstetic/Makefile.am, stetic/Makefile.am: 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/Makefile.am: Fixed references. * configure.in: Added missing modules. 2007-02-08 Lluis Sanchez Gual * libsteticui/Makefile.am, libstetic/Makefile.am, stetic/Makefile.am: Distcheck fixes. * libstetic/GeneratorContext.cs: Don't generate gettext for empty strings. * configure.in: 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/StockIconSelectorItem.cs, libstetic/editor/SelectIconDialog.cs, libstetic/WidgetUtils.cs, libstetic/TypedClassDescriptor.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 * configure.in: More dependency removal. 2007-02-01 Lluis Sanchez Gual * autogen.sh: 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 CheckButton. * libstetic/DND.cs: Use the native format for copy/paste widgets. 2007-01-25 Lluis Sanchez Gual * libsteticui/CodeGenerator.cs, libsteticui/CodeGeneratorInternalClass.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 first. * libsteticui/CecilSignalDescriptor.cs, libsteticui/CecilPropertyDescriptor.cs, libsteticui/AssemblyResolver.cs, libsteticui/CecilClassDescriptor.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 TypeSignalDescriptor. * 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/Makefile.am: 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. * libstetic/ObjectWrapper.cs: Added an extended data property where class descriptors can store random information. * libstetic/wrapper/Container.cs: Removed dependency on TypeClassDescriptor. * 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 it. * 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/Makefile.am: 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/ActionMenuItem.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/Makefile.am, configure.in, stetic/Makefile.am: 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/Makefile.am: 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 constructor. * 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/CodeGeneratorInternalClass.cs, libsteticui/CodeGeneratorPartialClass.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/Makefile.am: 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/CodeGeneratorInternalClass.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 problematic. * libsteticui/ActionComponent.cs: Added property for gettion the group of an action. * libsteticui/Makefile.am: 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 event. * libstetic/GeneratorContext.cs: Made GenerateInstanceExpression public. * 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/TextView.cs, libstetic/wrapper/RadioToolButton.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/MenuBar.cs, libstetic/wrapper/ActionToolbarWrapper.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 changes. * 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/DiffGenerator.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/wrapper/ActionTree.cs, libstetic/editor/ActionMenuItem.cs, libstetic/editor/ActionMenuBar.cs, libstetic/editor/ActionMenu.cs, libstetic/editor/ActionToolItem.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 Undo. 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/DiffGenerator.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/wrapper/ActionTree.cs, libstetic/editor/ActionMenuItem.cs, libstetic/editor/ActionMenuBar.cs, libstetic/editor/ActionMenu.cs, libstetic/editor/ActionToolItem.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 Undo. 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/ActionDiffAdaptor.cs, libstetic/undo/XmlDiffAdaptor.cs: Moved here UndoManager and added some classes to generate undo diffs between objects and xml representations. * 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/RadioMenuItem.cs, libstetic/wrapper/ToolButton.cs: Track api changes. * libstetic/wrapper/Action.cs, libstetic/wrapper/ActionGroup.cs, libstetic/wrapper/MenuBar.cs, libstetic/wrapper/ActionToolbarWrapper.cs: Added support for Undo/Redo. * 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 changes. * libstetic/editor/ActionMenuBar.cs, libstetic/editor/ActionMenu.cs: Added methods for saving/restoring the selection of a menu and toolbar. * libstetic/TypedPropertyDescriptor.cs: Added null check. * libstetic/Makefile.am: 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/RadioToolButton.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/ActionToolbarWrapper.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/Makefile.am, libstetic/Makefile.am: Updated. * libsteticui/Project.cs: Update the app library list after removing a project. * 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.glade: * stetic/Configuration.cs: * stetic/LibraryManagerDialog.cs: Implemented dialog for selecting widget libraries. * stetic/Makefile.am: 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/Makefile.am: 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 reloading. * 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 methods. * 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 themes. 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 leaks. 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/stetic.glade: 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 CreateActionGroupDesigner. * 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/Makefile.am: 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/stetic.glade: Added an status bar. * stetic/UIManager.cs: Implemented "Recent Files" submenu. * stetic/RecentFiles.cs: * stetic/Configuration.cs: New files. * stetic/Makefile.am: 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 items. * 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 code. * 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/Makefile.am: 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 designers. * 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/Makefile.am: Updated. 2006-08-11 Lluis Sanchez Gual * libstetic/editor/DateTimeEditor.cs: * libstetic/editor/TimeSpanEditor.cs: * libstetic/PropertyEditorCell.cs: * libstetic/Makefile.am: 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 obsolete. * libstetic/editor/Flags.cs: Fix warnings. * libstetic/wrapper/Widget.cs: Generate code for displaying tooltips. * libstetic/GeneratorContext.cs: * libstetic/PropertyDescriptor.cs: Support code generation of DateTime and TimeSpan. * libstetic/DND.cs: Fixed several issues with insert bars in boxes. * libstetic/Makefile.am: 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 selection. * 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/Makefile.am: 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 commands. * libstetic/wrapper/Box.cs: Implemented BoxExpand and BoxFill toggle commands. * 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/Makefile.am: 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 UIManager. * 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/Makefile.am: 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.glade: * 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/Makefile.am: 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/stetic.glade: 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 WidgetUtils. * 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/Makefile.am: 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 event? * 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 palette. * 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/Makefile.am: Updated. 2006-05-11 Lluis Sanchez Gual * libsteticui/Palette.cs: Show all action groups inside an "Actions" section. * libsteticui/Makefile.am: Updated. * libsteticui/ActionGroupToolbar.cs: Toolbar for the ActionGroup designer. * libsteticui/Project.cs: Forwards events fired when changing action signals. * libsteticui/SignalsEditor.cs: Include the action name in generated handlers. * 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/Makefile.am: 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 default. * 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/Makefile.am: 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 toolbar). * 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 expressions. 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 properties. * 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 editor. * 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 PropertyEditorCell. * 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/Makefile.am: 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/stetic.glade: 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 instance. * 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/Makefile.am: Updated. * stetic/stetic.glade: * 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/Makefile.am: 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 code. 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 change. * 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 properties. * 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 widget. * libstetic/TypedClassDescriptor.cs: Moved name initialization to base class. * libstetic/Makefile.am: 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/Makefile.am: 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 changes. * 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 count. * 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/Makefile.am: 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 libraries. * 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. * Makefile.am: * configure.in: Removed glue directory from the build. * stetic/Stetic.cs: Added support for code generation from the command line. * stetic/stetic.in: Added debug option. * stetic/Makefile.am: Updated. * stetic/Glade.cs: Moved to libsteticui. * stetic/UIManager.cs: Added Load and Save commands. 2006-02-09 Lluis Sanchez Gual * stetic.pc.in: Add a reference to the new libsteticui dll. * configure.in, Makefile.am: 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/Makefile.am: * 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/Makefile.am: * libstetic/Makefile.am: Updated. * libstetic/Registry.cs: Added some helper methods for locating groups. * Makefile.am: * configure.in: 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 property. * stetic/Palette.cs: * stetic/ProjectView.cs: Added support for changing the project to which those widgets are bound. * stetic/stetic.glade: Added the signals editor. * stetic/Project.cs: Added several events which are needed to integrate Stetic in an IDE. * stetic.pc.in: 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 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 StockId. (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 values. * 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 on. * libstetic/wrapper/objects.xml (Gtk.ButtonBox): Change the command labels to "Insert Button Before" and "Insert Button After". (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 EnumDescriptor 2005-09-22 Dan Winship * libstetic/ClassDescriptor.cs: Handle * 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 !AllowPlaceholders (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 Registry.NewInstance. * libstetic/wrapper/Notebook.cs (InsertPage): Use Registry.NewInstance * 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 ClassDescriptors. (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 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. * configure.in: 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 fully-constructed. 2005-09-14 Dan Winship * configure.in: drop gtk# dependency down to 1.9.5 * libstetic/Makefile.am (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 objects.xml * libstetic/editor/GroupPicker.cs: comment out use of ComboBox.RowSeparatorFunc. * 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 properties * 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 property. * libstetic/wrapper/Widget.cs (Tooltip): implement, using proj.Tooltips. 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 cross-process...) * libstetic/GladeUtils.cs (ApplicationXGladeAtom): Gdk.Atom for glade selections. (XslImportTransform, XslExportTransform): do the import/export xsl fixups. (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 Gtk.SelectionData. * 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 elements as appropriate. (CreatePlaceholder): connect to DragDataReceived. (PlaceholderDragDataReceived): Paste the received widget data into place. (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 routines. * stetic/ContextMenu.cs (DoCut, DoCopy, DoPaste, DoDelete): update to use Clipboard * stetic/Glade.cs: use GladeUtils.XslImportTransform and XslExportTransform. * stetic/Project.cs (Selection): don't crash when clearing the selection * 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() calls. 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/stetic.glade: 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 window). * libstetic/editor/String.cs: inherit from Translatable * libstetic/editor/Text.cs: inherit from Translatable and use TextBox. * 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 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/stetic.glade: 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 AboutDialog) * 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" itemgroups. (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 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 Stetic.Wrapper.Custom. * 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 init-with-name * 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 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 SeparatorMenuItem. (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 Widget.Events * libstetic/Registry.cs: handle the 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 attributes. * 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 correctly. * 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 GladePropertyAttribute. * libstetic/wrapper/Window.cs (Modal, TypeHint, Type): Remove GladePropertyAttribute. * 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 specified. * 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 ParamSpec.IsUnichar. 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 functionality). * 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 changes * 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 objects.xml. * stetic/Palette.cs: Use Registry.AllClasses to get the palette contents. * 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/Makefile.am (RESOURCE_FILES): Pick stetic.glade from $(srcdir). (stetic.exe): Prepend $(srcdir)/ to all source filenames. (EXTRA_DIST): Add stetic.glade. Don't use $(RESOURCE_FILES). Automake doesn't grok $(wildcard ..). (dist-hook): New. Copy the png files here. * libstetic/Makefile.am (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 hidden. (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 Button. * 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 changes * 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 state. * 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 selection's) (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/stetic.glade: Fill in the menu contents here, set up some signal handlers. * stetic/stetic-multi.glade: 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/stetic.glade: the UI, now editable in itself * stetic/Glade.cs: Rename this class to GladeFiles, because C#'s namespacing rules suck. * stetic/Makefile.am: add stetic.glade 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 work. * 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 well. (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 Container.LookupParent(). (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 Placeholders * 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 it). (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 correctly. (GladeChildren): include or skip the child wrappers as appropriate. (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: s/ObjectManager.RegisterType/GType.Register/ (Int1, Int2): make these ints now that GladeUtils can deal with that. * 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 group * libstetic/wrapper/Widget.cs (Unselectable): new property. (FindWrapper): skip wrappers marked Unselectable. * stetic/Glade.cs (ExportWidget): use GladeChildren rather than RealChildren. 2005-05-04 Dan Winship * configure.in: 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/Makefile.am (pkglib_LTLIBRARIES): install libsteticglue.la * libstetic/Makefile.am (pkglib_DATA): install libstetic.dll and libstetic.dll.config (libstetic.dll): update to non-warned-about mcs option syntax (CLEANFILES, EXTRA_DIST): update * libstetic/libstetic.dll.config: remove unused mapping * libstetic/wrapper/pixmaps/Makefile.am: remove unused Makefile * stetic/Makefile.am (pkglib_DATA, bin_DATA): install stetic and stetic.exe (stetic.exe): update to non-warned-about mcs option syntax (CLEANFILES, EXTRA_DIST): update (run, trace, mdb, gdb): targets to run the uninstalled stetic.exe * stetic/stetic.in: redo this for installation * stetic/stetic.exe.config: remove this; stetic.exe doesn't DllImport anything of its own * configure.in: remove unused GACUTIL checks 2005-04-20 Dan Winship * libstetic/wrapper/CheckMenuItem.cs: * libstetic/wrapper/ImageMenuItem.cs: * libstetic/wrapper/MenuBar.cs: * libstetic/wrapper/MenuItem.cs: * libstetic/wrapper/RadioMenuItem.cs: * libstetic/wrapper/SeparatorMenuItem.cs: wrap these enough to be able to glade-import menus, but not really well enough to be able to edit them happily. * libstetic/Makefile.am (libstetic.dll): Change the rule to write all the args out to a response file and then use that. * libstetic/editor/Accelerator.cs: PropertyGrid editor for accelerators. Loosely based on EggCellRendererKeys. * glue/misc.c (stetic_keycode_is_modifier): for Stetic.Editor.Accelerator * glue/Makefile.am (libsteticglue_la_SOURCES): add misc.c 2005-04-19 Dan Winship * 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 AllChildren (RealChildren): use AllChildren. kill RealChildEnumerator. * libstetic/wrapper/Widget.cs (InterceptClicks, FindWrapper): use AllChildren, kill ChildEnumerator * stetic/Grid.cs (ForAll): use new signature 2005-04-11 Dan Winship * glue/custom.c (custom_new): new method * libstetic/RadioGroupManager.cs (this[Gtk.Widget]): track the Destroyed event on radio widgets and update everything appropriately when a radio widget is destroyed. * libstetic/wrapper/Widget.cs (Delete): UnSelect when Deleting. * libstetic/wrapper/Container.cs (UnSelect): clear the Project selection when unselecting. * libstetic/wrapper/Custom.cs (Stetic.Custom.ctor()): call custom_new() * TODO: misc updates 2005-04-07 Dan Winship * 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 selection.WidgetEvent. (SelectionEvent): if the event occurred in the handle window, always return true. Fixes the bug where widgets sometimes undrew themselves when they were selected. * libstetic/ObjectWrapperAttribute.cs (ObjectWrapperType): kill this enum (Type): make this a string * libstetic/ObjectWrapperType.cs: new static class containing constant strings for the predefined wrapper types (including the new ToolbarItem type). * libstetic/Placeholder.cs (OnDragDrop): remove this; Container can handle the event itself. * libstetic/PropertyDescriptor.cs: Fix this to be able to handle the case of a subproperty of a wrapper type (eg, ToolItem.IsImportant in Wrapper.Toolbar.ToolbarChild) * libstetic/RadioGroupManager.cs: Move the group-handling code from Wrapper.RadioButton here, and genericize it to be able to work with RadioToolButtons and RadioMenuItems as well. * libstetic/editor/GroupPicker.cs: update to use RadioGroupManager. * libstetic/wrapper/Container.cs (PlaceholderDragDrop): connect to this directly rather than having the Placeholder proxy it to us. (CreateDragSource): new virtual method to create a Placeholder (or not) specifically for when dragging something out of a container (CreatePlaceholder): update signal-handling here (RealChildren): make this virtual * libstetic/wrapper/Toolbar.cs: Wrap this. (RealChildren, ReplaceChild): Override these to handle "invisible" ToolItem wrappers around non-ToolItem objects stuck into the toolbar. (DoSync, Drop): do DND autoexpanding. (At some point, we should use the actual toolbar DND editing methods.) (CreateDragSource, DragEnd): return a Gtk.Invisible rather than adding a placeholder to the toolbar. (ToolbarChild): wrap this, putting the three ToolItem properties here, since it's where they really belong. * libstetic/wrapper/RadioButton.cs: port to use RadioGroupManager * libstetic/wrapper/Widget.cs (Wrap, InterceptClicks): recursively set up event interception, so that widgets with internal embedded widgets work correctly. (ParentWrapper): Make this able to cope with non-wrapped widgets in the hierarchy. * libstetic/wrapper/RadioToolButton.cs: * libstetic/wrapper/SeparatorToolItem.cs: * libstetic/wrapper/ToggleToolButton.cs: * libstetic/wrapper/ToolButton.cs: Wrap * stetic/Palette.cs: update for ObjectWrapperType changes 2005-04-05 Dan Winship * 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 mapped. * libstetic/wrapper/OptionMenu.cs (Wrap): create a wrapper for the menu. (GladeSetInternalChild): override this, since the menu (which glade considers to be an internal child of the optionmenu) is not actually a real child. * libstetic/wrapper/Widget.cs (FindWrapper): don't find widgets that aren't mapped. (HasDefault, HierarchyChanged): Fix the logic here; a widget always has a "Toplevel", it's just that the Toplevel is not always actually a toplevel widget. * libstetic/wrapper/Window.cs (Select): Show() the window when it is selected. 2005-03-29 Dan Winship * libstetic/HandleWindow.cs (SelectionEvent): simplify for gdk# changes * libstetic/editor/Image.cs: Use reflection to get the list of stock IDs rather than Gtk.Stock.ListIds, since the latter will return 2.6-specific IDs if you have libgtk 2.6. (Image): pack the combobox into a vbox so it won't expand incorrectly. * libstetic/wrapper/ButtonBox.cs (GladeImportChild): fix ResponseId handling. * libstetic/wrapper/Container.cs (Select, UnSelect): virtualize (Delete): new method to delete a widget and replace it with a Placeholder. * libstetic/wrapper/Label.cs (Label (string)): pass "true" to Wrap so it doesn't bash the passed-in label string * libstetic/wrapper/Notebook.cs (GladeImportChild, InsertPage): Remove FIXMEs. (GladeExportChild): fix a leftover WidgetSiteism. (Select): override this; if a tab is selected, switch to its page. (ReplaceChild): allow tabs to be replaced, and don't muck things up when pages get replaced * libstetic/wrapper/Table.cs (Sync): fix to not get caught in infinite loops again. * libstetic/wrapper/Widget.cs (WidgetEvent): simply for gdk# changes. (FindWrapper): search all children (not just non-internal ones) (Delete): new method to delete a widget (by calling ParentWrapper.Delete) * stetic/ContextMenu.cs (DoDelete): use Wrapper.Widget.Delete() 2005-03-29 Dan Winship * libstetic/WidgetBox.cs: * libstetic/WidgetSite.cs: GONE! * libstetic/Placeholder.cs: inherit from DrawingArea rather than WidgetBox now. (NewWindow): Gone. The DrawingArea creates the window for us now. (Mimic, UnMimic): kill; Wrapper.Container watches out for this now * libstetic/HandleWindow.cs (SelectionEvent): intercept ButtonPress and Motion events and signal to the parent container when to start dragging. * libstetic/DND.cs (SourceSet, SourceUnset, SourceButtonPress, CanDrag): Remove "non-automatic" drag sources; HandleWindow handles that now. (AddFault, etc): update/rename stuff for WidgetSite removal * libstetic/IStetic.cs (CreateWidgetSite, CreatePlaceholder): gone (PopupContextMenu): new, to make the app pop up a context menu (Selection): new read/write property to replace old Select() method * libstetic/wrapper/Widget.cs (Wrap): add ButtonPressMask to the widget eventmask, and connect to WidgetEvent and PopupMenu (ParentWrapper): simplify for lack of WidgetSites (WidgetEvent): intercept button presses and walk through the widget's children to find the deepest wrapped widget that the click was inside (since NoWindow widgets will no longer be able to report their own clicks). Handle selection and context menus. * libstetic/wrapper/Container.cs (GladeImportChild, GladeExportChild): remove WidgetSite handling (Add): replaces AddWidgetSite (CreateWidgetSite, SiteButtonPress, SiteMotionNotify): gone (CreatePlaceholder): create the Placeholder directly rather than needing stetic.CreatePlaceholder. (PlaceholderDrop, PlaceholderDragEnd): don't create a WidgetSite (RealChildren): replaces Sites (HandleWindowDrag): initiate drag and drop from here. (ChildHExpandable, ChildVExpandable): checks the expandability of a child (which might be a Placeholder, or not) * libstetic/wrapper/*.cs: Update for WidgetSite removal, and ChildHExpandable/ChildVExpandable. * stetic/ContextMenu.cs (OnSelectionDone): be self-destroying * stetic/Glade.cs (ExportWidget): no more WidgetSites * stetic/Project.cs (Selection): change from method to property (CreateWidgetSite, CreatePlaceholder): Kill (PopupContextMenu): Implement (AddWidget, ContentsChanged): s/foo.Sites/foo.RealChildren/ 2005-03-28 Dan Winship * 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 stuff (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 "Child". (ShapeChanged): gone, replaced by ChildContentsChanged on Wrapper.Container. (Occupancy, Empty): gone. pseudo-occupancy is now handled by Placeholder; all WidgetSites are now always actually occupied. (OnMotionNotifyEvent, OnDragDataDelete, OnDragEnd): handled by Wrapper.Container now * libstetic/wrapper/Button.cs: s/site.Contents/site.Child/ * libstetic/wrapper/Box.cs (DoSync): do autosizing here (ReplaceChild): kill off the empty-placeholder-killing code for now * libstetic/wrapper/Container.cs (Freeze, Thaw, Sync, DoSync): move Freeze/Thaw here from Table, change the overridable method to "DoSync" and make Sync check frozenness and then call DoSync. (CreateWidgetSite): Set up DND on the site and if it contains a container, connect to its ContentsChanged method (to replace the old WidgetSite.ShapeChanged method). (SiteMotionNotify, PlaceholderDragEnd): handle DND. (ChildContentsChanged): Replaces SiteShapeChanged; * stetic/Glade.cs: * stetic/Project.cs: * stetic/PropertyGrid.cs: s/site.Contents/site.Child/ 2005-03-23 Dan Winship Move IWidgetSite and WindowSite interfaces to Stetic.Wrapper.Widget and Stetic.Wrapper.Window. * libstetic/wrapper/Widget.cs (Wrapped): override to return a Gtk.Widget, to get rid of lots of typecasting (ParentWrapper): replacement for WidgetSite.ParentSite; returns the wrapper for the wrapped widget's parent (InternalChildId, Select): Moved here from WidgetSite. * libstetic/wrapper/Window.cs (FocusChanged): moved here from WindowSite. (Select): override * libstetic/WidgetSite.cs (ParentSite): gone; replaced by Wrapper.Widget.ParentWrapper. (Internal): replaces InternalChildId. (Drop): call Select on the wrapper, not the site. (Select, UnSelect, Delete): gone * libstetic/IWidgetSite.cs: * libstetic/WindowSite.cs: gone * libstetic/wrapper/Button.cs (HasResponseId): use ParentWrapper rather than ParentSite. * libstetic/wrapper/Container.cs (GladeExportChild, FindInternalChild): update for InternalChildId move from WidgetSite to Wrapper.Widget. (ChildWrapper): take a Wrapper.Widget instead of an IWidgetSite. (PlaceholderDrop): call Select on the wrapper, not the site. * libstetic/wrapper/Dialog.cs (Wrap): set InternalChildId on the wrapper, not the site. * stetic/ContextMenu.cs: Change all IWidgetSites to Stetic.Wrapper.Widgets * stetic/Project.cs (AddWindow): take a Stetic.Wrapper.Window rather than a WindowSite. (ProjectNode): add a "Wrapper" field * stetic/ProjectView.cs (RowSelected, WidgetSelected): update to use wrappers intead of sites. * stetic/Glade.cs (Import): * stetic/WidgetFactory.cs (WindowFactory.OnButtonPressEvent): don't need to create a WindowSite for top-level windows any more. Just pass the wrapper to Project.AddWindow instead. 2005-03-23 Dan Winship Split apart placeholders and WidgetSites. This is an intermediate step on the road to killing off WidgetSite, and several wrappers are broken in this check-in because it doesn't make much sense to fix them twice. * libstetic/Placeholder.cs: New subclass of WidgetBox to represent a placeholder (which can accept drops, but can't actually hold widgets). * libstetic/WidgetSite.cs: Mostly remove support for empty WidgetSites (though not pseudo-occupied ones). * libstetic/WidgetBox.cs: Move some stuff here from WidgetSite that both WidgetSite and Placeholder will need. Move out some (but not all) stuff that they don't both need. * libstetic/WindowSite.cs (FocusChangedHandler, FocusChanged): make the focus be a WidgetBox rather than an IWidgetSite * libstetic/CommandDescriptor.cs: * libstetic/ItemDescriptor.cs: Update commands to take a Widget context rather than an IWidgetSite. * libstetic/wrapper/Bin.cs: * libstetic/wrapper/Box.cs: * libstetic/wrapper/Dialog.cs: * libstetic/wrapper/Expander.cs: * libstetic/wrapper/Frame.cs: * libstetic/wrapper/Notebook.cs: * libstetic/wrapper/Paned.cs: * libstetic/wrapper/ScrolledWindow.cs: * libstetic/wrapper/Table.cs: * libstetic/wrapper/Window.cs: update for site/placeholder changes * libstetic/wrapper/Widget.cs (CreateWidgetSite): Make this take a widget to put in the WidgetSite. (CreatePlaceholder): like the old CreateWidgetSite, but creates a Placeholder. * libstetic/wrapper/Container.cs: update for site/placeholder changes (ReplaceChild): new virtual method to replace one child widget with another (SiteEmpty): replace the site with a placeholder (PlaceholderDrop): replace the placeholder with a WidgetSite containing the dropped widget. * libstetic/wrapper/Button.cs: update for site/placeholder changes (Wrap): fix this so we don't get blank buttons (ConstructChild): fix this to work around a maybe-bug in gtk 2.4.12 and earlier. * stetic/*.cs: Misc updates for WidgetSite/Placeholder changes 2005-03-21 Dan Winship * libstetic/wrapper/Button.cs: Remove "UseStock" property and just use a Stetic.Editor.Image to select either a stock icon or a file. Also allow stock icon (or file) with non-stock label. (GladeImportChild, FixupGladeChildren): import correctly * libstetic/wrapper/ToggleButton.cs: likewise * libstetic/wrapper/Dialog.cs (AddButton): update for Button changes * libstetic/wrapper/Image.cs (File): This is equivalent to the GladeProperty "pixbuf". * libstetic/editor/Image.cs: fixes * libstetic/GladeUtils.cs (ParseGladeProperty): don't try to parse string properties, since they don't need to be (and might not correspond to underlying properties anyway). 2005-03-21 Dan Winship * glue/paramspec.c: * libstetic/ParamSpec.cs: Simplify based on the latest version of the patch in #70061. * libstetic/ParamFlags.cs: gone; we never used this * libstetic/libstetic.dll.config: add libgtk to the map 2005-03-18 Dan Winship * libstetic/editor/Image.cs: editor that allows selecting a stock image or a file * libstetic/editor/ImageFile.cs: subclass of Stetic.Editor.Image that only allows picking a file * libstetic/editor/StockItem.cs: now a subclass of Image * libstetic/editor/File.cs: gone * libstetic/wrapper/Image.cs: Use ImageFile editor and fix things up a bit. * libstetic/wrapper/Window.cs (Icon): wrap, using the ImageFile editor 2005-03-17 Dan Winship * libstetic/WidgetBox.cs (Internal): new property saying that the box represents an internal object. (ShapeHandles): if the box is Internal, don't add corner handles. * libstetic/WidgetSite.cs (InternalChildId): set the "Internal" property according to whether or not the child id is null, and call DND.SourceUnset if marking something internal, so it can't be dragged anywhere. * libstetic/DND.cs (SourceUnset): new. (SourceButtonPress, CanDrag): make sure that CanDrag always returns false if the widget isn't a source. * stetic/ContextMenu.cs (ContextMenu): disable Cut and Delete on "Internal" widgetsites. * libstetic/ItemDescriptor.cs (VisibleIf, InvisibleIf): mark a property visible if/unless another property is set (VisibleFor): Check if the property should be visible on a given object. * stetic/PropertyGrid.cs (AppendProperty): skip properties that shouldn't be visible on this wrapper. * libstetic/wrapper/Button.cs (Register): add a "ResponseId" property, and a "HasResponseId" property saying whether or not it should be visible. (HasResponseId): Check if the button's site's parentsite has an InternalChildId of "action_area" * libstetic/editor/ResponseId.cs: ComboBoxEntry for dialog button Response IDs. * libstetic/wrapper/Dialog.cs (Register): add Buttons and HelpButton properties. (Wrap): set HasSeparator false. Give the internal children sane names. Create a button by default. (Buttons): Allow the user to pick default buttons via a menu (HelpButton): Toggle a "Help" button on/off. * libstetic/wrapper/Box.cs: Fix some minor autoexpand problems, make it work right with buttonboxes. * libstetic/wrapper/Widget.cs (HasDefault): instead of marking this "LateImport", if it's set when the widget doesn't have a Toplevel, connect to "HierarchyChanged". (That way things other than glade import can set it at inappropriate times as well.) 2005-03-15 Dan Winship * libstetic/editor/StockItem.cs: fix sorting again. (ignore "_") * libstetic/wrapper/CheckButton.cs: * libstetic/wrapper/Entry.cs: * libstetic/wrapper/ProgressBar.cs: * libstetic/wrapper/RadioButton.cs: * libstetic/wrapper/Statusbar.cs: mark HExpandable * libstetic/wrapper/DrawingArea.cs: * libstetic/wrapper/TextView.cs: * libstetic/wrapper/TreeView.cs: mark HExpandable and VExpandable 2005-03-15 Dan Winship * libstetic/WidgetSite.cs (AddFault, AddHFault, AddVFault): Make AddHFault and AddVFault take WidgetSites rather than coordinates, and provide AddFault for fully-generic fault adding. For AddHFault and AddVFault, make the fault windows fill the entire space between the two widgets (or from the widget to the edge of its parent) if the widgets are spread apart. (OnDragMotion): Center the splitter inside its fault since the fault may be very large now. * libstetic/wrapper/Box.cs (Sync): update for that * stetic/Project.cs (ContentsChanged): fix a crash when dragging a widget from one position to another within the same container 2005-03-14 Dan Winship * libstetic/WidgetSite.cs (FindFault): fix another autoexpand buglet (Drop): fix the focus in the autoexpand case * libstetic/editor/StockItem.cs: sort the buttons by their Label, not their StockId * libstetic/wrapper/Box.cs (Wrap): Add 2 children to start out, rather than 3. (SiteOccupancyChanged): If a site is emptied, destroy it rather than leaving an empty site behind (since you can still drag a new widget there even without the empty site). 2005-03-14 Dan Winship * libstetic/WidgetSite.cs: Make OccupancyChanged mean only "Occupancy changed", and add a new ShapeChanged event for when something else happens that may affect AutoSizing in its parent. (ToString): override this for debug purposes * libstetic/wrapper/Container.cs (CreateWidgetSite, SiteRemoved): connect to/disconnect from ShapeChanged (SiteShapeChanged): new virtual method (SiteRemoved): call EmitContentsChanged() * libstetic/wrapper/Box.cs (InsertBefore, InsertAfter, DropOn): call EmitContentsChanged() (SiteShapeChanged): connect to this, not OccupancyChanged * libstetic/wrapper/Expander.cs: don't EmitContentsChanged when toggling the expander, make HExpandable/VExpandable not depend on whether or not the expander is expanded. * libstetic/wrapper/Table.cs (Sync): EmitContentsChanged() iff we added sites. (SiteShapeChanged): connect to this, not OccupancyChanged * stetic/Project.cs (AddWindow): take a WindowSite rather than a Window, and connect to its FocusChanged event (AddWidget): connect to the widget's Destroyed event (WidgetDestroyed): remove the widget from the tree (ContentsChanged): simplify using new gtk# api (Selected): new event, emitted from the WindowSite.FocusChanged handler * stetic/ProjectView.cs (ProjectView): connect to the project's "Selected" event. (RowSelected): if not already syncing, grab the selection on the widget corresponding to the row. (WidgetSelected): if not already syncing, move the table selection to the selected widget. * stetic/Stetic.cs: pass Project to the PropertyGrid. (Select, NoSelection): gone; the PropertyGrid snoops the Project directly now. * stetic/Glade.cs (Import): * stetic/WidgetFactory.cs (WindowFactory): remove focus-handling code; Project.AddWindow will deal with it now * stetic/PropertyGrid.cs (PropertyGrid): take a Project and connect to its Selected event and set the selection directly from that. 2005-03-11 Dan Winship First draft of Glade export. * libstetic/GladeException.cs: simplify/fix * libstetic/GladePropertyAttribute.cs: add "UseUnderlying", to specify that export should use the underlying GObject property rather than the stetic wrapper's version. * libstetic/GladeUtils.cs (ExtractWrapperProperty): don't extract properties with the "UseUnderlying" flag set. (ParseGladeProperty): deal with the various new kinds of PropertyDescriptor confusion. (ExportWidget): base glade export method (GetProps): utility method to fill in a Hashtable from a wrapper * libstetic/ItemGroup.cs (ItemGroup): deal with '/'s in property names. * libstetic/ObjectWrapper.cs (WrappedType, NativeTypeName): make these public so GladeUtils can use them. * libstetic/ParamSpec.cs (ValueType, OwnerType): fix the return type * libstetic/PropertyDescriptor.cs (PropertyDescriptor): Allow property names to have '/'s like "XOptions/XExpand", meaning that the real property is XOptions, but it's being split up into other properties (including XExpand) in stetic. For split properties like that, and sub-properties like "Adjustment.Value", create a PropertyDescriptor representing the intermediate property too. (GladeProperty): returns the PropertyDescriptor to use for glade export (when that's not the same as the PropertyDescriptor itself) (GladeGetValue, GladeSetValue): renamed to not have "proxy" in the name. Handle all getting/setting of properties for glade. * libstetic/SiteContentEnumerator.cs: gone; Stetic.Wrapper.Container.Sites handles this by itself now. * libstetic/WidgetSite.cs (InternalChildId): property to mark a WidgetSite as containing an "internal child" of the widget. * glue/value.c: reorg a bunch (stetic_g_value_child_property_to_string, stetic_g_value_property_to_string, stetic_g_value_to_string): new functions for glade export * libstetic/wrapper/Widget.cs (GladeExport): implement * libstetic/wrapper/Container.cs (GladeExportChild): implement (FindInternalChild): make this less gross by expecting the container's wrapper class to have set the InternalChildId on the relevant WidgetSite. (Sites): use Gtk.Container.Forall so that internal sites get returned too. * libstetic/wrapper/Button.cs (Label): set UseUnderlying * libstetic/wrapper/Dialog.cs (Wrap): set InternalChildId on the internal children. * libstetic/wrapper/Image.cs (IconSize): set UseUnderlying * libstetic/wrapper/Notebook.cs (GladeExportChild): do the inverse of the GladeImportChild hackery to represent notebook tabs correctly. * libstetic/wrapper/RadioButton.cs (GladeExport): fake the "group" property. * libstetic/wrapper/Table.cs (TableChild): rewrite the property names as, eg, "XOptions/XExpand", so they will be exported correctly. * stetic/Glade.cs (Export): Implement * stetic/Project.cs (AddWidget, ContentsChanged): Use Stetic.Wrapper.Container.Sites directly rather than using SiteContentEnumerator. (Toplevels): add an enumerator exposing this, for Glade.Export * stetic/PropertyEditor.cs: Fix for PropertyDescriptor changes * stetic/Stetic.cs: add an "Export" command to the menu. 2005-03-11 Dan Winship * libstetic/ObjectWrapper.cs (Register, Create): if the wrapper type doesn't have a CreateInstance method and the wrapped type doesn't have a no-arg constructor, use g_object_new and the IntPtr constructor. * libstetic/wrapper/Alignment.cs: * libstetic/wrapper/Arrow.cs: * libstetic/wrapper/HBox.cs: * libstetic/wrapper/RadioButton.cs: * libstetic/wrapper/VBox.cs: * libstetic/wrapper/Window.cs: remove no-longer-necessary CreateInstance methods 2005-03-08 Dan Winship * libstetic/GladePropertyAttribute.cs: new attribute to mark properties that need special treatment for glade import/export (to allow us to do the special treatment automatically rather than needing custom GladeImport/GladeExport routines). (GladeProperty): flags type for GladePropertyAttribute. Currently defines Proxied (meaning that an alternate property is actually used for glade import/export) and LateImport (meaning that on import, the property shouldn't be set until the import has completed). * libstetic/PropertyDescriptor.cs: track glade-related info (GladeFlags, GladeName): new accessors (GladeProxyGetValue, GladeProxySetValue): getter/setter for glade proxy properties * libstetic/GladeUtils.cs (ImportWidget): replace CreateWidget and SetProps with two new ImportWidget methods that also handle [GladeProperty] properties. * libstetic/ObjectWrapper.cs (GladeImport): if the GladeImport invocation throws a TargetInvocationException, throw its InnerException (presumably a GladeException) up to the caller. * libstetic/wrapper/ComboBox.cs (Items): add GladePropertyAttribute noting that this is glade's "items" property. (GladeImport): simplify * libstetic/wrapper/Container.cs (GladeSetInternalChild): update. * libstetic/wrapper/Entry.cs (InvisibleChar): add this, with a GladePropertyAttribute marking GladeInvisibleChar as its proxy (GladeInvisibleChar): get/set InvisibleChar as a string (GladeImport): gone * libstetic/wrapper/Label.cs (MnemonicWidget): add this, with a GladePropertyAttribute marking GladeMnemonicWidget as its LateImport proxy (GladeMnemonicWidget): get/set MnemonicWidget as a string (GladeImport): gone * libstetic/wrapper/TextView.cs (Text): add a GladePropertyAttribute noting that this is glade's "text" property. (GladeImport): gone * libstetic/wrapper/Widget.cs (Visible, HasDefault): add GladePropertyAttributes. (HasDefault is LateImport) (GladeImport): simplified * libstetic/wrapper/Window.cs (Modal, TypeHint, Type): add GladePropertyAttributes (GladeImport): gone 2005-03-08 Dan Winship * libstetic/WidgetSite.cs (SetupFaults): Pass "false" to DND.DestSet, not true, so that the whole widget isn't drop-on-able. (AddHFault, AddVFault): don't create windows if we're not realized. * libstetic/wrapper/Box.cs (Wrap): call box_ParentSet from here so that the DropOn handler will be set up if the Parent is already set when it's wrapped (ie, if it's an internal child) 2005-03-08 Dan Winship * libstetic/GladeException.cs: exception class for Glade import problems * libstetic/GladeUtils.cs: * libstetic/ObjectWrapper.cs: * libstetic/wrapper/Container.cs: use GladeException * libstetic/GladeUtils.cs (Hydrate): Call g_type_class_ref() and pass the GObjectClass* to the glue methods rather than the GType* (to save a bunch of lookups). * glue/value.c (stetic_g_value_init_for_property, stetic_g_value_init_for_child_property): Update for that * stetic/Glade.cs: renamed from GladeImport.cs (Import): renamed from Load. Use GladeException. * libstetic/wrapper/Box.cs (Sync): Fix to not crash on empty boxes 2005-03-08 Dan Winship * libstetic/GladeUtils.cs (ExtractProperty, CreateWidget, SetProps, SetPacking): Make these all take a Hashtable of propname->value rather than a pair of ArrayLists. * libstetic/ObjectWrapper.cs (Wrap): make this public (GladeImport): take a Hashtable rather than ArrayLists * libstetic/wrapper/*.cs: * stetic/GladeImport.cs: update for those 2005-03-03 Todd Berman * stetic/Stetic.cs: Add a ShadowType.In to the widget TreeView. 2005-03-03 Dan Winship * libstetic/DND.cs: static class to handle various drag-and-drop-related stuff, so WidgetFactory doesn't need to subclass WidgetSite, which is nice since they're not really very related. (SourceSet): wrapper for Gtk.Drag.SourceSet that can also set up drag tracking for widgets that can't use SourceSet. (DestSet, DestUnset): more wrappers (CanDrag): for non automatic sources, checks if a MotionNotifyEvent counts as a drag start (Drag): starts a drag (Drop): receives the dropped widget (DragBegin, DragEnd): moved here from IStetic * libstetic/WidgetSite.cs: remove static DND-related fields (various): use DND methods rather than Gtk.Drag or IStetic ones (OnButtonPressEvent): don't need to track click locations any more; DND does it. (OnMotionNotify): use DND.CanDrag and DND.Drag (OnDragDrop): use DND.Drop (OnDropEnd): don't need to call DragEnded() from here any more; DND does it. * libstetic/IStetic.cs: * stetic/Project.cs: kill off the dnd-related events; they're on DND now. * stetic/WidgetFactory.cs: now a subclass of EventBox (ctor): set AboveChild, call DND.SourceSet (OnDragBegin): Call DND.Drag (Drop): dead code since WidgetFactory isn't a drag destination any more. 2005-03-02 Dan Winship "Autoexpand" for boxes (but not yet tables, and not 100% right yet.) * libstetic/WidgetSite.cs (AddHFault, AddVFault): allow the site occupant to add "fault lines" inside the widget where it can split apart to fit additional widgets (ShowFaults, HideFaults): connected to the IStetic's DragBegin and DragEnd signals, to show/hide the (invisible) fault line windows as needed. (OnDragMotion): if the user drags into a fault line, draw a splitter. (OnDragDrop): if the user dropped onto a fault line, emit the "DropOn" event to let the child handle placing the widget. * libstetic/WidgetBox.cs (NewWindow): make this protected so WidgetSite can use it * libstetic/IStetic.cs (DragBegin, DragEnd): new events, to indicate that something somewhere is being dragged * libstetic/wrapper/Container.cs (Sync): make this a virtual method on Container (ContainerChild.EmitNotify): Sync the parent * libstetic/wrapper/Box.cs (Wrap): connect to the box's SizeAllocated and ParentSet handlers (Sync): add fault lines (box_ParentSet): connect to the parent site's DropOn event (box_SizeAllocated): Sync() (DropOn): Insert the child in the right place * libstetic/wrapper/Table.cs (Sync): add "override" (TableChild.EmitNotify): don't need to call Sync from here; Container does it * stetic/Project.cs: implement the new IStetic bits * stetic/WidgetFactory.cs (ctor): pass the project (IStetic) to the WidgetSite ctor (Drop): override this to get rid of the warning message when you drag something from the palette but then cancel the drag * TODO: update 2005-02-28 Dan Winship * libstetic/GladeUtils.cs (HydrateProperties): Handle "adjustment" properties, which glade serializes as 6 doubles separated by spaces. * libstetic/WidgetSite.cs (Selected): new event (Focus): emit it * libstetic/wrapper/ComboBox.cs (GladeImport): use CreateInstance rather than calling down to base.GladeImport, so that we end up with a text-only combobox. Handle the "items" property. (Items): ignore trailing newlines * libstetic/wrapper/Dialog.cs (Wrap): Put WidgetSites around the VBox and ActionArea. * libstetic/wrapper/Container.cs (FindInternalChild): make this a little more complicated (read: grosser) to deal with the extra WidgetSites inside a Dialog now. * libstetic/wrapper/Expander.cs (GladeImport): Do the same label widget hack as in Notebook and Frame * libstetic/wrapper/Image.cs: if filename is "", use a "broken image" image. * libstetic/wrapper/Label.cs: add a new ctor that takes a string and constructs a label with that string, and a wrapper around the label. * libstetic/wrapper/Notebook.cs: connect to the Selected event on the label WidgetSites, and switch pages when a label is selected. (InsertPage): use the new Stetic.Wrapper.Label ctor * libstetic/wrapper/OptionMenu.cs (Wrap): if the optionmenu has no Menu, create one here rather than in FlattenMenu. * libstetic/wrapper/Table.cs (GladeImportChild): if x_options or y_options is unspecified, consider it to be "expand|fill", which is glade's default value. (SiteOccupancyChanged): don't adjust the cell's packing unless it is set to AutoSize. * libstetic/wrapper/Window.cs (Type): make this a shadow prop too 2005-02-28 Dan Winship * libstetic/ObjectWrapperAttribute.cs: add a "Deprecated" flag * libstetic/wrapper/OptionMenu.cs: New, wrap Gtk.OptionMenu, but mark it with the "Deprecated" ObjectWrapperAttribute flag. Also, since we don't have a menu editor yet, we just wrap it the same way as ComboBox, with a multiline text entry to specify the menu items. * libstetic/wrapper/Menu.cs: * libstetic/wrapper/MenuItem.cs: Wrap these just enough for importing OptionMenus from glade * libstetic/wrapper/Container.cs (GladeImportChild): if the container does not accept arbitrary GtkWidget children (according to Gtk.Container.ChildType()), then don't interpose a WidgetSite between parent and child. * stetic/Palette.cs (AddWidget): skip widgets with "Deprecated" set on their ObjectWrapperAttribute. (Meaning that for now, they can be imported, but not created by hand.) 2005-02-27 Dan Winship * libstetic/GladeUtils.cs (ExtractProperty): utility to remove a property from the propNames/propVals lists. (HydrateProperties): add some debug messages here * libstetic/wrapper/Label.cs (GladeImport): simplify using ExtractProperty * libstetic/wrapper/RadioButton.cs (GladeImport): handle "group" * libstetic/wrapper/Table.cs (GladeImport): force a Sync after import (Sync): don't knock out conflicting sites if they're full (which will happen temporarily during glade import, since table.Add(foo) will always put it at 0,0). * libstetic/wrapper/TextView.cs (GladeImport): handle "text" * libstetic/wrapper/Widget.cs (GladeImport): extract "visible" and "has_default"; fake out "visible", hold off on setting "has_default" until the import is complete (since it requires a parent window). * libstetic/wrapper/Window.cs (Wrap): force TypeHint to "Normal" so the WM doesn't do annoying things to us (GladeImport): extract "modal" and "type_hint" (TypeHint): add a shadow property for this * stetic/GladeImport.cs (CreateWidget, AddChildren): merge these together and reduce redundant code. 2005-02-25 Dan Winship Reorganize the glade import code; put all the wacky exceptions into the wrapper classes rather than adding more and more to GladeImport itself. * libstetic/ObjectWrapper.cs (GladeImport): static method to find the wrapper type for a given class name and create a wrapper and object based on glade data. (Create): add a new overload using a className rather than a Type. * libstetic/IStetic.cs: add GladeImportComplete event and LookupWidgetById method. * libstetic/GladeUtils.cs: utilities for GladeImport, etc * libstetic/wrapper/Widget.cs (GladeImport): virtual method to create widget from a glade description. * libstetic/wrapper/Container.cs (GladeImportChild): virtual method to add and pack a child widget from a glade file. (AddPlaceholder): virtual method to add a placeholder (GladeSetInternalChild): virtual method to set properties on an internal child * libstetic/wrapper/ButtonBox.cs (GladeImportChild): remove "response_id" from the child's properties, and set the "secondary" packing flag if the response_id is ResponseType.Help. This is not a complete fix; we need to get the response_id back to the parent Dialog somehow. * libstetic/wrapper/Entry.cs (GladeImport): Handle the "invisible_char" property. * libstetic/wrapper/Frame.cs (GladeImportChild): handle the special "label_item" child. * libstetic/wrapper/Label.cs (GladeImport): Handle the "mnemonic_widget" property. * libstetic/wrapper/Notebook.cs (GladeImportChild): handle the special "tab" child. (This is the only "new" exception so far; all the others were previously handled in GladeImport.) * stetic/Project.cs (LookupWidgetById, GladeImportComplete): implement. * stetic/GladeImport.cs: lots of code moved from here into GladeUtils, ObjectWrapper, and various wrapper classes. 2005-02-25 Dan Winship * libstetic/wrapper/Table.cs: * libstetic/wrapper/Container.cs: move the "AutoSize" child property from Table/TableChild to Container/ContainerChild. Also, fix the previous fix. * libstetic/wrapper/Box.cs: Add AutoSize child property and update the SiteOccupancyChanged logic accordingly. Also remove the weird code with the FIXME there, since I can't reproduce the bug anyway, so either it's fixed or Todd's going to have to debug it himself. 2005-02-25 Dan Winship * libstetic/ObjectWrapper.cs (Register): Fix the no-CreateInstance case to use the *wrapped* type's ctor, not the wrapper type. * libstetic/wrapper/Container.cs (Register): Make types whose containerchild types are declared by a superclass work again. 2005-02-25 Dan Winship * libstetic/wrapper/Icon.cs: * libstetic/wrapper/Image.cs: Merge these two together, with a bool property to switch between stock icon and pixmap behavior. It's too messy to have two GtkImage wrappers. * libstetic/ObjectWrapper.cs (Register, WrapperType): Simplify the logic here for 1-1 mapping between gtk and stetic types. * stetic/GladeImport.cs: Likewise 2005-02-25 Dan Winship * stetic/Project.cs: implement IStetic * stetic/GladeImport.cs: pass the Project down into CreateWidget and AddChildren so they can eventually pass it to ObjectWrapper.Create as an IStetic. One more FIXME down. * stetic/Palette.cs: take a Project at construct time and pass it on to WidgetFactories * stetic/WidgetFactory.cs: take a Project at construct time and pass that to new wrappers rather than implementing IStetic here. * stetic/Stetic.cs: pass Project to the Palette * libstetic/ObjectWrapper.cs (Create): swap the order of the arguments * libstetic/wrapper/Container.cs (ChildWrapper): update for ObjectWrapper.Create change 2005-02-24 Dan Winship * libstetic/ObjectWrapper.cs: remove the protected (IStetic, object) constructor and replace it with a virtual Wrap method. (Register): new method to register a wrapper type (Create): new method to create a wrapper of a given type (with either a provided widget or a fresh one). (AddItemGroup): replaces RegisterWrapper. Adds a single ItemGroup to the type. (AddContextMenuItems): replaces RegisterContextMenu * libstetic/ObjectWrapperAttribute.cs: remove the WrappedType again; it's now a static property on the wrapper. * libstetic/ItemGroup.cs (ItemGroup): fix this to not lose if passed a wrapperType and a dotted property * libstetic/wrapper/*.cs: update for the NWO: * ObjectWrapperAttribute only takes 3 args again * Add static WrappedType property to all wrappers * Add static CreateInstance method to all wrappers that need to do more than just "new Gtk.Foo ()" * Replace static ctor with static Register method using AddItemGroup/AddContextMenuItems * Replace instance ctors with a Wrap override * stetic/GladeImport.cs: * stetic/Palette.cs: * stetic/PropertyGrid.cs: * stetic/WidgetFactory.cs: Update to match ObjectWrapper changes 2005-02-24 Dan Winship * libstetic/wrapper/Dialog.cs: * libstetic/wrapper/Window.cs (Modal): wrap this and don't set the underlying window property * libstetic/wrapper/Widget.cs (Visible): wrap this property and don't set the underlying widget property for Window subclasses. * stetic/GladeImport.cs (Load): set doc.PreserveWhitespace so that things like ' ' (which is used to indent HIG-style frames) import correctly. Don't crash if CreateWidget returns null. (CreateWidget): Add some debug messages, prevent a g_warning if the glade file uses types we don't wrap. (AddChildren): Add a hack to make "Help" buttons be packed with the "secondary" property in ButtonBoxes, the same as glade does. (HydrateProperties): Don't need to filter out Window.Visible any more. 2005-02-22 Dan Winship * stetic/PropertyGrid.cs: Kill ChildPropertyGrid and make the child properties appear as just another property group in the main Properties window. * stetic/Stetic.cs (Main): clean this up a little, and reorganize (palette on the left, project + properties on the right). Also update for PropertyGrid changes. * stetic/Palette.cs: fix up code style, make "Widgets" appear before "Containers", remove some commented out code 2005-02-22 Everaldo Canuto * stetic/Palette.cs: New palette GUI. 2005-02-22 Todd Berman * libstetic/wrapper/Button.cs: * libstetic/wrapper/ToggleButton.cs: * libstetic/wrapper/VScale.cs: * libstetic/wrapper/Label.cs: * libstetic/wrapper/TextView.cs: * libstetic/wrapper/Container.cs: * libstetic/wrapper/Widget.cs: * libstetic/wrapper/VSeparator.cs: * libstetic/wrapper/Paned.cs: * libstetic/wrapper/Icon.cs: * libstetic/wrapper/Box.cs: * libstetic/wrapper/ProgressBar.cs: * libstetic/wrapper/RadioButton.cs: * libstetic/wrapper/ComboBoxEntry.cs: * libstetic/wrapper/EventBox.cs: * libstetic/wrapper/Frame.cs: * libstetic/wrapper/HPaned.cs: * libstetic/wrapper/ScrolledWindow.cs: * libstetic/wrapper/HBox.cs: * libstetic/wrapper/SpinButton.cs: * libstetic/wrapper/Window.cs: * libstetic/wrapper/ComboBox.cs: * libstetic/wrapper/ColorButton.cs: * libstetic/wrapper/VPaned.cs: * libstetic/wrapper/Alignment.cs: * libstetic/wrapper/VBox.cs: * libstetic/wrapper/Notebook.cs: * libstetic/wrapper/Image.cs: * libstetic/wrapper/ButtonBox.cs: * libstetic/wrapper/DrawingArea.cs: * libstetic/wrapper/Scale.cs: * libstetic/wrapper/Table.cs: * libstetic/wrapper/Arrow.cs: * libstetic/wrapper/TreeView.cs: * libstetic/wrapper/Misc.cs: * libstetic/wrapper/HScrollbar.cs: * libstetic/wrapper/HButtonBox.cs: * libstetic/wrapper/Range.cs: * libstetic/wrapper/HScale.cs: * libstetic/wrapper/Dialog.cs: * libstetic/wrapper/Entry.cs: * libstetic/wrapper/FontButton.cs: * libstetic/wrapper/MessageDialog.cs: * libstetic/wrapper/Expander.cs: * libstetic/wrapper/HSeparator.cs: * libstetic/wrapper/Bin.cs: * libstetic/wrapper/Statusbar.cs: * libstetic/wrapper/Calendar.cs: * libstetic/wrapper/CheckButton.cs: * libstetic/wrapper/VScrollbar.cs: * libstetic/wrapper/VButtonBox.cs: Move to a 3 param'd ctor, to provide initialized information Add a Site property in Bin. Add a 4th parameter to the ObjectWrapperAttributes to show which gtk# type is wrapped. Dummy TreeView wrapper. * libstetic/ObjectWrapperAttribute.cs: New parameter to show which gtk# type is wrapped. * libstetic/Makefile.am: Add wrapper/TreeView.cs * libstetic/ObjectWrapper.cs: Add LookupWrappedTypes, to return a Type[] of the Stetic.Wrapper.* classes that wrap a given gtk# type. * TODO: Update. * stetic/WidgetFactory.cs: Make sure to hit wrappedObject.GType so that GObject stuff is properly initialized. * stetic/Stetic.cs: Change the GUI around a bit. * stetic/Palette.cs: New palette GUI. * stetic/Makefile.am: Add GladeImport.cs. * stetic/Project.cs: Add Project.Clear (); * stetic/GladeImport.cs: New file, used to provide glade file importation. * glue/Makefile.am: Add value.c * glue/value.c: New glue file to help with interacting with GValues, and used in the GladeImport process. 2005-02-22 Dan Winship * TODO: New 2005-02-22 Everaldo Canuto * libstetic/wrapper/pixmaps/alignment.png: new icon converted fron xpm. * libstetic/wrapper/pixmaps/eventbox.png: new icon converted fron xpm. * libstetic/wrapper/pixmaps/progressbar.png: new icon converted fron xpm. * libstetic/wrapper/pixmaps/statusbar.png: new icon converted fron xpm. 2005-02-19 Dan Winship * libstetic/WidgetBox.cs (PopupContextMenu): new event to mean "pop up a context menu for some reason", which could be because of a keypress or button press in either the widgetbox itself or its child. (InterceptButtonPress, OnButtonPressEvent): Handle this stuff here rather than passing it off to WidgetSite. * stetic/WidgetSite.cs: * libstetic/WidgetSite.cs: move stetic/WidgetSite.cs to libstetic, minus the very very small amount that depended on other things in stetic/. * libstetic/WindowSite.cs: split this out of WidgetSite.cs * stetic/WidgetFactory.cs (CreateWidgetSite): connect to the site's PopupContextMenu event. 2005-02-18 Dan Winship * libstetic/TranslatableAttribute.cs: new attribute to mark a string property of an attribute as being translatable. * libstetic/ObjectWrapperAttribute.cs (Name): add TranslatableAttribute to this property * libstetic/CommandAttribute.cs: add a Description field, and mark the Label and Description as Translatable. * libstetic/CommandDescriptor.cs: extract description from CommandAttribute and make it available via the Description field * libstetic/DescriptionAttribute.cs: new attribute to give a translatable label and description for a property. * libstetic/PropertyDescriptor.cs: extract label and description info from ParamSpecs or DescriptionAttributes, and make them available via the Label and Description fields * libstetic/wrapper/Box.cs: * libstetic/wrapper/Button.cs: * libstetic/wrapper/ComboBox.cs: * libstetic/wrapper/Icon.cs: * libstetic/wrapper/MessageDialog.cs: * libstetic/wrapper/Notebook.cs: * libstetic/wrapper/RadioButton.cs: * libstetic/wrapper/Table.cs: * libstetic/wrapper/TextView.cs: add descriptions to commands and properties * stetic/Grid.cs (AppendPair, Append): add overloads that take a "description" arg, and set up tooltips. * stetic/PropertyGrid.cs (AppendProperty, AppendCommand): Pass the descriptions from the ItemDescriptors to the underlying Grid methods 2005-02-17 Dan Winship * libstetic/wrapper/Container.cs (RegisterWrapper): override the base RegisterWrapper method and scan the type for a Stetic.Wrapper.Container.ContainerChild subclass, and if found, remember it as the class's child wrapper class. (RegisterChildItems, ChildItemGroups): Gone now (ChildWrapper): Creates a child property wrapper for a WidgetSite (class ContainerChild): ObjectWrapper implementation for wrapping Gtk.Container.ContainerChild (CreateWidgetSite): Now an override of Widget's (HExpandable, VExpandable): moved to Widget * libstetic/wrapper/Widget.cs (CreateWidgetSite, HExpandable, VExpandable): moved here from Container, with non-Container base implementations. * libstetic/wrapper/Table.cs: implement a ContainerChild subclass and use it to implement AutoSize again. Also, split XOptions and YOptions into multiple bools. * libstetic/wrapper/Box.cs: implement a ContainerChild subclass. (SiteOccupancyChanged): when adding a new widget, set Expand and Fill correctly according to its expandability * libstetic/wrapper/ButtonBox.cs: * libstetic/wrapper/Notebook.cs: * libstetic/wrapper/Paned.cs: implement a ContainerChild subclass. * libstetic/wrapper/Bin.cs: * libstetic/wrapper/Dialog.cs: * libstetic/wrapper/ScrolledWindow.cs: * libstetic/wrapper/Window.cs: make Bin better able to deal with subclasses that create their own WidgetSites. * libstetic/wrapper/Scrollbar.cs: kill this. HScrollbar and VScrollbar can inherit directly from Range. * libstetic/wrapper/HScale.cs (HExpandable): * libstetic/wrapper/HScrollbar.cs (HExpandable): * libstetic/wrapper/HSeparator.cs (HExpandable): * libstetic/wrapper/VScale.cs (VExpandable): * libstetic/wrapper/VScrollbar.cs (VExpandable): * libstetic/wrapper/VSeparator.cs (VExpandable): return true * libstetic/CommandDescriptor.cs: * libstetic/ItemDescriptor.cs: * libstetic/PropertyDescriptor.cs: s/object/ObjectWrapper/ in several parts of the API now that ContainerChildren have ObjectWrappers. * stetic/ContextMenu.cs * stetic/PropertyGrid.cs: * stetic/PropertyEditor.cs: update for that * libstetic/IStetic.cs: * libstetic/WidgetSite.cs: remove the 2-arg CreateWidgetSite method from IStetic and add an "EmptySize" property to WidgetSite instead. * stetic/WidgetFactory.cs: * stetic/WidgetSite.cs: update for CreateWidgetSite/EmptySize changes * libstetic/Set.cs: convenience class used by Table. 2005-02-17 Dan Winship * libstetic/ObjectWrapper.cs (RegisterWrapper): Renamed from RegisterItems. * libstetic/wrapper/*.cs: update for that * stetic/Stetic.cs: Put all of the windows into a single notebook. Probably not the best layout, but I'm getting sick of the multiple windows... 2005-02-16 Dan Winship * stetic/Grid.cs (Connect): static method to connect multiple grids so they have the same column widths. (OnSizeRequested, OnSizeAllocated): update for that * stetic/Stetic.cs (Main): Connect the Properties and ChildProperties grids. 2005-02-15 Dan Winship * libstetic/ObjectWrapper.cs: split out parts of libstetic/wrapper/Object.cs into this. (RegisterItems, RegisterContextMenu): static methods to register property grid and context menu items for a wrapper type. (ItemGroups, ContextMenuItems): these can be implemented here now rather than needing to be abstract and then reimplemented by each class. * libstetic/wrapper/Object.cs: simplified since most of it is in ObjectWrapper.cs now. * libstetic/wrapper/Container.cs: parallel some of the ObjectWrapper stuff for child properties * libstetic/wrapper/*: update for new (simplified) itemgroup handling. * stetic/PropertyGrid.cs (Notified): update prototype 2005-02-14 Dan Winship * libstetic/editor/GroupPicker.cs: property editor for a user-extensible list of strings * libstetic/wrapper/RadioButton.cs: use GroupPicker for the Group, and translate that into Gtk's terms. 2005-02-14 Dan Winship * libstetic/wrapper/Widget.cs (Widget): Set the Name property (based on the class name and a per-class counter). * libstetic/wrapper/Button.cs: * libstetic/wrapper/CheckButton.cs: * libstetic/wrapper/Expander.cs: * libstetic/wrapper/Frame.cs: * libstetic/wrapper/Label.cs: * libstetic/wrapper/RadioButton.cs: * libstetic/wrapper/ToggleButton.cs: * libstetic/wrapper/Window.cs: use the widget name for the default label/title * libstetic/wrapper/Notebook.cs: Use real wrapped-labels-in-WidgetSites for the notebook tabs. * stetic/WidgetFactory.cs: remove widget naming stuff from here * stetic/Grid.cs (OnSizeRequested, OnSizeAllocated): fix layout of misc widgets (ie, command buttons) 2005-02-14 Dan Winship * libstetic/wrapper/Range.cs: * libstetic/wrapper/Scale.cs: proxy notifications from the Adjustment so that the PropertyGrid will reflect manual changes to the widget's value 2005-02-14 Dan Winship * libstetic/RangeAttribute.cs: new attribute for specifying the range of a property. * libstetic/EditorAttribute.cs: local replacement for System.ComponentModel.EditorAttribute * libstetic/PropertyDescriptor.cs: update to look for Stetic.EditorAttribute rather than System.ComponentModel.EditorAttribute, and handle Stetic.RangeAttribute too. (PropertyInfo): property to return the underlying PropertyInfo (Minimum, Maximum): new, set from RangeAttribute (CanRead): Gone. We never really supported write-only properties. * stetic/PropertyEditor.cs (MakeEditor): use the PropertyDescriptor's Minimum and Maximum if available. (BasicEditor.BasicEditor): Use the property's PropertyInfo rather than its type as the "special" constructor used for enumerations, etc. This will let us have a few more special editor types. Don't bother trying to find a ctor that takes an initial value; it's easy enough to just set it post-construction. * libstetic/editor/Enumeration.cs: Change the Type ctor to take a PropertyInfo instead. * libstetic/editor/Text.cs: Use a PropertyInfo ctor, and check if there's an EditorAttribute with an EditorSize specified, and use that to set the textview's size if so. * libstetic/editor/Boolean.cs: * libstetic/editor/Char.cs: * libstetic/editor/Color.cs: * libstetic/editor/File.cs: * libstetic/editor/FloatRange.cs: * libstetic/editor/IntRange.cs: * libstetic/editor/OptIntRange.cs: * libstetic/editor/StockItem.cs: * libstetic/editor/String.cs: Remove "initial" arg from ctor. * libstetic/wrapper/ComboBox.cs (Items): * libstetic/wrapper/Icon.cs (Stock): * libstetic/wrapper/Image.cs (File): * libstetic/wrapper/TextView.cs (Text): use new EditorAttribute * libstetic/wrapper/Button.cs (StockId): use new EditorAttribute. Remove unused DefaultValueAttribute. * libstetic/wrapper/ColorButton.cs (Alpha): Use RangeAttribute to create a new Alpha property that combines the underlying UseAlpha and Alpha properties into a single "optional int range". 2005-02-13 Dan Winship * libstetic/CommandDescriptor.cs: like PropertyDescriptor, but describes commands implemented by the widget wrapper (which, like properties, can become sensitive and insensitive depending on other properties) * libstetic/CommandAttribute.cs: attribute for marking methods that will be referred to via CommandDescriptors * libstetic/IContextMenuProvider.cs: Gone, this functionality is part of CommandDescriptor now. * libstetic/ItemDescriptor.cs: abstract subclass for PropertyDescriptor and CommandDescriptor * libstetic/PropertyDescriptor.cs: make this a subclass of ItemDescriptor * libstetic/ItemGroup.cs: formerly PropertyGroup, but now can hold any ItemDescriptor. * libstetic/wrapper/Object.cs: add a ContextMenuItems property, empty by default. * libstetic/wrapper/*.cs: update for Item changes * libstetic/wrapper/Button.cs: implement "Remove Button Contents" and "Restore Button Label" as Commands. Add dummy properties HasLabel and HasContents for them to depend on. * libstetic/wrapper/Box.cs: * libstetic/wrapper/Notebook.cs: * libstetic/wrapper/Table.cs: change IContextMenuItemProvider stuff to use the new Command stuff * libstetic/wrapper/ComboBox.cs: replace Model property with a multi-line-text Items property * libstetic/wrapper/ComboBoxEntry.cs: new wrapper * libstetic/wrapper/Window.cs: on a DeleteEvent, just hide the window * stetic/Grid.cs: Allow adding of arbitrary widgets in addition to the property name/editor pairs. * stetic/PropertyGrid.cs: Implement CommandDescriptors by adding buttons to the Grid. * stetic/ContextMenu.cs: update for CommandDescriptor stuff * stetic/PropertyEditor.cs (EditorValueChanged, Update): Fix this again to avoid updating loops * stetic/WidgetSite.cs (WindowSite.Select): Show() the window, in case it was hidden 2005-02-13 Dan Winship * libstetic/ParamSpec.cs (gtksharp_get_type_id): Fix the library name in the DllImport attribute 2005-02-11 Dan Winship * stetic/Grid.cs: new base class for PropertyGrid. Instead of being a VBox of Expanders, its now a subclass of Container which lays out its contents by hand; this makes it much easier to make everything end up with the size and location we want (particularly in the presence of multi-line editors). * stetic/PropertyGrid.cs: Update to be a subclass of Grid * libstetic/editor/Text.cs: TextView-based multi-line text editor * libstetic/wrapper/TextView.cs: mark the "Text" property as wanting the "Text" editor type. Proxy the TextView's Buffer's "Changed" event so that the property editor will track typing in the widget. * stetic/WidgetSite.cs (OnMotionNotifyEvent): force the dragWindow to be at least 20x20, so that widgets that make very small requests expecting to be allocated much more space (eg, TextView) aren't invisible when dragged. 2005-02-09 Dan Winship * libstetic/editor/Color.cs: add an editor for Gdk.Color-valued properties * stetic/PropertyEditor.cs: Use it * stetic/PropertyGrid.cs: * stetic/Stetic.cs: re-enable child packing property page 2005-02-09 Dan Winship * Major reorg again... Now instead of having the widget wrappers be subclasses of the types they wrap, they are a parallel set of classes. This lets them share code between each other more easily than before. Touches nearly every file. Also, update to use GLib.Object.AddNotification rather than our own notify hack. 2005-01-27 Dan Winship * stetic/ProjectView.cs: TreeView subclass for displaying the widget tree. * stetic/Project.cs: model for ProjectView * stetic/Palette.cs (IconForType): Split this code out so the Project window can make use of it too. * stetic/Stetic.cs (Main): Create a "Project" window. Some day there will be windows whose names don't start with "P". * stetic/WidgetSite.cs: s/ExpandabilityChanged/ContentsChanged/ * stetic/WidgetFactory.cs (WidgetFactory, Create): set the widget Name property, a la glade (WindowFactory.OnButtonPressEvent): call SteticMain.Project.AddWindow() * libstetic/IContainerWrapper.cs: subclass IWidgetWrapper, not IObjectWrapper. (ContentsChanged): new event that replaces ExpandabilityChanged * libstetic/IWindowWrapper.cs: subclass IContainerWrapper, not IObjectWrapper * libstetic/SiteContentEnumerator.cs: IEnumerator to enumerate the real widget children of a container (rather than its WidgetSites) * widgets/*.cs: s/ExpandabilityChanged/ContentsChanged/ * widgets/Dialog.cs: * widgets/MessageDialog.cs: * widgets/Window.cs: Implement ContentsChanged * widgets/Paned.cs (Paned): fix a bug in the shared Paned properties * widgets/ToggleButton.cs (ToggleButton): Initialize "label" 2005-01-25 Dan Winship * libstetic/IWidgetWrapper.cs: New dummy subclass of IObjectWrapper * libstetic/WidgetBox.cs: Implement OnSetScrollAdjustments (by passing them on to the child). Needed for ScrolledWindow. * widgets/Alignment.cs: * widgets/EventBox.cs: * widgets/Expander.cs: * widgets/ScrolledWindow.cs: Wrap these * widgets/*.cs: s/IObjectWrapper/IWidgetWrapper/ * stetic/WidgetSite.cs (ParentSite): Deal with the fact that the immediate parent won't be a WidgetSite in a few cases. * stetic/Palette.cs (AddWidgets): Look for IWidgetWrapper, not IObjectWrapper. 2005-01-20 Dan Winship * libstetic/IWindowWrapper.cs: new (empty) interface * libstetic/WidgetWrapperAttribute.cs (WidgetType): gone; we can distinguish widget wrappers based on whether they implement IWindowWrapper, IContainerWrapper, or just IObjectWrapper. * widgets/*.cs: remove WidgetType declarations from containers and windows. * widgets/Dialog.cs: * widgets/Window.cs: Remove IContainerWrapper junk that wasn't being used anyway. * widgets/Calendar.cs: * widgets/FontButton.cs: * widgets/MessageDialog.cs: new wrappers * widgets/pixmaps/curve.png: * widgets/pixmaps/gammacurve.png: * widgets/pixmaps/hruler.png: * widgets/pixmaps/inputdialog.png: * widgets/pixmaps/selector.png: * widgets/pixmaps/vruler.png: Kill off some glade icons we won't be using * stetic/Palette.cs: Update for WidgetType going away, and reorganize into two columns 2005-01-20 Dan Winship * Move 90% of the files in the repository somewhere else. * libstetic/: classes needed by both Stetic itself and widget wrapper implementations * libstetic/editor/: moved from stetic/editor * widgets/: moved from stetic/wrapper and modified a bit to only require libstetic. (In particular, all the wrappers now have constructors that take an IStetic object which can be used to create new WidgetSites) * widgets/pixmaps: moved from pixmaps/ * stetic/: now just the app itself, which links to libstetic and dynamically loads libsteticwidgets. 2005-01-20 Dan Winship * stetic/IObjectWrapper.cs (PropertyGroup): Make this take a varargs list of property names and build the PropertyDescriptors itself, to cut down on the amount of work the wrappers need to do. Also add an indexer to retrieve a PropertyDescriptor by name. (IPropertySensitizer): Gone * stetic/PropertyDescriptor.cs: Update the ctor for how PropertyGroup uses it now. (DependsOn, DependsInverselyOn, Dependencies, InverseDependencies): stuff to specify/probe inter-property dependencies, to replace the old IPropertySensitizer stuff more simply. * stetic/PropertyGrid.cs: Replace IPropertySensitizer stuff with PropertyDescriptor.Dependencies, etc * stetic/Palette.cs (AddWidgets): Catch exceptions from the Gdk.Pixbuf ctor and use the "broken image" image instead if it can't load the wrapper's specified image. * stetic/wrapper/*.cs: Update for new, simpler PropertyGroup creation and inter-property sensitivity settings. * stetic/wrapper/ColorButton.cs: * stetic/wrapper/HScale.cs: * stetic/wrapper/ProgressBar.cs: * stetic/wrapper/Scale.cs: * stetic/wrapper/Statusbar.cs: * stetic/wrapper/VScale.cs: New wrappers * pixmaps/missing.png: "missing image" pixmap to use for now for widgets I don't have an icon for. 2005-01-14 Dan Winship * stetic/PropertyEditor.cs (BasicEditor.EditorValueChanged, BasicEditor.Update, RangeEditor.EditorValueChanged, RangeEditor.Update): Ignore EditorValueChanged if we're inside an Update, since it's just reflecting the change we're already making. Indirectly fixes a problem with deleting characters in an Entry. * stetic/wrapper/Arrow.cs: Add Misc.MiscProperties * stetic/wrapper/Button.cs: Implement IContextMenuProvider. (ContextMenuItems): Return a context menu with "Remove Button Contents" and "Restore Button Label" items, properly sensitized. (RemoveContents, RestoreLabel): Implement those. (InsensitiveProperties): Update to deal with RemoveContents * stetic/wrapper/CheckButton.cs: * stetic/wrapper/RadioButton.cs: Add missing "Label" property plus Button.ButtonExtraProperties * stetic/editor/Enumeration.cs: Don't show the enumeration values in the menu. * stetic/editor/FloatRange.cs: Show 2 decimal digits 2005-01-14 Dan Winship * stetic/WidgetBox.cs: Remove InterceptEvents property and EventWindow. Instead, ConnectBefore to the child's ButtonPressEvent. (This should help to deal with non-container-like containers. Eg, GtkButton if you replace the label widget with something else.) (OnChildButtonPress): called when a button press is intercepted on the child widget * stetic/WidgetSite.cs: Update for WidgetBox changes. (OnChildButtonPress): Handle context menu or focus grabbing as needed (StartDrag): Change this to take an EventMotion arg. Return false if the event window isn't the WidgetBox's HandleWindow. (ie, don't allow drags from the widget itself any more, only from its handles). * stetic/WidgetFactory.cs (StartDrag): add evt arg 2005-01-13 Dan Winship * stetic/ContextMenu.cs (ContextMenuItem): add an "Enabled" field and a ctor to set it (ContextMenu): obey the "Enabled" field on IContextMenuProvider items (IContextMenuProvider): Turn ContextMenuItems from a property to a procedure, so we can pass the context item to it * stetic/wrapper/Notebook.cs: update for IContextMenuProvider change. Disable items (eg, "Go To Previous Page") as appropriate. * stetic/wrapper/HBox.cs: * stetic/wrapper/VBox.cs: * stetic/wrapper/Table.cs: update for IContextMenuProvider change 2005-01-13 Dan Winship * stetic/WidgetSite.cs (EmptySize): new property to set the site's size when empty (set_Occupancy): Use that rather than hardcoding 10x10 (WidgetSite): New ctor to set EmptySize * stetic/wrapper/Window.cs: Use the new WidgetSite ctor rather than overriding OnSizeRequested * stetic/wrapper/Dialog.cs: Use the new WidgetSite ctor 2005-01-13 Dan Winship * stetic/Stetic.cs: Rename the main class from "Stetic" to "SteticMain", to work around really annoying C# semantics * stetic/WidgetFactory.cs (WindowFactory.OnButtonPressEvent): update for that 2005-01-13 Dan Winship * stetic/WidgetFactory.cs (WidgetFactoryAttribute): gone, turned into WidgetWrapperAttribute (WidgetFactory, WindowFactory): Take a Type directly rather than a WidgetFactoryDelegate. * stetic/WidgetWrapperAttribute.cs: replaces WidgetFactoryAttribute, but basically the same thing * stetic/Palette.cs (AddWidgets): Take an Assembly rather than a Type, and search for all Types in that Assembly with a WidgetWrapperAttribute. * stetic/Stetic.cs (Main): Update call to Palette.AddWidgets * stetic/wrapper/DefaultWidgets.cs: Gone * stetic/wrapper/Dialog.cs: * stetic/wrapper/Notebook.cs: * stetic/wrapper/TextView.cs: * stetic/wrapper/ToggleButton.cs: wrap these * stetic/wrapper/*.cs: add WidgetWrapper attributes, make sure every class has a no-arg constructor 2005-01-13 Dan Winship * stetic/ContextMenu.cs (IContextMenuProvider): New interface for widget wrappers that want to add items to their context menus. (ContextMenu): support IContextMenuProvider. * stetic/IObjectWrapper.cs (IPropertySensitizer): Make InsensitiveProperties a property rather than a method * stetic/PropertyDescriptor.cs (PropertyDescriptor): Add a new constructor for "proxy" descriptors, which get a ParamSpec from the base class, but use the property on the derived class. Also, if the passed-in propertyName is invalid, throw an ArgumentException with a useful message rather than causing a NullArgumentException later. * stetic/PropertyGrid.cs (SetupSensitivity): Update for InsensitiveProperties change * stetic/WidgetSite.cs: Update for ContextMenu ctor change * stetic/wrapper/Button.cs: Use a proxy PropertyDescriptor for "Label", update InsensitiveProperties. * stetic/wrapper/ComboBox.cs: Fix a crasher typo noted by Peter Williams. * stetic/wrapper/Icon.cs: Use proxy PropertyDescriptors for Stock and IconSize. * stetic/wrapper/HBox.cs: * stetic/wrapper/VBox.cs: Implement IContextMenuProvider, adding "Insert Before" and "Insert After" commands. * stetic/wrapper/Table.cs: Implement IContextMenuProvider, adding "Insert Row/Column Before/After" and "Delete Row/Column". Use proxy PropertyDescriptors for NRows and NColumns since the base properties won't let you remove non-empty rows/columns. Update InsensitiveProperties. * stetic/stetic.in: If command-line args are passed, pass them to mono (since stetic doesn't take any arguments at the moment, and I use mono --trace a lot). 2005-01-12 Dan Winship * stetic/PropertyGrid.cs: Reorganize stuff so that ContainerChild classes can override properties and implement IPropertySensitizer as well. * stetic/IDesignTimeContainer.cs: * stetic/IObjectWrapper.cs (IContainerWrapper): Move the things that used to be in IDesignTimeContainer to IContainerWrapper. Kill IDesignTimeContainer. * stetic/WidgetSite.cs: Update for that * stetic/wrapper/Frame.cs: * stetic/wrapper/HBox.cs: * stetic/wrapper/HButtonBox.cs: * stetic/wrapper/HPaned.cs: * stetic/wrapper/VBox.cs: * stetic/wrapper/VButtonBox.cs: * stetic/wrapper/VPaned.cs: * stetic/wrapper/Window.cs: Update * stetic/wrapper/Table.cs: Update. (TableChild) Subclass Gtk.Table.TableChild with an "AutoSize" property saying whether or not to automatically adjust the packing of child widgets (defaults to on). Also implement IPropertySensitizer. (Sync): Update for that. 2005-01-12 Dan Winship * stetic/IObjectWrapper.cs (IContainerWrapper): new interface a la IObjectWrapper, but including child properties as well. * stetic/PropertyGrid.cs (ChildPropertyGrid): Use IContainerWrapper * stetic/wrapper/Box.cs: * stetic/wrapper/ButtonBox.cs: * stetic/wrapper/Paned.cs: add static child PropertyGroups * stetic/wrapper/HBox.cs: * stetic/wrapper/HButtonBox.cs: * stetic/wrapper/HPaned.cs: * stetic/wrapper/Table.cs: * stetic/wrapper/VBox.cs: * stetic/wrapper/VButtonBox.cs: * stetic/wrapper/VPaned.cs: Implement IContainerWrapper, add child PropertyGroups * stetic/wrapper/Frame.cs: * stetic/wrapper/Window.cs: Implement IContainerWrapper, but return an empty ChildPropertyGroups 2005-01-11 Dan Winship * stetic/WidgetBox.cs (WidgetBox, OnRealized): Use WidgetFlags property instead of Obsolete Flags. (ShowHandles, OnRealized, OnExposeEvent): Set the Background of the HandleWindow to black when creating it, rather than filling in the foreground in OnExposeEvent. (OnSizeAllocated): Don't set HandleAllocation here, since the window may not have been realized yet, which would make TranslateCoordinates not work. (ShapeHandles): Figure out HandleAllocation here. 2005-01-07 Dan Winship * stetic/wrapper/Image.cs: wrapper for Gtk.Images that show files * stetic/wrapper/Icon.cs: wrapper for Gtk.Images that show stock icons * stetic/wrapper/SpinButton.cs: wrapper for Gtk.SpinButton * stetic/wrapper/Frame.cs: * stetic/wrapper/HBox.cs: * stetic/wrapper/HButtonBox.cs: * stetic/wrapper/HPaned.cs: * stetic/wrapper/VBox.cs: * stetic/wrapper/VButtonBox.cs: * stetic/wrapper/VPaned.cs: * stetic/wrapper/Table.cs: * stetic/wrapper/Window.cs: Implement IObjectWrapper on these (previously they just implemented IDesignTimeContainer) * stetic/wrapper/Box.cs: * stetic/wrapper/ButtonBox.cs: * stetic/wrapper/Paned.cs: static classes that define PropertyDescriptors used by their subclasses * stetic/wrapper/DefaultWidgets.cs: Update for new wrappers * stetic/editor/File.cs: editor for strings that represent filenames * stetic/Stetic.cs: Use Gnome.Program rather than Gtk.Application now, since we're using Gnome.FileEntry. 2005-01-06 Dan Winship * stetic/IDesignTimeContainer.cs: New name for the old IWidgetSite. * stetic/WidgetSite.cs (IWidgetSite): Now a "parent" for WidgetSite and WindowSite. (WidgetSite): Implement IWidgetSite and IDesignTimeContainer. (WindowSite): IWidgetSite implementation for toplevel windows. Includes the focus-tracking code formerly in Stetic.Wrapper.Window. * stetic/ContextMenu.cs (ContextMenu): * stetic/Stetic.cs (Select): * stetic/PropertyGrid.cs (PropertyGrid.Select, ChildPropertyGrid.Select): Change WidgetBox and WidgetSite params to IWidgetSite. This lets us select and show properties for toplevels. * stetic/WidgetFactory.cs (WindowFactory.OnButtonPressEvent): Create a WindowSite for the new window and connect to its FocusChanged event. * stetic/wrapper/*.cs: s/IWidgetSite/IDesignTimeContainer/ * stetic/wrapper/Window.cs (OnSetFocus): Gone. Handled by WindowSite now. 2005-01-05 Dan Winship * stetic/ContextMenu.cs: Menu subclass to use as a WidgetSite's context menu. Currently a clone of Glade's context menu, but with no widget-specific content, and it doesn't actually implement Cut, Copy, or Paste. (Meaning you can do Select or Delete.) * stetic/WidgetSite.cs (OnPopupMenu): create a ContextMenu and pop it up. (OnButtonPressEvent): Call OnPopupMenu() on a right-click. (OnKeyReleaseEvent): hand off Delete key handling to Delete() (Delete): new public method to delete the site's child. * stetic/PropertyDescriptor.cs (PropertyDescriptor): fix a bug in the sub-property case 2005-01-05 Dan Winship * stetic/IObjectWrapper.cs (IPropertySensitizer): interface for wrapper classes that want to be able to tweak the sensitivity of their editors. * stetic/Notify.cs: static helper class for the GObject "notify" signal, which isn't currently bound by glib-sharp. * stetic/PropertyDescriptor.cs (EventInfo, ParamSpec, EditorType): Make these be properties of the PropertyDescriptor rather than being figured out in PropertyEditors. * stetic/PropertyEditor.cs: Renamed from PropertyEditors.cs and made into an abstract widget class rather than a static class. (MakeEditor): Now returns a PropertyEditor rather than just a Widget. (BasicEditor, RangeEditor, NoEditor): Now subclasses of PropertyEditor, and they implement an Update() method to force the editor to sync with the underlying property. * stetic/PropertyGrid.cs: Tweak for PropertyDescriptor and PropertyEditor changes. Use IPropertySensitizer if the displayed widget supports it. Use Stetic.Notify to notice when the user interacts with the displayed widget (eg, toggling a checkbox) and force the relevant property editor to update itself. * stetic/ParamSpec.cs (ParamSpecTypeHack): add an unused private subclass of GLib.Object so we can access the static protected LookupGType method. (This wouldn't be needed if ParamSpec was in glib-sharp, because there's an internal method we could use.) (LookupObjectProperty, LookupChildProperty): Take a Type rather than a GLib.Object, so we can look up a type's properties without needing an instatiated object. * stetic/wrapper/Button.cs: Make the UI for the "Stock ID" and "Label" properties work more nicely by wrapping both of them at the Stetic.Wrapper.Button level, and watching for notifications on the UseStock property, and setting the wrapper Label to the stock item's Label rather than its Name when setting a stock item (eg, "_OK" rather than "gtk-ok"). Also add the UseStock property, and implement the IPropertySensitizer interface so that only one of Stock ID and Label is sensitive at any time. * stetic/editor/StockItem.cs: Remove the "None" option; the editor should be desensitized if no stock item is being used. * glue/notify.c: glue for Stetic.Notify * glue/paramspec.c (stetic_param_spec_for_property, stetic_param_spec_for_child_property): Take a GType rather than a GObject. 2004-12-20 Dan Winship * stetic/IObjectWrapper.cs: interface for Stetic.Wrapper objects to use to allow them to define their properties * stetic/PropertyDescriptor.cs: a class describing an editable object property * stetic/PropertyGrid.cs: Reimplement this using PropertyDescriptors and PropertyGroups for the model, and Gtk.Expanders for the view. * stetic/PropertyEditorAttribute.cs: for Stetic.Editors to use to specify the property and/or event to use to interact with them * stetic/PropertyEditors.cs: Updated for PropertyDescriptor, the Stetic.Editor namespace, etc * stetic/ParamSpec.cs: make Minimum, Maximum, Default virtual methods on ParamSpec itself, overridden by subclasses. * stetic/editor/Boolean.cs: * stetic/editor/Char.cs: * stetic/editor/Enumeration.cs: * stetic/editor/FloatRange.cs: * stetic/editor/IntRange.cs: * stetic/editor/OptIntRange.cs: * stetic/editor/StockItem.cs: * stetic/editor/String.cs: Editors for properties of various types * stetic/wrapper/Arrow.cs: * stetic/wrapper/Button.cs: * stetic/wrapper/CheckButton.cs: * stetic/wrapper/ComboBox.cs: * stetic/wrapper/DrawingArea.cs: * stetic/wrapper/Entry.cs: * stetic/wrapper/HScrollbar.cs: * stetic/wrapper/HSeparator.cs: * stetic/wrapper/Label.cs: * stetic/wrapper/RadioButton.cs: * stetic/wrapper/VScrollbar.cs: * stetic/wrapper/VSeparator.cs: IObjectWrapper implementations * stetic/wrapper/Misc.cs: * stetic/wrapper/Range.cs: * stetic/wrapper/Widget.cs: static classes defining certain PropertyGroups * stetic/wrapper/HBox.cs: * stetic/wrapper/HPaned.cs: * stetic/wrapper/Table.cs: * stetic/wrapper/VBox.cs: * stetic/wrapper/VPaned.cs: * stetic/wrapper/Window.cs: s/Widget/Gtk.Widget/ since there is now a Stetic.Wrapper.Widget * stetic/wrapper/DefaultWidgets.cs: use the new wrappers * stetic/Makefile.am (stetic_exe_SOURCES): update * stetic/stetic.in: pass --debug to mono 2004-12-20 Dan Winship * stetic/wrapper: Rename "wrappers" dir to "wrapper", to match the namespace * stetic/Makefile.am (stetic_exe_SOURCES): update for that 2004-12-15 Dan Winship * stetic/Stetic.cs: * stetic/WidgetSite.cs: * stetic/wrappers/Table.cs: Clean up new mcs warnings * stetic/PropertyEditors.cs (Enum): Redo this using ComboBox to avoid the warning about OptionMenu being deprecated (Flags): Make this a no-op for now. The OptionMenu-based implementation wasn't very useful anyway. 2004-12-14 Dan Winship * stetic/*Wrapper.cs: Move these all to stetic/wrappers and rename * stetic/DefaultWidgets.cs: Moved out of stetic/WidgetFactory.cs * stetic/Makefile.am (stetic_exe_SOURCES): Update 2004-12-13 Dan Winship * stetic/PropertyEditors.cs (Enum, Flags): implement these by using private classes rather than anonymous delegates, to work around 69614. * stetic/TableWrapper.cs: fix a search-and-replace-o ("placesite" instead of "placeholder") (Sync): Don't adjust expand/fill settings of occupied sites. (ChildOccupancyChanged): When a site becomes occupied, reset its attach options. 2004-12-10 Dan Winship * stetic/WidgetBox.cs: Always have a GdkWindow, so that the background of a container can be clicked on to select it (if any background is visible). Fix up coordinate handling accordingly. * stetic/WidgetFactory.cs (DefaultWidgets): add VButtonBox and HButtonBox. * stetic/Makefile.am (stetic_exe_SOURCES): add HButtonBoxWrapper.cs, VButtonBoxWrapper.cs (stetic.exe): Use -pkg:gtk-sharp-2.0 rather than the output we already cached in configure.in, because Miggie says so. :) 2004-12-08 Dan Winship * Initial commit