public WidgetEditSession(ProjectBackend sourceProject, WidgetDesignerFrontend frontend, string windowName, Stetic.ProjectBackend editingBackend, bool autoCommitChanges)
{
this.frontend = frontend;
this.autoCommitChanges = autoCommitChanges;
undoManager = new ContainerUndoRedoManager ();
undoQueue = new UndoQueue ();
undoManager.UndoQueue = undoQueue;
sourceWidget = windowName;
this.sourceProject = sourceProject;
if (!autoCommitChanges) {
// Reuse the action groups and icon factory of the main project
gproject = editingBackend;
// Attach will prevent the destruction of the action group list by gproject
gproject.AttachActionGroups (sourceProject.ActionGroups);
gproject.IconFactory = sourceProject.IconFactory;
gproject.FileName = sourceProject.FileName;
gproject.ImagesRootPath = sourceProject.ImagesRootPath;
gproject.ResourceProvider = sourceProject.ResourceProvider;
gproject.WidgetLibraries = (ArrayList) sourceProject.WidgetLibraries.Clone ();
gproject.InternalWidgetLibraries = (ArrayList) sourceProject.InternalWidgetLibraries.Clone ();
gproject.TargetGtkVersion = sourceProject.TargetGtkVersion;
sourceProject.ComponentTypesChanged += OnSourceProjectLibsChanged;
sourceProject.ProjectReloaded += OnSourceProjectReloaded;
rootWidget = editingBackend.GetTopLevelWrapper (sourceWidget, false);
if (rootWidget == null) {
// Copy the widget to edit from the source project
// When saving the file, this project will be merged with the main project.
sourceProject.CopyWidgetToProject (windowName, gproject, windowName);
rootWidget = gproject.GetTopLevelWrapper (windowName, true);
}
gproject.Modified = false;
}
else {
rootWidget = sourceProject.GetTopLevelWrapper (windowName, true);
gproject = sourceProject;
}
rootWidget.Select ();
undoManager.RootObject = rootWidget;
gproject.ModifiedChanged += new EventHandler (OnModifiedChanged);
gproject.Changed += new EventHandler (OnChanged);
gproject.ProjectReloaded += new EventHandler (OnProjectReloaded);
gproject.ProjectReloading += new EventHandler (OnProjectReloading);
// gproject.WidgetMemberNameChanged += new Stetic.Wrapper.WidgetNameChangedHandler (OnWidgetNameChanged);
}