void Load() { if (gproject != null || disposed || fileName == null) { return; } gproject = GuiBuilderService.SteticApp.CreateProject(); formInfos = new List <GuiBuilderWindow> (); if (!System.IO.File.Exists(fileName)) { // Regenerate the gtk-gui folder if the stetic project // doesn't exist. GtkDesignInfo.FromProject(project).UpdateGtkFolder(); } try { gproject.Load(fileName); } catch (Exception ex) { MessageService.ShowError(GettextCatalog.GetString("The GUI designer project file '{0}' could not be loaded.", fileName), ex); hasError = true; } Counters.SteticProjectsLoaded++; gproject.ResourceProvider = GtkDesignInfo.FromProject(project).ResourceProvider; gproject.WidgetAdded += OnAddWidget; gproject.WidgetRemoved += OnRemoveWidget; gproject.ActionGroupsChanged += OnGroupsChanged; project.FileAddedToProject += OnFileAdded; project.FileRemovedFromProject += OnFileRemoved; project.ReferenceAddedToProject += OnReferenceAdded; project.ReferenceRemovedFromProject += OnReferenceRemoved; foreach (Stetic.WidgetInfo ob in gproject.Widgets) { RegisterWindow(ob, false); } // Monitor changes in the file lastSaveTime = System.IO.File.GetLastWriteTime(fileName); watcher = new FileSystemWatcher(); if (System.IO.File.Exists(fileName)) { watcher.Path = Path.GetDirectoryName(fileName); watcher.Filter = Path.GetFileName(fileName); watcher.Changed += DispatchService.GuiDispatchDelegate(new FileSystemEventHandler(OnSteticFileChanged)); watcher.EnableRaisingEvents = true; } }