コード例 #1
0
        private static void ReloadTheme(TmNode node)
        {
            Debug.Assert(node != null, "There is no bound TMNode for this property panel");
            if (node == null)
            {
                MessageBox.Show("Internal Error:  Unable to find the node to reload.");
                return;
            }
            LoadingForm form = new LoadingForm();

            if (node.IsTheme)
            {
                form.Message = "Reloading " + node.Name + "...";
            }
            else
            {
                form.Message = "Reloading all themes in " + node.Name + "...";
            }
            form.AllowCancel = true;
            form.Node        = node;
            form.Command     = form.ReloadNodeAsync;
            form.ShowDialog();
            //Treeview may need updating.
            //Data type (icon) may have changed, and sub-themes may have been added/removed.
            node.UpdateTree();
        }
コード例 #2
0
ファイル: AdminReports.cs プロジェクト: AKROGIS/ThemeManager
        internal DataTable ListThemesWithUnknownIcon(TmNode themeList, BackgroundWorker bw)
        {
            DataTable data = new DataTable();

            data.Columns.Add(new DataColumn("Category", typeof(string)));
            data.Columns.Add(new DataColumn("Theme", typeof(string)));
            data.Columns.Add(new DataColumn("Type", typeof(string)));
            data.Columns.Add(new DataColumn("Theme Path", typeof(string)));
            data.Columns.Add(new DataColumn("Theme Type", typeof(string)));
            foreach (var theme in themeList.Recurse(x => x.Children)
                     .Where(n => (n.IsTheme || n.IsSubTheme) &&
                            (n.ImageKey == "Theme" || n.ImageKey == "Themelock" || n.ImageKey == "Themenew" ||
                             n.Data.Type.Contains("Error", StringComparison.OrdinalIgnoreCase))))
            {
                DataRow row = data.NewRow();
                row["Category"]   = theme.CategoryPath();
                row["Theme"]      = theme.Name;
                row["Type"]       = (theme.IsTheme) ? "Theme" : "SubTheme";
                row["Theme Path"] = theme.Data.Path;
                row["Theme Type"] = theme.Data.Type;
                data.Rows.Add(row);
                if (bw.CancellationPending)
                {
                    return(data);
                }
            }
            return(data);
        }
コード例 #3
0
ファイル: LoadingForm.cs プロジェクト: AKROGIS/ThemeManager
        internal async Task<string> ReloadNodeAsync(TmNode root)
        {
            if (root == null)
                return "No node provided for reload";

            root.SuspendUpdates();
            List<TmNode> nodes = root.Recurse(x => x.Children)
                                        .Where(n => n.IsTheme)
                                        .ToList();
            int count = nodes.Count;
            int index = 0;
            foreach (var node in nodes)
            {
                progressLabel.Text = string.Format("Loading {1} of {2} ({0})", node.Name, index + 1, count);
                progressBar.Value = (int)(100 * (float)index / count);
                try
                {
                    await node.ReloadThemeAsync();
                }
                catch (Exception ex)
                {
                    root.ResumeUpdates();
                    return ex.Message;
                }
                if (CancelRequested)
                {
                    root.ResumeUpdates();
                    return null;
                }
                index++;
            }
            root.ResumeUpdates();
            return null;
        }
コード例 #4
0
ファイル: AdminReports.cs プロジェクト: AKROGIS/ThemeManager
        internal DataTable ListThemesWithNoMetadataInfo(TmNode themeList, BackgroundWorker bw)
        {
            DataTable data = new DataTable();

            data.Columns.Add(new DataColumn("Category", typeof(string)));
            data.Columns.Add(new DataColumn("Theme", typeof(string)));
            data.Columns.Add(new DataColumn("Type", typeof(string)));
            data.Columns.Add(new DataColumn("Metadata Path", typeof(string)));
            foreach (var theme in themeList.Recurse(x => x.Children)
                     .Where(n => (n.IsTheme || n.IsSubTheme) &&
                            !string.IsNullOrWhiteSpace(n.Metadata.Path) &&
                            string.IsNullOrWhiteSpace(n.Description) &&
                            string.IsNullOrWhiteSpace(n.Summary) &&
                            string.IsNullOrWhiteSpace(n.Tags)))
            {
                DataRow row = data.NewRow();
                row["Category"]      = theme.CategoryPath();
                row["Theme"]         = theme.Name;
                row["Type"]          = (theme.IsTheme) ? "Theme" : "SubTheme";
                row["Metadata Path"] = theme.Metadata.Path;
                data.Rows.Add(row);
                if (bw.CancellationPending)
                {
                    return(data);
                }
            }
            return(data);
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: AKROGIS/ThemeManager
        static async Task ReloadAsync(TmNode root)
        {
            List <TmNode> nodes = root.Recurse(x => x.Children)
                                  .Where(n => n.IsTheme)
                                  .ToList();

            Console.WriteLine($"Reloading {nodes.Count} Themes");
            //TODO: reload nodes in parallel
            foreach (var node in nodes)
            {
                try
                {
                    await node.ReloadThemeAsync();
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"\nError reloading node {node.CategoryPath()}/{node.Name}: {ex.Message}");
                }
                if (!node.HasData)
                {
                    Console.WriteLine($"\nNode {node.CategoryPath()}/{node.Name} has no data");
                }
                if (!node.HasMetadata)
                {
                    Console.WriteLine($"\nNode {node.CategoryPath()}/{node.Name} ({node.Data?.Type}) has no metadata");
                }
                Console.Write(".");
            }
            Console.WriteLine("");
        }
コード例 #6
0
ファイル: MdbStore.cs プロジェクト: AKROGIS/ThemeManager
        public override void Build(TmNode node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("TMNode is null");
            }

            if (!_loaded)
            {
                Load();
            }
            if (Version[0] == '1')
            {
                // version 1 had no tbl_list, and hence no databaseInfo
                node.Name = _path;
            }
            if (Version[0] == '2')
            {
                node.Name = _databaseInfo.Name;
                if (!string.IsNullOrEmpty(_databaseInfo.Link))
                {
                    node.Metadata = new Metadata(_databaseInfo.Link, MetadataType.Url, MetadataFormat.Html);
                }
                node.Description = _databaseInfo.Description;
                if (_databaseInfo.HasAuthor)
                {
                    node.Author = _databaseInfo.Author;
                }
            }
            FillCategory(node, -1);
        }
コード例 #7
0
ファイル: AdminReports.cs プロジェクト: AKROGIS/ThemeManager
        private DataTable ListThemes(TmNode themeList, BackgroundWorker bw)
        {
            DataTable data = new DataTable();

            data.Columns.Add(new DataColumn("Category", typeof(string)));
            data.Columns.Add(new DataColumn("Theme", typeof(string)));
            data.Columns.Add(new DataColumn("File", typeof(string)));
            data.Columns.Add(new DataColumn("File Type", typeof(string)));
            foreach (var theme in themeList.Recurse(x => x.Children).Where(n => n.IsTheme))
            {
                DataRow row = data.NewRow();
                row["Category"] = theme.CategoryPath();
                row["Theme"]    = theme.Name;
                row["File"]     = theme.Data.Path;
                if (!string.IsNullOrEmpty(theme.Data.Path))
                {
                    row["File Type"] = Path.GetExtension(theme.Data.Path);
                }
                data.Rows.Add(row);
                if (bw.CancellationPending)
                {
                    return(data);
                }
            }
            return(data);
        }
コード例 #8
0
ファイル: ThemeBuilder.cs プロジェクト: AKROGIS/ThemeManager
        private static async Task BuildThemesForNodeAsync(TmNode tmNode)
        {
            IGisLayer layer;

            try
            {
                layer = await GisInterface.ParseItemAtPathAsGisLayerAsync(tmNode.Data.Path);
            }
            catch (Exception ex)
            {
                Debug.Print("Unable to load GIS data layers at " + tmNode.Data.Path + " " + ex.Message);
                // The caller set a default type. Do not return too much info, it may generate an unexpected icon.
                tmNode.Data.Type += "; Unable to load.";
                return;
            }
            tmNode.Data.Type = layer.DataType;
            if (layer.IsGroup)
            {
                await BuildSubThemesForGroupLayerAsync(tmNode, layer);
            }
            else
            {
                BuildThemeDataForLayer(tmNode.Data, layer);
            }
        }
コード例 #9
0
 private async Task SyncThemeAsync(TmNode node)
 {
     Debug.Assert(node != null, "There is no bound TMNode for this property panel");
     if (node == null)
     {
         MessageBox.Show("Internal Error:  Unable to find the node to sync.");
         return;
     }
     if (node.HasChildren)
     {
         SyncThemes(node);
     }
     else
     {
         if (string.IsNullOrEmpty(node.Metadata.Path))
         {
             MessageBox.Show("Theme has no metadata");
             return;
         }
         try
         {
             // May need to load/verify metadata which could throw.
             // No need to recurse, since we just checked that we have no children.
             await node.SyncWithMetadataAsync(false);
         }
         catch (Exception ex)
         {
             MessageBox.Show($"Metadata Error: {ex.Message}.");
         }
     }
 }
コード例 #10
0
ファイル: LoadingForm.cs プロジェクト: AKROGIS/ThemeManager
        internal async Task<string> SyncNodeAsync(TmNode root)
        {
            if (root == null)
                return "No node provided for sync";

            root.SuspendUpdates();
            List<TmNode> nodes = root.Recurse(x => x.Children)
                                        .Where(n => !string.IsNullOrEmpty(n.Metadata.Path))
                                        .ToList();
            int count = nodes.Count;
            int index = 0;
            foreach (var node in nodes)
            {
                progressLabel.Text = string.Format("Syncing {1} of {2} ({0})", node.Name, index + 1, count);
                progressBar.Value = (int)(100 * (float)index / count);
                try
                {
                    await node.SyncWithMetadataAsync(false);
                }
                catch (Exception ex)
                {
                    root.ResumeUpdates(); 
                    return ex.Message;
                }
                if (CancelRequested)
                {
                    root.ResumeUpdates();
                    return null;
                }
                index++;
            }
            root.ResumeUpdates();
            return null;
        }
コード例 #11
0
ファイル: ThemeBuilder.cs プロジェクト: AKROGIS/ThemeManager
 private static async Task BuildSubThemesForGroupLayerAsync(TmNode node, IGisLayer layer)
 {
     foreach (var sublayer in layer.SubLayers)
     {
         //TODO: Build in parallel
         await BuildSubThemeForLayerAsync(node, sublayer);
     }
 }
コード例 #12
0
 public override void Build(TmNode node)
 {
     if (!IsThemeList)
     {
         return;
     }
     node.Load(_xml);
 }
コード例 #13
0
        public TmTreeNode(TmNode tmNode)
        {
            TmNode = tmNode ?? throw new ArgumentNullException("tmNode");
            UpdateProperties();

            tmNode.PropertyChanged += Data_PropertyChanged;
            tmNode.ReloadNode      += Data_ReloadNode;
            tmNode.ChildRemoved    += Data_ChildRemoved;
            tmNode.ChildAdded      += Data_ChildAdded;

            foreach (TmNode child in tmNode.Children)
            {
                Nodes.Add(new TmTreeNode(child));
            }
        }
コード例 #14
0
ファイル: AdminReports.cs プロジェクト: AKROGIS/ThemeManager
        internal DataTable ListDataSources(TmNode themeList, BackgroundWorker bw)
        {
            DataTable data = new DataTable();

            data.Columns.Add(new DataColumn("Category", typeof(string)));
            data.Columns.Add(new DataColumn("Theme", typeof(string)));
            data.Columns.Add(new DataColumn("Type", typeof(string)));
            data.Columns.Add(new DataColumn("Theme Path", typeof(string)));
            data.Columns.Add(new DataColumn("Layer Name", typeof(string)));
            data.Columns.Add(new DataColumn("Theme Type", typeof(string)));
            data.Columns.Add(new DataColumn("Data Source Path", typeof(string)));
            data.Columns.Add(new DataColumn("Workspace Path", typeof(string)));
            data.Columns.Add(new DataColumn("Workspace Type", typeof(string)));
            data.Columns.Add(new DataColumn("Workspace ProgID", typeof(string)));
            data.Columns.Add(new DataColumn("Container", typeof(string)));
            data.Columns.Add(new DataColumn("Container Type", typeof(string)));
            data.Columns.Add(new DataColumn("Data Source", typeof(string)));
            data.Columns.Add(new DataColumn("Data Source Type", typeof(string)));
            foreach (var theme in themeList.Recurse(x => x.Children)
                     .Where(n => (n.IsTheme || n.IsSubTheme)))
            {
                DataRow row = data.NewRow();
                //reload cannot be done in the background, because treeview
                // on UI thread gets property updates
                //theme.ReloadTheme();
                row["Category"]         = theme.CategoryPath();
                row["Theme"]            = theme.Name;
                row["Type"]             = (theme.IsTheme) ? "Theme" : "SubTheme";
                row["Theme Path"]       = theme.Data.Path;
                row["Layer Name"]       = theme.Data.DataSetName;
                row["Theme Type"]       = theme.Data.Type;
                row["Data Source Path"] = theme.Data.DataSource;
                row["Workspace Path"]   = theme.Data.WorkspacePath;
                row["Workspace Type"]   = theme.Data.WorkspaceType;
                row["Workspace ProgID"] = theme.Data.WorkspaceProgId;
                row["Container"]        = theme.Data.Container;
                row["Container Type"]   = theme.Data.ContainerType;
                row["Data Source"]      = theme.Data.DataSourceName;
                row["Data Source Type"] = theme.Data.DataSetType;
                data.Rows.Add(row);
                if (bw.CancellationPending)
                {
                    return(data);
                }
            }
            return(data);
        }
コード例 #15
0
ファイル: AdminReports.cs プロジェクト: AKROGIS/ThemeManager
        internal DataTable ListMetadataProblems(TmNode themeList, BackgroundWorker bw)
        {
            DataTable data = new DataTable();

            data.Columns.Add(new DataColumn("Category", typeof(string)));
            data.Columns.Add(new DataColumn("Theme", typeof(string)));
            data.Columns.Add(new DataColumn("Metadata", typeof(string)));
            data.Columns.Add(new DataColumn("Error", typeof(string)));
            List <TmNode> nodes = themeList.Recurse(x => x.Children)
                                  .Where(n => n.IsTheme || n.IsSubTheme &&
                                         !string.IsNullOrEmpty(n.Metadata.Path))
                                  .ToList();
            int count = nodes.Count;
            int index = 0;

            foreach (var theme in nodes)
            {
                string error;
                try {
                    // This is in a cancellable background thread, so we can just wait for each result
                    // This can ignore the boolean "success" response, because we are checking the error message
                    var _ = theme.Metadata.GetGeneralInfoAsync().Result;
                    error = theme.Metadata.ErrorMessage;
                }
                catch (Exception ex)
                {
                    error = ex.Message;
                }
                if (error != null)
                {
                    DataRow row = data.NewRow();
                    row["Category"] = theme.CategoryPath();
                    row["Theme"]    = theme.Name;
                    row["Metadata"] = theme.Metadata.Path;
                    row["Error"]    = error;
                    data.Rows.Add(row);
                }
                index++;
                if (bw.CancellationPending)
                {
                    return(data);
                }
                bw.ReportProgress((int)(100 * (float)index / count));
            }
            return(data);
        }
コード例 #16
0
ファイル: ThemeBuilder.cs プロジェクト: AKROGIS/ThemeManager
        private static async Task BuildSubThemeForLayerAsync(TmNode node, IGisLayer subLayer)
        {
            ThemeData data = new ThemeData(null, subLayer.DataType);

            if (subLayer.IsGroup)
            {
                TmNode newNode = new TmNode(TmNodeType.Theme, subLayer.Name, node, data, null, null, null);
                node.Add(newNode);
                await BuildSubThemesForGroupLayerAsync(newNode, subLayer);
            }
            else
            {
                BuildThemeDataForLayer(data, subLayer);
                Metadata md = await Metadata.FromDataSourceAsync(data);

                TmNode newNode = new TmNode(TmNodeType.Theme, subLayer.Name, node, data, md, null, null);
                node.Add(newNode);
            }
        }
コード例 #17
0
ファイル: MdbStore.cs プロジェクト: AKROGIS/ThemeManager
        private void FillCategory(TmNode node, int catId)
        {
            //  A category can have categories and/or themes for children.
            List <Category> cats;

            _categoriesInCategories.TryGetValue(catId, out cats);
            if (cats != null)
            {
                foreach (Category cat in cats)
                {
                    TmNode newNode = new TmNode(TmNodeType.Category,
                                                cat.Name,
                                                node,
                                                null,
                                                MakeMetadataForCategory(cat.Link),
                                                cat.Description,
                                                null
                                                );
                    node.Add(newNode);
                    FillCategory(newNode, cat.Id);
                }
            }

            List <Theme> themes;

            _themesInCategories.TryGetValue(catId, out themes);
            if (themes != null)
            {
                foreach (Theme theme in themes)
                {
                    TmNode newNode = new TmNode(TmNodeType.Theme,
                                                theme.Name,
                                                node,
                                                MakeThemeData(theme.Name, theme.DataSource, theme.Type),
                                                MakeMetadataForTheme(theme.Metadata),
                                                null,
                                                theme.PubDate
                                                );
                    node.Add(newNode);
                    FillTheme(newNode, theme.Id);
                }
            }
        }
コード例 #18
0
ファイル: MdbStore.cs プロジェクト: AKROGIS/ThemeManager
        internal TmNode BuildThemeFromId(int themeId)
        {
            if (!_loaded)
            {
                Load();
            }

            Theme  theme   = FindThemebyId(themeId);
            TmNode newNode = new TmNode(TmNodeType.Theme,
                                        theme.Name,
                                        null,
                                        MakeThemeData(theme.Name, theme.DataSource, theme.Type),
                                        MakeMetadataForTheme(theme.Metadata),
                                        null,
                                        theme.PubDate
                                        );

            FillTheme(newNode, themeId);
            return(newNode);
        }
コード例 #19
0
        private void SyncThemes(TmNode node)
        {
            Debug.Assert(node != null, "There is no bound TMNode for this property panel");
            if (node == null)
            {
                MessageBox.Show("Internal Error:  Unable to find the node to sync.");
                return;
            }
            LoadingForm form = new LoadingForm
            {
                Message     = "Syncing all themes in " + node.Name + "...",
                AllowCancel = true,
                Node        = node
            };

            form.Command = form.SyncNodeAsync;
            form.ShowDialog();
            //Treeview may need updating.
            //Description is used for tool tips, and PubDate is used for highlighting the icon.
            node.UpdateTree();
        }
コード例 #20
0
ファイル: Program.cs プロジェクト: AKROGIS/ThemeManager
        static async Task SyncAsync(TmNode root)
        {
            List <TmNode> nodes = root.Recurse(x => x.Children)
                                  .Where(n => !string.IsNullOrEmpty(n.Metadata.Path))
                                  .ToList();

            Console.WriteLine($"Syncing metadata for {nodes.Count} Themes");
            foreach (var node in nodes)
            {
                try
                {
                    await node.SyncWithMetadataAsync(false);
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"\nError syncing metadata for node {node.CategoryPath()}/{node.Name}: {ex.Message}");
                }
                Console.Write(".");
            }
            Console.WriteLine("");
        }
コード例 #21
0
ファイル: AdminReports.cs プロジェクト: AKROGIS/ThemeManager
        internal DataTable ListThemesNotFound(TmNode themeList, BackgroundWorker bw)
        {
            DataTable data = new DataTable();

            data.Columns.Add(new DataColumn("Category", typeof(string)));
            data.Columns.Add(new DataColumn("Theme", typeof(string)));
            data.Columns.Add(new DataColumn("File", typeof(string)));
            data.Columns.Add(new DataColumn("Error", typeof(string)));
            List <TmNode> nodes = themeList.Recurse(x => x.Children).Where(n => n.IsTheme).ToList();
            int           count = nodes.Count;
            int           index = 0;

            foreach (var theme in nodes)
            {
                if (string.IsNullOrEmpty(theme.Data.Path) || !File.Exists(theme.Data.Path))
                {
                    DataRow row = data.NewRow();
                    row["Category"] = theme.CategoryPath();
                    row["Theme"]    = theme.Name;
                    row["File"]     = theme.Data.Path;
                    if (string.IsNullOrEmpty(theme.Data.Path))
                    {
                        row["Error"] = "Theme has no file";
                    }
                    else
                    {
                        row["Error"] = "File not found";
                    }
                    data.Rows.Add(row);
                }
                index++;
                if (bw.CancellationPending)
                {
                    return(data);
                }
                bw.ReportProgress((int)(100 * (float)index / count));
            }
            return(data);
        }
コード例 #22
0
ファイル: MdbStore.cs プロジェクト: AKROGIS/ThemeManager
        private void FillTheme(TmNode node, int themeId)
        {
            //  A theme can have only themes for children.
            List <Theme> themes;

            _themesInThemes.TryGetValue(themeId, out themes);
            if (themes != null)
            {
                foreach (Theme theme in themes)
                {
                    TmNode newNode = new TmNode(TmNodeType.Theme,
                                                theme.Name,
                                                node,
                                                MakeThemeData(theme.Name, theme.DataSource, theme.Type),
                                                MakeMetadataForTheme(theme.Metadata),
                                                null,
                                                theme.PubDate
                                                );
                    node.Add(newNode);
                    FillTheme(newNode, theme.Id);
                }
            }
        }
コード例 #23
0
 public override void Save(TmNode node)
 {
     _xml = node.ToXElement();
     _xml.Save(_path);
 }
コード例 #24
0
        public override void Build(TmNode node)
        {
            if (node == null)
                throw new ArgumentNullException("TMNode is null");

            if (!_loaded)
                Load();
            if (Version[0] == '1')
            {
                // version 1 had no tbl_list, and hence no databaseInfo
                node.Name = _path;
            }
            if (Version[0] == '2')
            {
                node.Name = _databaseInfo.Name;
                if (!string.IsNullOrEmpty(_databaseInfo.Link))
                    node.Metadata = new Metadata(_databaseInfo.Link, MetadataType.Url, MetadataFormat.Html);
                node.Description = _databaseInfo.Description;
                if (_databaseInfo.HasAuthor)
                {
                    node.Author = _databaseInfo.Author;
                }
            }
            FillCategory(node, -1);
        }
コード例 #25
0
ファイル: ThemeBuilder.cs プロジェクト: AKROGIS/ThemeManager
 internal static async Task BuildSubThemesForMapDocumentAsync(TmNode node)
 {
     await BuildThemesForNodeAsync(node);
 }
コード例 #26
0
ファイル: Store.cs プロジェクト: AKROGIS/ThemeManager
 public virtual void Save(TmNode node)
 {
 }
コード例 #27
0
ファイル: MdbStore.cs プロジェクト: AKROGIS/ThemeManager
 public override void Save(TmNode node)
 {
     //FIXME - Implement Save;
     // check version and save appropriate to that version
     throw new NotImplementedException();
 }
コード例 #28
0
        private void FillCategory(TmNode node, int catId)
        {
            //  A category can have categories and/or themes for children.
            List<Category> cats;
            _categoriesInCategories.TryGetValue(catId, out cats);
            if (cats != null)
                foreach (Category cat in cats)
                {
                    TmNode newNode = new CategoryNode(
                        cat.Name,
                        node,
                        MakeMetadataForCategory(cat.Link),
                        cat.Description
                        );
                    node.Add(newNode);
                    FillCategory(newNode, cat.Id);
                }

            List<Theme> themes;
            _themesInCategories.TryGetValue(catId, out themes);
            if (themes != null)
                foreach (Theme theme in themes)
                {
                    TmNode newNode = new ThemeNode(
                        theme.Name,
                        node,
                        MakeThemeData(theme.Name, theme.DataSource, theme.Type),
                        MakeMetadataForTheme(theme.Metadata),
                        null,
                        theme.PubDate
                        );
                    node.Add(newNode);
                    FillTheme(newNode, theme.Id);
                }
        }
コード例 #29
0
 private void FillTheme(TmNode node, int themeId)
 {
     //  A theme can have only themes for children, we create new subtheme nodes..
     List<Theme> themes;
     _themesInThemes.TryGetValue(themeId, out themes);
     if (themes != null)
         foreach (Theme theme in themes)
         {
             TmNode newNode = new SubThemeNode(
                 theme.Name,
                 node,
                 MakeThemeData(theme.Name, theme.DataSource, theme.Type),
                 MakeMetadataForTheme(theme.Metadata),
                 null,
                 theme.PubDate
                 );
             node.Add(newNode);
             FillTheme(newNode, theme.Id);
         }
 }
コード例 #30
0
ファイル: Store.cs プロジェクト: AKROGIS/ThemeManager
 public virtual void Build(TmNode node)
 {
 }
コード例 #31
0
 public override void Save(TmNode node)
 {
     //FIXME - Implement Save;
     // check version and save appropriate to that version
     throw new NotImplementedException();
 }
コード例 #32
0
 public override void Build(TmNode node)
 {
     if (!IsThemeList)
         return;
     node.Load(_xml);
 }
コード例 #33
0
 public override void Save(TmNode node)
 {
     _xml = node.ToXElement();
     _xml.Save(_path);
 }
コード例 #34
0
ファイル: ThemeBuilder.cs プロジェクト: AKROGIS/ThemeManager
 internal static async Task BuildThemesForLayerFileAsync(TmNode node)
 {
     await BuildThemesForNodeAsync(node);
 }
コード例 #35
0
ファイル: Store.cs プロジェクト: regan-sarwas/ThemeManager3.0
 public virtual void Build(TmNode node) { }
コード例 #36
0
ファイル: Store.cs プロジェクト: regan-sarwas/ThemeManager3.0
 public virtual void Save(TmNode node) { }
コード例 #37
0
        internal TmNode BuildThemeFromId(int themeId)
        {
            if (!_loaded)
                Load();

            Theme theme = FindThemebyId(themeId);
            TmNode newNode = new TmNode(TmNodeType.Theme,
                theme.Name,
                null,
                MakeThemeData(theme.Name, theme.DataSource, theme.Type),
                MakeMetadataForTheme(theme.Metadata),
                null,
                theme.PubDate
                );
            FillTheme(newNode, themeId);
            return newNode;
        }