コード例 #1
0
        private void Open(string[] files)
        {
            var length = files.Length;

            for (int i = 0; i < length; i++)
            {
                var fileName = files[i];
                var tab      = XamlTabs.FirstOrDefault(t => t.FileName == fileName);
                if (tab != null)
                {
                    if (i == length - 1)
                    {
                        tab.IsSelected = true;
                        MoveToVisible(tab);
                    }
                }
                else
                {
                    tab = new TabViewModel(fileName, CloseXamlTab);
                    XamlTabs.Insert(0, tab);

                    if (i == length - 1)
                    {
                        tab.IsSelected = true;
                    }
                }
            }
        }
コード例 #2
0
        private void Remove(TabViewModel tab)
        {
            if (tab == null)
            {
                return;
            }

            var index = XamlTabs.IndexOf(tab);

            if (index > -1)
            {
                XamlTabs.RemoveAt(index);
            }

            if (XamlTabs.Count == 0)
            {
                New();
            }
            else
            {
                if (tab.IsSelected)
                {
                    XamlTabs[Math.Max(0, index - 1)].IsSelected = true;
                }
            }

            _appData.Config.Files.RemoveAll(f => f == tab.FileName);
        }
コード例 #3
0
        private void SizeChanged(SizeChangedEventArgs e)
        {
            var itemsControl = e.Source as ItemsControl;

            if (itemsControl == null)
            {
                return;
            }

            for (var i = 0; i < XamlTabs.Count; i++)
            {
                var curTab = XamlTabs[i];
                if (!curTab.IsSelected)
                {
                    continue;
                }

                var container = (UIElement)itemsControl.ItemContainerGenerator.ContainerFromIndex(i);
                if (container == null)
                {
                    return;
                }

                if (DoubleUtil.LessThan(container.TranslatePoint(new Point(), itemsControl).Y, itemsControl.ActualHeight))
                {
                    return;
                }

                XamlTabs.Move(i, i - 1);
                return;
            }
        }
コード例 #4
0
        private void Open()
        {
            var ofd = new SWF.OpenFileDialog {
                Filter = "XAML|*.xaml", Multiselect = true
            };

            if (ofd.ShowDialog() == SWF.DialogResult.OK)
            {
                var length = ofd.FileNames.Length;
                for (int i = 0; i < length; i++)
                {
                    var fileName = ofd.FileNames[i];
                    var tab      = XamlTabs.FirstOrDefault(t => t.FileName == fileName);
                    if (tab != null)
                    {
                        if (i == length - 1)
                        {
                            tab.IsSelected = true;
                            MoveToVisible(tab);
                        }
                    }
                    else
                    {
                        tab = new TabViewModel(fileName, CloseXamlTab);
                        XamlTabs.Insert(0, tab);

                        if (i == length - 1)
                        {
                            tab.IsSelected = true;
                        }
                    }
                }
            }
        }
コード例 #5
0
ファイル: TabsViewModel.cs プロジェクト: dlgcy/XamlViewer
        private void New()
        {
            var newTab =
                new TabViewModel(
                    XUCommon.GetCopyName("NewFile", " ",
                                         n => XamlTabs.Any(tab => Path.GetFileNameWithoutExtension(tab.Title).ToLower() == n.ToLower())) +
                    ".xaml", TabStatus.NoSave, CloseXamlTab);

            XamlTabs.Insert(0, newTab);
            newTab.IsSelected = true;
        }
コード例 #6
0
        private void Help()
        {
            var helpTab = XamlTabs.FirstOrDefault(tab => (tab.Status & TabStatus.Inner) == TabStatus.Inner && tab.FileName == InternalConstStrings.HelpFileName);

            if (helpTab == null)
            {
                helpTab = new TabViewModel(InternalConstStrings.HelpFileName, TabStatus.Inner, CloseXamlTab, false);
                XamlTabs.Insert(0, helpTab);

                helpTab.IsSelected = true;
            }
            else
            {
                helpTab.IsSelected = true;
                MoveToVisible(helpTab);
            }
        }
コード例 #7
0
        private void Help()
        {
            var helpTab = XamlTabs.FirstOrDefault(tab => (tab.Status & TabStatus.Inner) == TabStatus.Inner);

            if (helpTab == null)
            {
                helpTab = new TabViewModel("Help.xaml", TabStatus.Inner, CloseXamlTab);
                XamlTabs.Insert(0, helpTab);

                helpTab.IsSelected = true;
            }
            else
            {
                helpTab.IsSelected = true;
                MoveToVisible(helpTab);
            }
        }
コード例 #8
0
        private void OnInitWorkArea()
        {
            _isWorkAreaIniting = true;

            NewCommand.RaiseCanExecuteChanged();
            OpenCommand.RaiseCanExecuteChanged();
            SaveAllCommand.RaiseCanExecuteChanged();

            //Work Area
            var selectedTab = XamlTabs.FirstOrDefault(tab => tab.IsSelected);

            selectedTab?.InitWorkArea();

            _isWorkAreaIniting = false;

            NewCommand.RaiseCanExecuteChanged();
            OpenCommand.RaiseCanExecuteChanged();
            SaveAllCommand.RaiseCanExecuteChanged();
        }
コード例 #9
0
        private async Task DealExistedFile()
        {
            var validTabs   = XamlTabs.Where(tab => FileHelper.Exists(tab.FileName));
            var noSavedTabs = validTabs.Where(tab => (tab.Status & TabStatus.NoSave) == TabStatus.NoSave).ToList();

            if (noSavedTabs.Count > 0)
            {
                await Task.Run(() =>
                {
                    _appCommands.SaveAllCommand.Execute(true);

                    while (noSavedTabs.Any(tab => (tab.Status & TabStatus.NoSave) == TabStatus.NoSave))
                    {
                        Task.Delay(200);
                    }
                });
            }

            _appData.Config.Files = validTabs.Select(tab => tab.FileName).ToList();
        }
コード例 #10
0
        private void Open()
        {
            var ofd = new SWF.OpenFileDialog {
                Filter = "XAML|*.xaml"
            };

            if (ofd.ShowDialog() == SWF.DialogResult.OK)
            {
                var tab = XamlTabs.FirstOrDefault(t => t.FileName == ofd.FileName);
                if (tab != null)
                {
                    tab.IsSelected = true;
                    MoveToVisible(tab);
                }
                else
                {
                    var newTab = new TabViewModel(ofd.FileName, CloseXamlTab);
                    XamlTabs.Insert(0, newTab);
                    newTab.IsSelected = true;
                }
            }
        }
コード例 #11
0
        private void MoveToVisible(TabViewModel curTab)
        {
            if (_itemsControl == null || curTab == null)
            {
                return;
            }

            var container = (UIElement)_itemsControl.ItemContainerGenerator.ContainerFromItem(curTab);

            if (container == null)
            {
                return;
            }

            if (DoubleUtil.LessThan(container.TranslatePoint(new Point(), _itemsControl).Y, _itemsControl.ActualHeight))
            {
                return;
            }

            var idnex = _itemsControl.ItemContainerGenerator.IndexFromContainer(container);

            XamlTabs.Move(idnex, 0);
        }
コード例 #12
0
        private void Example(int?type)
        {
            if (type == null || !ResourcesMap.ExampleFileNameDic.ContainsKey(type.Value))
            {
                return;
            }

            var fileName = ResourcesMap.ExampleFileNameDic[type.Value];

            var exampleTab = XamlTabs.FirstOrDefault(tab => (tab.Status & TabStatus.Inner) == TabStatus.Inner && tab.FileName == fileName);

            if (exampleTab == null)
            {
                exampleTab = new TabViewModel(fileName, TabStatus.Inner, CloseXamlTab);
                XamlTabs.Insert(0, exampleTab);

                exampleTab.IsSelected = true;
            }
            else
            {
                exampleTab.IsSelected = true;
                MoveToVisible(exampleTab);
            }
        }
コード例 #13
0
 private void CollectExistedFile()
 {
     _appData.Config.Files = XamlTabs.Where(tab => File.Exists(tab.FileName)).Select(tab => tab.FileName).ToList();
 }