Ejemplo n.º 1
0
        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;
            }
        }