Пример #1
0
        /// <summary>
        /// Wire controls to viewmodels (etc).
        /// </summary>
        void SetupBindings()
        {
            cmbEdgeStyle.Changed += (s, e) => TheVM.TheDocument.EdgeStyle = cmbEdgeStyle.ActiveText;
            cmbNodeStyle.Changed += (s, e) => TheVM.TheDocument.NodeStyle = cmbNodeStyle.ActiveText;
            // todo!!
            cmbEdgeStyle.PopupMenu += (s, e) => { cmbEdgeStyle.Clear(); TheVM.TheDocument.TikzStyles.Each((s2, i) => cmbEdgeStyle.AppendText(s2)); };
            cmbNodeStyle.PopupMenu += (s, e) => { cmbNodeStyle.Clear(); TheVM.TheDocument.TikzStyles.Each((s2, i) => cmbNodeStyle.AppendText(s2)); };


            /*splitContainer2.Panel2.ClientSizeChanged += new EventHandler(Panel2_Resize);
             *
             * //rasterControl1.Resize += new EventHandler(Panel2_Resize);
             * rasterControl1.SizeChanged += new EventHandler(Panel2_Resize);
             * rasterControl1.MouseMove += new MouseEventHandler(rasterControl1_MouseMove);
             * rasterControl1.MouseWheel += new MouseEventHandler(rasterControl1_MouseWheel);
             *
             * rasterControl1.JumpToSource += new EventHandler<RasterControl.JumpToSourceEventArgs>(rasterControl1_JumpToSource);
             * rasterControl1.ReplaceText += new EventHandler<TikzEdt.Overlay.ReplaceTextEventArgs>(rasterControl1_ReplaceText);
             *
             *
             *
             *
             * dynamicPreamble.PreambleChanged += (s, e) => TheVM.DynamicPreamble = dynamicPreamble.Preamble;
             * TheVM.DynamicPreamble = dynamicPreamble.Preamble;
             *
             * //TheVM.NewCommandHandler(this, new System.Windows.Input.ExecutedRoutedEventArgs()) ;
             *
             *
             * // add bindings
             * rasterControl1.DataBindings.Add("ShowOverlay", cmdShowOverlay, "Checked");
             * rasterControl1.DataBindings.Add("UsePolarCoordinates", chkUsePolar, "Checked");
             *
             * // Note that the TheDocument.Document property is bound "automatically" by the hack described in the TextEditorDocumentWrapper class.
             * var sp = BindingFactory.CreateProvider(TheVM, "TheDocument", vm => vm.TheDocument);
             * BindingFactory.CreateBindingSP(sp, "ParseTree", doc => rasterControl1.ParseTree = doc.ParseTree, () => rasterControl1.ParseTree = null);
             *
             * BindingFactory.CreateBindingSP(sp, "PdfPath", doc => rasterControl1.PdfPath = doc.PdfPath, () => rasterControl1.PdfPath = "");
             * BindingFactory.CreateBindingSP(sp, "ReloadPdf", doc => rasterControl1.ReloadPdf = doc.ReloadPdf, null);
             * BindingFactory.CreateBindingSP(sp, "Resolution", doc => rasterControl1.Resolution = doc.Resolution, null);
             * BindingFactory.CreateBindingSP(sp, "CurrentBB", doc => rasterControl1.BB = doc.CurrentBB, null);
             * BindingFactory.CreateBindingSP(sp, "AllowEditing", doc => rasterControl1.AllowEditing = doc.AllowEditing, null);
             * BindingFactory.CreateBindingSP(sp, "EdgeStyle", doc => rasterControl1.EdgeStyle = doc.EdgeStyle, null);
             * BindingFactory.CreateBindingSP(sp, "NodeStyle", doc => rasterControl1.NodeStyle = doc.NodeStyle, null);
             * BindingFactory.CreateBindingSP(sp, "Resolution", doc => toolStripZoomCtrlItem1.ZoomCtrl.Value = Convert.ToInt32(doc.Resolution), null);
             * toolStripZoomCtrlItem1.ZoomCtrl.ValueChanged += (s, e) => TheVM.TheDocument.Resolution = toolStripZoomCtrlItem1.ZoomCtrl.Value;
             * BindingFactory.CreateBindingSP(sp, "DisplayString", doc => this.Text = "TikzEdt - " + doc.DisplayString, () => this.Text = "TikzEdt");
             * BindingFactory.CreateBindingSP(sp, "IsStandAlone", doc => lblStandAlone.Visible = doc.IsStandAlone, () => lblStandAlone.Visible = false);
             *
             *
             * BindingFactory.CreateBinding(TheVM, "RasterRadialOffset", vm =>
             * { txtRadialOffset.TextBox.Text = vm.RasterRadialOffset.ToString(); rasterControl1.RadialOffset = vm.RasterRadialOffset; }, null);
             * BindingFactory.CreateBinding(TheVM, "RasterSteps", vm =>
             * { txtRadialSteps.TextBox.Text = vm.RasterSteps.ToString(); rasterControl1.RasterRadialSteps = (uint)vm.RasterSteps; }, null);
             * BindingFactory.CreateBinding(TheVM, "RasterWidth", vm =>
             * { cmbGrid.ComboBox.Text = vm.RasterWidth.ToString(); rasterControl1.RasterWidth = vm.RasterWidth; }, null);
             * txtRadialOffset.TextChanged += (s, e) =>
             * {
             *  double d;
             *  if (Double.TryParse(txtRadialOffset.TextBox.Text, out d))
             *      TheVM.RasterRadialOffset = d;
             * };
             * txtRadialSteps.TextChanged += (s, e) =>
             * {
             *  uint d;
             *  if (UInt32.TryParse(txtRadialSteps.TextBox.Text, out d))
             *      TheVM.RasterSteps = (int)d;
             * };
             * cmbGrid.ComboBox.TextChanged += (s, e) =>
             * {
             *  double d;
             *  if (Double.TryParse(cmbGrid.ComboBox.Text, out d))
             *      TheVM.RasterWidth = d;
             * };
             *
             * rasterControl1.ToolChanged += (sender, e) => TheVM.CurrentTool = rasterControl1.Tool;
             *
             * BindingFactory.CreateBinding(TheVM, "EditorMode", vm =>
             * {
             *  wYSIWYGToolStripMenuItem.Checked = vm.EditorMode == TEMode.Wysiwyg;
             *  productionToolStripMenuItem.Checked = vm.EditorMode == TEMode.Production;
             *  previewToolStripMenuItem.Checked = vm.EditorMode == TEMode.Preview;
             * }, null);
             *
             * var errlistsp = BindingFactory.CreateProviderSP(sp, "TexErrors", doc => doc.TexErrors);
             * BindingFactory.CreateCollectionBindingSP(errlistsp, (s, e) => FillErrorsList());
             *
             * BindingFactory.CreateBinding(TheVM, "CurrentTool",
             *  vm =>
             *  {
             *      ToolButtons.Each((tsb, i) => tsb.Checked = ((int)vm.CurrentTool == i));
             *      rasterControl1.Tool = vm.CurrentTool;
             *  }, null);
             *
             * BindingFactory.CreateBinding(TheCompiler.Instance, "Compiling",
             *  (c) => { cmdAbortCompile.Enabled = abortCompilationToolStripMenuItem.Enabled = c.Compiling; },
             *  () => { cmdAbortCompile.Enabled = abortCompilationToolStripMenuItem.Enabled = true; });
             *
             *
             * // load settings
             * var S = Properties.Settings.Default;
             * Width = S.Window_Width;
             * Height = S.Window_Height;
             * SizeChanged += (s, e) => { Properties.Settings.Default.Window_Height = Height; Properties.Settings.Default.Window_Width = Width; };
             *
             * this.Left = S.Window_Left;
             * this.Top = S.Window_Top;
             * LocationChanged += (s, e) => { Properties.Settings.Default.Window_Top = Top; Properties.Settings.Default.Window_Left = Left; };
             *
             * WindowState = S.Window_State;
             * ClientSizeChanged += (s, e) => Properties.Settings.Default.Window_State = this.WindowState;
             *
             * try
             * {
             *  splitContainer2.SplitterDistance = S.OverlayCanvasCol2WidthSetting;
             *  splitContainer1.SplitterDistance = S.LeftToolsColWidthSetting;
             * }
             * catch (Exception) { }
             * splitContainer2.SplitterMoved += (s, e) => Properties.Settings.Default.OverlayCanvasCol2WidthSetting = splitContainer2.SplitterDistance;
             * splitContainer1.SplitterMoved += (s, e) => Properties.Settings.Default.LeftToolsColWidthSetting = splitContainer1.SplitterDistance;
             *
             * BindingFactory.CreateBinding(S, "Editor_ShowLineNumbers", s => txtCode.ShowLineNumbers = s.Editor_ShowLineNumbers, null);
             * BindingFactory.CreateBinding(S, "Editor_Font", s => txtCode.Font = s.Editor_Font, null);
             * BindingFactory.CreateBinding(S, "Snippets_ShowThumbs", s => snippetList1.ShowThumbnails = s.Snippets_ShowThumbs, null);
             *
             * BindingFactory.CreateBinding(S, "Snippets_ShowThumbs", s =>
             * {
             *  autoCompilationOnChangeToolStripMenuItem.Checked = s.AutoCompileOnDocumentChange;
             *  TheVM.AutoCompileOnDocumentChange = s.AutoCompileOnDocumentChange;
             * }, null);
             * autoCompilationOnChangeToolStripMenuItem.CheckedChanged += (s, e) =>
             * {
             *  S.AutoCompileOnDocumentChange = TheVM.AutoCompileOnDocumentChange = autoCompilationOnChangeToolStripMenuItem.Checked;
             * };*/

            // Note that the TheDocument.Document property is bound "automatically" by the hack described in the TextEditorDocumentWrapper class.
            var sp = BindingFactory.CreateProvider(TheVM, "TheDocument", vm => vm.TheDocument);

            BindingFactory.CreateBindingSP(sp, "ParseTree", doc => rasterControl1.ParseTree = doc.ParseTree, () => rasterControl1.ParseTree = null);

            BindingFactory.CreateBindingSP(sp, "PdfPath", doc => rasterControl1.PdfPath           = doc.PdfPath, () => rasterControl1.PdfPath = "");
            BindingFactory.CreateBindingSP(sp, "ReloadPdf", doc => rasterControl1.ReloadPdf       = doc.ReloadPdf, null);
            BindingFactory.CreateBindingSP(sp, "Resolution", doc => rasterControl1.Resolution     = doc.Resolution, null);
            BindingFactory.CreateBindingSP(sp, "CurrentBB", doc => rasterControl1.BB              = doc.CurrentBB, null);
            BindingFactory.CreateBindingSP(sp, "AllowEditing", doc => rasterControl1.AllowEditing = doc.AllowEditing, null);
            BindingFactory.CreateBindingSP(sp, "EdgeStyle", doc => rasterControl1.EdgeStyle       = doc.EdgeStyle, null);
            BindingFactory.CreateBindingSP(sp, "NodeStyle", doc => rasterControl1.NodeStyle       = doc.NodeStyle, null);
            BindingFactory.CreateBindingSP(sp, "Resolution", doc => scZoom.Value = Convert.ToInt32(doc.Resolution), null);
            scZoom.ValueChanged += (s, e) => TheVM.TheDocument.Resolution = scZoom.Value;
            BindingFactory.CreateBindingSP(sp, "DisplayString", doc => this.Title           = "TikzEdt - " + doc.DisplayString, () => this.Title = "TikzEdt");
            BindingFactory.CreateBindingSP(sp, "IsStandAlone", doc => lblStandAlone.Visible = doc.IsStandAlone, () => lblStandAlone.Visible = false);


            BindingFactory.CreateBinding(TheVM, "RasterRadialOffset", vm =>
                                         { txtRadialOffset.Value = vm.RasterRadialOffset; rasterControl1.RadialOffset = vm.RasterRadialOffset; }, null);
            BindingFactory.CreateBinding(TheVM, "RasterSteps", vm =>
                                         { txtRadialSteps.Value = vm.RasterSteps; rasterControl1.RasterRadialSteps = (uint)vm.RasterSteps; }, null);
            BindingFactory.CreateBinding(TheVM, "RasterWidth", vm =>
                                         { cmbGrid.Entry.Text = vm.RasterWidth.ToString(); rasterControl1.RasterWidth = vm.RasterWidth; }, null);
            txtRadialOffset.ValueChanged += (s, e) =>
            {
                //double d;
                //if (Double.TryParse(txtRadialOffset.TextBox.Text, out d))
                TheVM.RasterRadialOffset = txtRadialOffset.Value;
            };
            txtRadialSteps.ValueChanged += (s, e) =>
            {
                //uint d;
                //if (UInt32.TryParse(txtRadialSteps.TextBox.Text, out d))
                TheVM.RasterSteps = txtRadialSteps.ValueAsInt;
            };
            cmbGrid.Changed += (s, e) =>
            {
                double d;
                if (Double.TryParse(cmbGrid.ActiveText, out d))
                {
                    TheVM.RasterWidth = d;
                }
            };

            rasterControl1.ToolChanged += (sender, e) => TheVM.CurrentTool = rasterControl1.Tool;

            BindingFactory.CreateBinding(TheVM, "CurrentTool",
                                         vm =>
            {
                ToolButtons.Each((tsb, i) => tsb.SetChecked((int)vm.CurrentTool == i));
                rasterControl1.Tool = vm.CurrentTool;
            }, null);

            BindingFactory.CreateBinding(TheCompiler.Instance, "Compiling",
                                         (c) => { cmdAbortCompile.Sensitive = abortCompilationToolStripMenuItem.Sensitive = c.Compiling; },
                                         () => { cmdAbortCompile.Sensitive = abortCompilationToolStripMenuItem.Sensitive = true; });
        }