Exemple #1
0
        public void SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            System.Windows.Controls.TabControl Control = sender as System.Windows.Controls.TabControl;
            if (Control != null)
            {
                if (Control.SelectedIndex >= 0)
                {
                    TabItem item       = Control.SelectedItem as TabItem;
                    Grid    EditorGrid = item.Content as Grid;
                    Core.Controller.Main.CurrentEditor = EditorGrid.Children[0] as ICSharpCode.AvalonEdit.TextEditor;

                    Core.Controller.Main.StatusBarItems[(int)Structures.StatusBar.Line].Content   = Core.Properties.Resources.Line + ": " + Core.Controller.Main.CurrentEditor.TextArea.Caret.Line;
                    Core.Controller.Main.StatusBarItems[(int)Structures.StatusBar.Column].Content = Core.Properties.Resources.Column + ": " + Core.Controller.Main.CurrentEditor.TextArea.Caret.Column;

                    Core.Controller.Tab Index = Core.Controller.Main.TabControlList.Find(x => x.TabItem == item);
                    if (Index != null)
                    {
                        if (Index.Tmp == true)
                        {
                            Core.Controller.Main.CompileMenuItem.IsEnabled = false;
                        }
                        else
                        {
                            Core.Controller.Main.CompileMenuItem.IsEnabled = true;
                        }
                    }
                }
                else
                {
                    GC.ReRegisterForFinalize(Core.Controller.Main.CurrentEditor);
                    GC.Collect();
                    Core.Controller.Main.CurrentEditor = null;
                }
            }
        }
Exemple #2
0
        internal static void CloseAllBut_DoWork(object sender, DoWorkEventArgs e)
        {
            Core.Controller.Main.tabControl.Dispatcher.Invoke(new Action(() =>
            {
                MenuItem CloseAll_But = e.Argument as MenuItem;
                Grid grid             = null;

                Core.Controller.Tab NoClose = Core.Controller.Main.TabControlList.Find(x => x.CloseAllBut.Uid == CloseAll_But.Uid);

                ushort index = 0;
                Core.Controller.Tab Index = null;
                while (Core.Controller.Main.TabControlList.Count > 0 + index)
                {
                    Index = Core.Controller.Main.TabControlList[index];
                    if (NoClose == Index)
                    {
                        index++;
                        continue;
                    }

                    Index.Editor.Clear();
                    grid         = Index.TabItem.Content as Grid;
                    Index.Editor = null;
                    grid.Children.Remove(Index.Editor);
                    grid = null;
                    Core.Controller.Main.TabControlList.Remove(Index);

                    Index.TabItem.ContextMenu.Items.Clear();
                    Core.Controller.Main.tabControl.Items.Remove(Index.TabItem);
                }
            }));
        }
Exemple #3
0
        internal void SaveItem_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            MenuItem SaveItem = sender as MenuItem;

            Core.Controller.Tab Index = Core.Controller.Main.TabControlList.Find(x => x.Save.Uid == SaveItem.Uid);
            Tab.SaveTab(Index.TabItem);
        }
Exemple #4
0
        internal void RenameItem_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            MenuItem RenameItem = sender as MenuItem;

            Core.Controller.Tab Index = Core.Controller.Main.TabControlList.Find(x => x.Rename.Uid == RenameItem.Uid);

            SaveFileDialog saveFileDialog = new SaveFileDialog()
            {
                OverwritePrompt = true,
                Filter          = Core.Properties.Resources.FileFilter,
                Title           = Core.Properties.Resources.SaveFile
            };

            string HeaderText = Tab.GetTabHeaderText(Index.TabItem);

            saveFileDialog.FileName = HeaderText;
            if (saveFileDialog.ShowDialog() == true)
            {
                System.Text.StringBuilder FileToSave = new System.Text.StringBuilder();
                FileToSave.Append(Index.TabItem.Uid);
                FileToSave.Append(HeaderText);
                string file = FileToSave.ToString();
                if (File.Exists(file))
                {
                    File.Delete(file);
                }
                Tab.SaveTab(Index.TabItem, saveFileDialog);
                Tab.UpdateTabHeaderText(Index.TabItem, saveFileDialog.SafeFileName);
            }
        }
Exemple #5
0
 public void CountClick(object sender, RoutedEventArgs e)
 {
     Core.Controller.Tab Index = Core.Controller.Main.TabControlList.Find(x => x.TabItem == (Core.Controller.Main.tabControl.Items[Core.Controller.Main.tabControl.SelectedIndex] as TabItem));
     if (Index != null)
     {
         Core.Controller.Search.LastSearchTyp = Structures.LastSearch.Count;
         Search.DoCount(Index, Core.Controller.Search.SearchBox);
     }
 }
Exemple #6
0
 public void SearchClick(object sender, RoutedEventArgs e)
 {
     Core.Controller.Tab Index = Core.Controller.Main.TabControlList.Find(x => x.TabItem == (Core.Controller.Main.tabControl.Items[Core.Controller.Main.tabControl.SelectedIndex] as TabItem));
     if (Index != null)
     {
         Core.Controller.Search.LastSearchTyp     = Structures.LastSearch.Search;
         Core.Controller.Search.SearchBeginOffset = Index.Editor.CaretOffset;
         Search.DoSearch(Index, Core.Controller.Search.SearchBox);
     }
 }
Exemple #7
0
        internal static void Save_Completed(object sender, RunWorkerCompletedEventArgs e)
        {
            TabItem item = Core.Controller.Main.tabControl.SelectedItem as TabItem;

            Core.Controller.Tab Index = Core.Controller.Main.TabControlList.Find(x => x.TabItem == item);
            if (Index != null)
            {
                if (Index.Tmp == false)
                {
                    Core.Controller.Worker.CompileWorker.RunWorkerAsync();
                }
            }
        }
Exemple #8
0
        internal static void CloseFile(Core.Controller.Tab Index)
        {
            if (!Index.State.HasFlag(Structures.States.Saved))
            {
                MessageBoxResult result = MessageBox.Show(Core.Properties.Resources.CloseSave, Core.Properties.Resources.CloseSaveHeader, MessageBoxButton.YesNo, MessageBoxImage.Warning);
                if (result == MessageBoxResult.Yes)
                {
                    Core.Utility.Tab.SaveTab(Index.TabItem);
                }
            }

            if (Index.TabItem == Core.Controller.Main.CompiledTabItem)
            {
                Core.Utility.Tab.RemoveTempTabs();
                Core.Controller.Main.CompiledTabItem = null;

                Core.Controller.Main.CompilerPanel.Visibility = Visibility.Collapsed;

                Core.Controller.Main.PanelHeight = Core.Controller.Main.MainView.RowDefinitions[(int)Structures.MainView.CompilerPanel];
                Core.Controller.Main.MainView.RowDefinitions[(int)Structures.MainView.CompilerPanel] = new RowDefinition()
                {
                    Height    = new GridLength(0),
                    MinHeight = 0
                };
                Core.Controller.Main.MainView.RowDefinitions[(int)Structures.MainView.GridSplitter].Height = new GridLength(0);

                GridSplitter Splitter = Core.Controller.Main.MainView.Children[(int)Structures.MainView.GridSplitter] as GridSplitter;
                Splitter.Visibility = Visibility.Collapsed;
                Splitter.IsEnabled  = false;
            }

            Index.Editor.Clear();
            Grid grid = Index.TabItem.Content as Grid;

            Index.Editor = null;
            grid.Children.Remove(Index.Editor);
            Core.Controller.Main.TabControlList.Remove(Index);

            Index.TabItem.ContextMenu.Items.Clear();
            Core.Controller.Main.tabControl.Items.Remove(Index.TabItem);
            if (Core.Controller.Main.tabControl.Items.Count == 0)
            {
                Core.Utility.Toggle.TabControl(false);
                Core.Utility.Toggle.SaveOptions(false);
                Core.Controller.Main.CompileMenuItem.IsEnabled = false;
                Core.Controller.Main.StatusBarItems[(int)Structures.StatusBar.Line].Visibility   = Visibility.Collapsed;
                Core.Controller.Main.StatusBarItems[(int)Structures.StatusBar.Column].Visibility = Visibility.Collapsed;
            }
            GC.ReRegisterForFinalize(Index);
            GC.Collect();
        }
Exemple #9
0
        public void FindNext(object sender, ExecutedRoutedEventArgs e)
        {
            Core.Controller.Search.CurrentSearchIndex++;

            Core.Controller.Tab Index = Core.Controller.Main.TabControlList.Find(x => x.TabItem == (Core.Controller.Main.tabControl.Items[Core.Controller.Main.tabControl.SelectedIndex] as TabItem));
            if (Index != null)
            {
                if (Core.Controller.Search.CurrentSearchIndex < Index.SearchList.Count)
                {
                    Core.Utility.Editor.SelectAndBringToView(Index.Editor, Index.SearchList[Core.Controller.Search.CurrentSearchIndex].Index, Core.Controller.Search.CurrentSearch.Length);
                }
                else
                {
                    MessageBox.Show(Core.Properties.Resources.NoFurtherResult, Core.Properties.Resources.ProgName, MessageBoxButton.OK, MessageBoxImage.Information);
                }
            }
        }
Exemple #10
0
 public void DoSearchReplaceClick(object sender, RoutedEventArgs e)
 {
     Core.Controller.Tab Index = Core.Controller.Main.TabControlList.Find(x => x.TabItem == (Core.Controller.Main.tabControl.Items[Core.Controller.Main.tabControl.SelectedIndex] as TabItem));
     if (Index != null)
     {
         if (Core.Controller.Search.LastSearchTyp == Structures.LastSearch.Replace || Core.Controller.Search.LastSearchTyp == Structures.LastSearch.ReplaceSearch)
         {
             Core.Controller.Search.CurrentSearchIndex++;
             Core.Utility.Editor.SelectAndBringToView(Index.Editor, Index.SearchList[Core.Controller.Search.CurrentSearchIndex].Index, Core.Controller.Search.CurrentSearch.Length);
             Core.Controller.Search.LastSearchTyp = Structures.LastSearch.ReplaceSearch;
         }
         else
         {
             Core.Controller.Search.LastSearchTyp = Structures.LastSearch.ReplaceSearch;
             Search.DoSearch(Index, Core.Controller.Replace.SearchBox_Replace);
         }
     }
 }
Exemple #11
0
 internal void Document_Changed(object sender, DocumentChangeEventArgs e)
 {
     Core.Controller.Tab Index = Core.Controller.Main.TabControlList.Find(x => x.Editor.Document == (sender as TextDocument));
     if (Index != null)
     {
         if (!Index.State.HasFlag(Structures.States.Changed))
         {
             Index.State &= ~Structures.States.Saved;
             Toggle.UnsavedMark(Index.TabItem, true);
         }
         Index.State |= Structures.States.Changed;
         if (Index.SearchList.Count > 0)
         {
             // Adding the new offset to the Search Index
             for (int i = Core.Controller.Search.CurrentSearchIndex; i != Index.SearchList.Count; i++)
             {
                 Index.SearchList[i].Index += (e.InsertionLength > 0) ? e.InsertionLength : -e.RemovalLength;
             }
         }
     }
 }
Exemple #12
0
        public void DoReplace(object sender, RoutedEventArgs e)
        {
            Core.Controller.Tab Index = Core.Controller.Main.TabControlList.Find(x => x.TabItem == (Core.Controller.Main.tabControl.Items[Core.Controller.Main.tabControl.SelectedIndex] as TabItem));
            if (Index != null)
            {
                Core.Controller.Search.CurrentSearchIndex++;
                if (Core.Controller.Search.CurrentSearch != Core.Controller.Replace.SearchBox_Replace.Text) // do a new search
                {
                    Core.Controller.Search.LastSearchTyp     = Structures.LastSearch.Replace;
                    Core.Controller.Search.SearchBeginOffset = Index.Editor.CaretOffset;
                    Index.SearchList = Search.FindString(Index.Editor, Core.Controller.Replace.SearchBox_Replace.Text, false);
                    Core.Controller.Search.CurrentSearchIndex = 0;
                    Core.Controller.Search.CurrentSearch      = Core.Controller.Replace.SearchBox_Replace.Text;
                }

                // if a "Replace"match were skiped and then replace where clicked
                if (Core.Controller.Search.LastSearchTyp == Structures.LastSearch.ReplaceSearch)
                {
                    Core.Controller.Search.CurrentSearchIndex--;
                    Core.Controller.Search.LastSearchTyp = Structures.LastSearch.Replace;
                }

                // if a Search is already done with the "normal" Search, jump to the top
                if (Core.Controller.Search.LastSearchTyp != Structures.LastSearch.Replace)
                {
                    Core.Controller.Search.CurrentSearchIndex = 0;
                    Core.Controller.Search.LastSearchTyp      = Structures.LastSearch.Replace;
                }

                if (Core.Controller.Search.CurrentSearchIndex < Index.SearchList.Count)
                {
                    int offset = Index.SearchList[Core.Controller.Search.CurrentSearchIndex].Index;
                    int lenght = Core.Controller.Replace.SearchBox_Replace.Text.Length;
                    Index.Editor.Document.Replace(offset, lenght, Core.Controller.Replace.ReplaceBox.Text);

                    Core.Utility.Editor.SelectAndBringToView(Index.Editor, offset, lenght);
                }
            }
        }
Exemple #13
0
        public void OpenFileClick(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog()
            {
                Filter = Core.Properties.Resources.FileFilter,
                Title  = Core.Properties.Resources.OpenFile
            };

            if (openFileDialog.ShowDialog() == true)
            {
                Core.Controller.Tab Index = Core.Controller.Main.TabControlList.Find(x => (x.TabItem.Uid + Tab.GetTabHeaderText(x.TabItem)) == openFileDialog.FileName);
                if (Index != null)
                {
                    return;
                }

                FileStream stream    = new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.Read);
                Generator  generator = new Generator();
                TabItem    tab       = generator.TabItem(openFileDialog.FileName, openFileDialog.SafeFileName, stream);

                Core.Controller.Main.tabControl.Items.Add(tab);
                Core.Controller.Main.tabControl.SelectedItem = tab;

                Toggle.TabControl(true);

                if (Core.Controller.Main.tabControl.Items.Count == 1)
                {
                    Toggle.SaveOptions(true);
                    Core.Controller.Main.CompileMenuItem.IsEnabled = true;
                    Core.Controller.Main.StatusBarItems[(int)Structures.StatusBar.Line].Visibility   = Visibility.Visible;
                    Core.Controller.Main.StatusBarItems[(int)Structures.StatusBar.Column].Visibility = Visibility.Visible;
                    Core.Controller.Main.StatusBarItems[(int)Structures.StatusBar.Line].Content      = Core.Properties.Resources.Line + ": 0";
                    Core.Controller.Main.StatusBarItems[(int)Structures.StatusBar.Column].Content    = Core.Properties.Resources.Column + ": 1";
                }
                stream.Dispose();
            }
            GC.ReRegisterForFinalize(openFileDialog);
        }
Exemple #14
0
        internal static void CloseAll_DoWork(object sender, DoWorkEventArgs e)
        {
            Core.Controller.Tab Index = null;
            Grid grid = null;

            Core.Controller.Main.tabControl.Dispatcher.Invoke(new Action(() =>
            {
                while (Core.Controller.Main.TabControlList.Count > 0)
                {
                    Index = Core.Controller.Main.TabControlList[0];

                    Index.Editor.Clear();
                    grid         = Index.TabItem.Content as Grid;
                    Index.Editor = null;
                    grid.Children.Remove(Index.Editor);
                    grid = null;
                    Core.Controller.Main.TabControlList.Remove(Index);

                    Index.TabItem.ContextMenu.Items.Clear();
                    Core.Controller.Main.tabControl.Items.Remove(Index.TabItem);
                }
            }));
        }
Exemple #15
0
        // Replace
        public void DoReplaceAll(object sender, RoutedEventArgs e)
        {
            Core.Controller.Tab Index = Core.Controller.Main.TabControlList.Find(x => x.TabItem == (Core.Controller.Main.tabControl.Items[Core.Controller.Main.tabControl.SelectedIndex] as TabItem));
            if (Index != null)
            {
                Core.Controller.Search.LastSearchTyp = Structures.LastSearch.ReplaceAll;
                Index.SearchList = Search.FindString(Index.Editor, Core.Controller.Replace.SearchBox_Replace.Text, false);
                Core.Controller.Search.CurrentSearchIndex = 0;
                Core.Controller.Search.CurrentSearch      = Core.Controller.Replace.SearchBox_Replace.Text;

                int offset = 0;
                int lenght = Core.Controller.Replace.SearchBox_Replace.Text.Length;
                for (int i = 0; i != Index.SearchList.Count; i++)
                {
                    offset = Index.SearchList[i].Index;
                    Index.Editor.Document.Replace(offset, lenght, Core.Controller.Replace.ReplaceBox.Text);
                }

                if (Index.SearchList.Count > 0)
                {
                    Index.SearchList.Clear();
                }
            }
        }
Exemple #16
0
        internal void MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            System.Windows.Controls.ListBoxItem Item = sender as System.Windows.Controls.ListBoxItem;

            string[] matches = Regex.Split(Item.Uid, @"[\|]+"); // 0 = Path | 1 = Line -> Size = 2

            if (matches.Length == 2)
            {
                Core.Controller.Tab Index = Core.Controller.Main.TabControlList.Find(x => x.TabItem == Core.Controller.Main.CompiledTabItem);
                if (Index != null)
                {
                    string HeaderText = Core.Utility.Tab.GetTabHeaderText(Index.TabItem);
                    if (matches[0].Equals(HeaderText, StringComparison.CurrentCultureIgnoreCase))
                    {
                        if (Regex.IsMatch(matches[1], @"^\d+$"))
                        {
                            Core.Utility.Editor.BringLineToView(Core.Controller.Main.CurrentEditor, Convert.ToInt32(matches[1], CultureInfo.InvariantCulture.NumberFormat));
                            Core.Controller.Main.tabControl.SelectedItem = Core.Controller.Main.CompiledTabItem;
                        }
                    }
                    else if (File.Exists(matches[0]))
                    {
                        int    slash = matches[0].LastIndexOf('\\') + 1;
                        string path  = matches[0].Substring(0, slash);
                        string file  = matches[0].Substring(slash, matches[0].Length - slash);

                        List <Core.Controller.Tab> TabList = Core.Controller.Main.TabControlList.FindAll(x => x.TabItem.Uid.Equals(path, StringComparison.CurrentCultureIgnoreCase));
                        if (TabList != null && TabList.Count > 0)
                        {
                            string Header = null;
                            for (int i = 0; i != TabList.Count; i++)
                            {
                                Header = Core.Utility.Tab.GetTabHeaderText(TabList[i].TabItem);
                                if (matches[0].Equals(path + Header, StringComparison.CurrentCultureIgnoreCase))
                                {
                                    if (Regex.IsMatch(matches[1], @"^\d+$"))
                                    {
                                        Core.Controller.Main.tabControl.SelectedItem = TabList[i].TabItem;
                                        Core.Utility.Editor.BringLineToView(Core.Controller.Main.CurrentEditor, Convert.ToInt32(matches[1], CultureInfo.InvariantCulture.NumberFormat));
                                    }
                                    return;
                                }
                            }
                        }
                        // When the File isn't already open, then open the file and create a tmpTab
                        FileStream stream    = new FileStream(matches[0], FileMode.Open, FileAccess.Read);
                        Generator  generator = new Generator();
                        TabItem    tab       = generator.TmpTabItem(matches[0], file, stream);

                        Core.Controller.Main.tabControl.Items.Add(tab);
                        Core.Controller.Main.tabControl.SelectedItem = tab;
                        stream.Dispose();

                        if (Regex.IsMatch(matches[1], @"^\d+$"))
                        {
                            Core.Utility.Editor.BringLineToView(Core.Controller.Main.CurrentEditor, Convert.ToInt32(matches[1], CultureInfo.InvariantCulture.NumberFormat));
                        }
                    }
                }
            }
        }