private void LohnabrechnungenAnzeigen_Load(object sender, EventArgs e)
        {
            Region = Region.FromHrgn(CreateRoundRectRgn(0, 0, 728, 555, 20, 20));
            var cst = new CustomColorTable();

            menuStrip1.Renderer = new myRenderer(cst);

            foreach (string t in lr)
            {
                MitarbeiterAuswählen.Items.Add(t);
            }

            button2.FlatAppearance.BorderColor  = Color.DarkSlateGray;
            button10.FlatAppearance.BorderColor = Color.DarkSlateGray;
            combo.HeaderText                = "Überstundenkennung";
            combo.FlatStyle                 = FlatStyle.Flat;
            dataGridView1.BorderStyle       = BorderStyle.None;
            dataGridView1.RowHeadersVisible = false;
            dataGridView1.Columns.Add(combo);
            dataGridView1.Columns.Add("Überstundensatz", "Überstundensatz");
            dataGridView1.Columns.Add("Überstundenanzahl", "Überstundenanzahl");
            dataGridView1.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dataGridView1.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dataGridView1.Columns[0].Width = 140;
            dataGridView1.Columns[1].Width = 120;
            dataGridView1.Columns[2].Width = 120;
        }
        public LohnabrechnungenAnzeigen()
        {
            InitializeComponent();
            sql.OpenCon();
            Region = Region.FromHrgn(CreateRoundRectRgn(0, 0, 638, 600, 20, 20));
            var cst = new CustomColorTable();

            menuStrip1.Renderer = new myRenderer(cst);
        }
Beispiel #3
0
        private void InitializeComponent()
        {
            this.SuspendLayout();
            //
            // CustomColorsToolStrip
            //

            CustomColorTable colorTable = new CustomColorTable(this.BackColor);

            this.Renderer = new ToolStripProfessionalRenderer(colorTable);

            this.ResumeLayout(false);
        }
Beispiel #4
0
        private void AdministrativerBereich_Load(object sender, EventArgs e)
        {
            System.Threading.Thread.Sleep(10);
            Meldung mld = new Meldung();

            mld.Show();
            mld.Close();
            PW            = panel1.Height;
            panel1.Height = 0;
            Hided         = true;
            sql           = new SQL();
            sql.OpenCon();
            dt1.Clear();
            dt2.Clear();
            dt3.Clear();
            dt4.Clear();
            dt5.Clear();
            button2.FlatAppearance.BorderColor = Color.DarkSlateGray;

            button10.FlatAppearance.BorderColor = Color.DarkSlateGray;
            pictureBox2.Visible = false;
            Region = Region.FromHrgn(CreateRoundRectRgn(0, 0, 591, 510, 20, 20));
            var cst = new CustomColorTable();

            menuStrip1.Renderer    = new myRenderer(cst);
            tabControl1.Appearance = TabAppearance.Buttons;
            tabControl1.SizeMode   = TabSizeMode.Fixed;
            dt1 = sql.loadData("Select * from Abteilung", AbteilungenDT);
            dt2 = sql.loadData("Select * from Arbeitsstunden", ArbeitsstundenDT);
            dt3 = sql.loadData("Select * from Bonuszahlung", BonuszahlungDT);
            dt4 = sql.loadData("Select * from Lohngruppe", LohngruppenDT);
            dt5 = sql.loadData("Select * from Überstundenkennung", ÜberstundenDT);
            dataGridView1.DataSource          = dt1;
            dataGridView2.DataSource          = dt2;
            dataGridView3.DataSource          = dt3;
            dataGridView4.DataSource          = dt4;
            dataGridView5.DataSource          = dt5;
            dataGridView2.Columns[0].ReadOnly = true;
            dataGridView2.Columns[1].ReadOnly = true;
            dataGridView3.Columns[0].ReadOnly = true;
            dataGridView3.Columns[1].ReadOnly = true;
            dataGridView4.Columns[0].ReadOnly = true;
            dataGridView4.Columns[1].ReadOnly = true;
            dataGridView4.Columns[2].ReadOnly = true;
            dataGridView5.Columns[0].ReadOnly = true;
            dataGridView5.Columns[1].ReadOnly = true;
            dataGridView1.Columns[1].Width    = 360;
            dataGridView5.Columns[1].Width    = 142;
            dataGridView5.Columns[0].Width    = 140;
        }
        private void MitarbeiterAnzeigen_Load(object sender, EventArgs e)
        {
            button4.FlatAppearance.BorderColor = Color.DarkSlateGray;

            button10.FlatAppearance.BorderColor = Color.DarkSlateGray;
            loop   = true;
            Region = Region.FromHrgn(CreateRoundRectRgn(0, 0, 455, 409, 20, 20));
            var cst = new CustomColorTable();

            menuStrip1.Renderer  = new myRenderer(cst);
            Mitarbeiterauflisten =
                sql.dataReader("Select MA_Abrechnungsnummer,  Mitarbeitervorname, Mitarbeiternachname, Abteilungsnummer from Mitarbeiter where Aktiv = true order by MA_Abrechnungsnummer",
                               Attributes, new string[] { "Int32", "String", "String", "Int32" });
            Abrechnungsnummern = sql.dataReader("Select MA_Abrechnungsnummer from Mitarbeiter order by MA_Abrechnungsnummer",
                                                1, new string[] { "Int32" });
            for (int i = 0; i < Mitarbeiterauflisten.Count / Attributes; i++)
            {
                listBox1.Items.Add(Mitarbeiterauflisten[i * Attributes]);
            }
            int nextAbrNr;

            for (int i = 1; loop; i++)
            {
                if (!Abrechnungsnummern.Contains(i))  // Die Liste Abrechnungsnummern enthält alle Nummern, auch die,
                //die "entfernt wurden" (Sind in der Datenbank jedoch noch anzutreffen und die Lohnabrechnungen auch)
                {
                    nextAbrNr     = i;
                    textBox6.Text = nextAbrNr.ToString();
                    loop          = false;
                }
            }


            textBox8.Text = "Vornamen eintragen";
            textBox7.Text = "Nachnamen eintragen";

            Abteilungsnummern = sql.dataReader("Select Abteilungnummer from Abteilung", 1, new string[] { "Int32" });
            Abteilungen       = sql.dataReader("Select Abteilungsname from Abteilung", 1, new string[] { "String" });
            for (int i = 0; i < Abteilungen.Count; i++)
            {
                comboBox1.Items.Add(Abteilungen[i].ToString());
                comboBox2.Items.Add(Abteilungen[i].ToString());
            }
            if (comboBox1.Items.Count == 0)
            {
                MessageBox.Show("Keine Abteilung im System, bitte fügen Sie zuerst eine Abteilung hinzu", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Close();
            }
        }
Beispiel #6
0
 private void initControls()
 {
     // Init main drawing panel.
     typeof(Panel).InvokeMember("DoubleBuffered",
                                BindingFlags.SetProperty | BindingFlags.Instance | BindingFlags.NonPublic,
                                null, panDraw, new object[] { true });
     panDraw.Paint += PanDraw_Paint;
     // Adjust appearance of some controls (esp. for theming).
     colorTable             = new CustomColorTable(Settings.DarkMode);
     contextMain.Renderer   = new ToolStripProfessionalRenderer(colorTable);
     contextList.Renderer   = new ToolStripProfessionalRenderer(colorTable);
     contextView.Renderer   = new ToolStripProfessionalRenderer(colorTable);
     lstPositions.DrawMode  = DrawMode.OwnerDrawFixed;
     lstPositions.DrawItem += lstPositions_DrawItem;
 }
        private void LohnabrechnungErstellen_Load(object sender, EventArgs e)
        {
            button1.FlatAppearance.BorderColor  = Color.DarkSlateGray;
            button2.FlatAppearance.BorderColor  = Color.DarkSlateGray;
            button10.FlatAppearance.BorderColor = Color.DarkSlateGray;
            Region = Region.FromHrgn(CreateRoundRectRgn(0, 0, 603, 657, 20, 20));
            var cst = new CustomColorTable();

            menuStrip1.Renderer = new myRenderer(cst);
            Lohngruppen         = sql.dataReader("Select Lohngruppenummer, Lohngruppenname, Stundensatz FROM Lohngruppe where Aktiv = true", 3,
                                                 new string[] { "Int32", "String", "Decimal" });
            Arbeitsstunden = sql.dataReader("Select ArbeitsstundenNr,Arbeitsstunden FROM Arbeitsstunden where Aktiv = true", 2,
                                            new string[] { "Int32", "Int32" });
            Bonuszahlung = sql.dataReader("Select BonuszahlungID, Prozentsatz FROM Bonuszahlung where Aktiv = true", 2,
                                          new string[] { "Int32", "Int32" });
            Überstunden = sql.dataReader("Select Überstundenkennung, Überstundenbezeichnung, Überstundenbonus FROM Überstundenkennung where Aktiv = true", 3,
                                         new string[] { "String", "String", "Decimal" });
            groupBox2.Enabled = false;
            for (int i = 1; i < Lohngruppen.Count; i += 3)
            {
                comboBox2.Items.Add(Lohngruppen[i]);
            }
            for (int i = 1; i < Arbeitsstunden.Count; i += 2)
            {
                comboBox3.Items.Add(Arbeitsstunden[i]);
            }
            for (int i = 1; i < Bonuszahlung.Count; i += 2)
            {
                comboBox1.Items.Add(Bonuszahlung[i]);
            }
            for (int i = 1; i < Überstunden.Count; i += 3)
            {
                comboBox4.Items.Add(Überstunden[i]);
            }
            for (int i = 0; i < MitarbeiterAusHauptfenster.Count; i++)
            {
                MitarbeiterAuswählen.Items.Add(MitarbeiterAusHauptfenster[i]);
            }
            for (int i = 0; i < 24; i++)
            {
                comboBox5.Items.Add(i);
            }
        }
Beispiel #8
0
        private void Hauptfenster_Load(object sender, EventArgs e)
        {
            collectionnumbers.Clear();
            collection.Clear();
            abrechnungsnummernAnzeigeList.Clear();
            MA_Abrechnungsnummer.Clear();
            StartPosition = FormStartPosition.CenterScreen;
            Region        = Region.FromHrgn(CreateRoundRectRgn(0, 0, 456, 473, 20, 20));
            var cst = new CustomColorTable();

            menuStrip1.Renderer           = new myRenderer(cst);
            SearchText.AutoCompleteMode   = AutoCompleteMode.Suggest;
            SearchText.AutoCompleteSource = AutoCompleteSource.CustomSource;
            toolTip1.SetToolTip(button4,
                                "Diese Funktion dient zur schnelleren Bearbeitung oder Anzeige von Mitarbeitern");
            toolTip1.SetToolTip(SearchText,
                                "Anmerkung: Autovervollständigung vorhanden");
            toolTip1.SetToolTip(listBox1,
                                "Hier werden Ihre ausgewählten Mitarbeiter zwischengespeichert. Sie können ein oder mehr Mitarbeiter auswählen.");

            button2.FlatAppearance.BorderColor  = Color.DarkSlateGray;
            button10.FlatAppearance.BorderColor = Color.DarkSlateGray;
            sql.OpenCon();
            dataReader =
                sql.readFromTable(
                    "Select MA_Abrechnungsnummer, Mitarbeitervorname, Mitarbeiternachname from Mitarbeiter where Aktiv = true order by Mitarbeitervorname");
            var counter = 0;

            while (dataReader.Read())
            {
                MA_Abrechnungsnummer.Add(dataReader.GetInt32(0));
                collection.Add(string.Format("{0}  {1}  ", dataReader.GetString(1), dataReader.GetString(2)));
                collectionnumbers.Add(dataReader.GetInt32(0));
                treeView1.Nodes.Add(dataReader.GetString(1) + " " + dataReader.GetString(2));
                treeView1.Nodes[counter].Nodes.Add("Abrechnungsnummer: " + MA_Abrechnungsnummer[counter]);
                counter++;
            }
            SearchText.AutoCompleteCustomSource = collection;
        }
 public CustomToolStripRenderer(CustomColorTable customColorTable) :
     base(customColorTable)
 {
 }
Beispiel #10
0
        private void Init(CurveCanvas curveCanvas)
        {
            var lockorgValues = (int[])Enum.GetValues(typeof(OriginLockMode));
            var tanTypeValues = (int[])Enum.GetValues(typeof(CurveTangentTypes));
            var loopValues = (int[])Enum.GetValues(typeof(CurveLoopTypes));
            splitContainer1 = new SplitContainer();
            m_curvesListView = new ListView();

            m_curveControl = curveCanvas;

            m_menu = new MenuStrip();
            m_tangentsMenuItem = new ToolStripMenuItem();
            m_InTangentMenuItem = new ToolStripMenuItem();
            m_outTangentMenuItem = new ToolStripMenuItem();
            m_topStrip = new ToolStrip();
            m_PointLabel = new ToolStripLabel();
            m_xTxtBox = new ToolStripTextBox();
            m_yTxtBox = new ToolStripTextBox();
            m_bottomStrip = new ToolStrip();
            m_MousePos = new ToolStripLabel();
            m_helpForm = new HelpForm();
            m_TangentsSep1 = new ToolStripSeparator();
            m_editModeButtons = new ToolStripButton[4];
            for (int i = 0; i < m_editModeButtons.Length; i++)
            {
                m_editModeButtons[i] = new ToolStripButton();
            }

            m_tangentBtns = new ToolStripButton[5];
            for (int i = 0; i < m_tangentBtns.Length; i++)
            {
                m_tangentBtns[i] = new ToolStripButton();
            }

            m_infinityBtns = new ToolStripButton[4];
            for (int i = 0; i < m_infinityBtns.Length; i++)
            {
                m_infinityBtns[i] = new ToolStripButton();
            }

            // help menu items
            m_helpMenuItem = new ToolStripMenuItem();
            var quickHelpMenuItem = new ToolStripMenuItem();


            m_fitBtn = new ToolStripButton();
            m_breakTangent = new ToolStripButton();
            m_unifyTangent = new ToolStripButton();
            var snapToX = new ToolStripButton();
            var snapToY = new ToolStripButton();
            var snapToPoint = new ToolStripButton();
            var snapToCurve = new ToolStripButton();

            m_undoBtn = new ToolStripButton();
            m_redoBtn = new ToolStripButton();
            m_cutBtn = new ToolStripButton();
            m_copyBtn = new ToolStripButton();
            m_pasteBtn = new ToolStripButton();
            m_delBtn = new ToolStripButton();

            // suspendlayouts            
            splitContainer1.Panel1.SuspendLayout();
            splitContainer1.Panel2.SuspendLayout();
            splitContainer1.SuspendLayout();
            SuspendLayout();


            m_preInfinityMenuItem = new ToolStripMenuItem();
            m_preInfinityMenuItem.Name = "PreInfinity";
            m_preInfinityMenuItem.Text = "Pre-Infinity".Localize();
            foreach (int val in loopValues)
            {
                string name = Enum.GetName(typeof(CurveLoopTypes), val);
                var item = new ToolStripMenuItem();
                item.Name = "PreInfinity" + name;
                item.Text = name;
                item.Tag = (CurveLoopTypes)val;
                item.Click += curveLoopMenu_Click;
                m_preInfinityMenuItem.DropDownItems.Add(item);
            }

            m_postInfinityMenuItem = new ToolStripMenuItem();
            m_postInfinityMenuItem.Name = "PostInfinity";
            m_postInfinityMenuItem.Text = "Post-Infinity".Localize();
            foreach (int val in loopValues)
            {
                string name = Enum.GetName(typeof(CurveLoopTypes), val);
                var item = new ToolStripMenuItem();
                item.Name = "PostInfinity" + name;
                item.Text = name;
                item.Tag = (CurveLoopTypes)val;
                item.Click += curveLoopMenu_Click;
                m_postInfinityMenuItem.DropDownItems.Add(item);
            }

            m_curveMenuItem = new ToolStripMenuItem();
            m_curveMenuItem.DropDownItems.AddRange(new ToolStripItem[] { m_preInfinityMenuItem, m_postInfinityMenuItem });
            m_curveMenuItem.Name = "Curve";
            m_curveMenuItem.Text = "Curve".Localize();

            var editMenuItem = new ToolStripMenuItem("Edit".Localize());
            editMenuItem.DropDown = m_curveControl.ContextMenuStrip;
           
            m_menu.Location = new Point(0, 0);
            m_menu.Name = "m_menu";

            CustomColorTable toolstripcolor = new CustomColorTable();
            toolstripcolor.SettableMenuItemBorder = Color.Transparent;
            m_curveControl.ContextMenuStrip.Renderer = new CustomToolStripRenderer(toolstripcolor);

            m_menu.RenderMode = ToolStripRenderMode.Professional;
            m_menu.Renderer = new CustomToolStripRenderer(toolstripcolor);
            
            
            m_menu.Size = new Size(898, 31);
            m_menu.TabIndex = 0;
            m_menu.Text = "menuStrip1";
            

            foreach (int val in tanTypeValues)
            {
                var tanType = (CurveTangentTypes)val;
                if (!IsImplemented(tanType))
                    continue;
                string name = Enum.GetName(typeof(CurveTangentTypes), val);
                var item = new ToolStripMenuItem();
                item.Name = name;
                item.Text = name;
                item.Tag = tanType;
                item.Click += TanMenuItem_Click;
                m_tangentsMenuItem.DropDownItems.Add(item);
            }

            m_tangentsMenuItem.DropDownItems.AddRange(new ToolStripItem[] {                        
            m_TangentsSep1,
            m_InTangentMenuItem,
            m_outTangentMenuItem});
            m_tangentsMenuItem.Name = "m_tangentsMenuItem";
            m_tangentsMenuItem.Size = new Size(100, 27);
            m_tangentsMenuItem.Text = "Tangents".Localize();

            foreach (int val in tanTypeValues)
            {
                var tanType = (CurveTangentTypes)val;
                if (!IsImplemented(tanType) || tanType == CurveTangentTypes.Stepped
                    || tanType == CurveTangentTypes.SteppedNext)
                    continue;

                string name = Enum.GetName(typeof(CurveTangentTypes), val);
                var item = new ToolStripMenuItem();
                item.Name = "InTan" + name;
                item.Text = name;
                item.Tag = tanType;
                item.Click += TanMenuItem_Click;
                m_InTangentMenuItem.DropDownItems.Add(item);
            }
            m_InTangentMenuItem.Name = "m_InTangentMenuItem";
            m_InTangentMenuItem.Size = new Size(205, 28);
            m_InTangentMenuItem.Text = "In Tangent".Localize();

            foreach (int val in tanTypeValues)
            {
                var tanType = (CurveTangentTypes)val;
                if (!IsImplemented(tanType) || tanType == CurveTangentTypes.Stepped
                    || tanType == CurveTangentTypes.SteppedNext)
                    continue;

                string name = Enum.GetName(typeof(CurveTangentTypes), val);
                var item = new ToolStripMenuItem();
                item.Name = "OutTan" + name;
                item.Text = name;
                item.Tag = tanType;
                item.Click += TanMenuItem_Click;
                m_outTangentMenuItem.DropDownItems.Add(item);
            }
            m_outTangentMenuItem.Name = "m_outTangentMenuItem";
            m_outTangentMenuItem.Size = new Size(205, 28);
            m_outTangentMenuItem.Text = "Out Tangent".Localize();

            m_helpMenuItem.Name = "helpMenuItem";
            m_helpMenuItem.Text = "Help".Localize();
            m_helpMenuItem.DropDownItems.Add(quickHelpMenuItem);

            quickHelpMenuItem.Name = "quickHelpMenuItem";
            quickHelpMenuItem.Text = "Quick Help...".Localize();
            quickHelpMenuItem.Click += delegate
            {
                if (m_helpForm.Visible)
                {
                    m_helpForm.Activate();
                    return;
                }
                m_helpForm.Show(this);
            };

            m_optionsMenu = new ToolStripMenuItem("Options".Localize());
            var inputmodeMenu = new ToolStripMenuItem("Input Mode".Localize());
            m_basicMenuItem = new ToolStripMenuItem("Basic".Localize());
            m_basicMenuItem.Name = "basic";
            m_basicMenuItem.Click += delegate
            {
                InputMode = InputModes.Basic;

            };
            m_advancedInputMenuItem = new ToolStripMenuItem("Advanced".Localize());
            m_advancedInputMenuItem.Click += delegate
            {
                InputMode = InputModes.Advanced;
            };
            InputMode = m_curveControl.InputMode;

            var flipYMenuItem = new ToolStripMenuItem("Flip Y-Axis".Localize());
            flipYMenuItem.Click += delegate
            {
                FlipY = !FlipY;
            };
            var showMinorTicksMenu = new ToolStripMenuItem("Show subdivision lines".Localize());
            showMinorTicksMenu.Click += delegate
            {
                m_curveControl.DrawMinorTickEnabled = !m_curveControl.DrawMinorTickEnabled;
            };

                        
            m_optionsMenu.DropDownOpening += delegate 
            { 
                flipYMenuItem.Checked = FlipY;
                showMinorTicksMenu.Checked = m_curveControl.DrawMinorTickEnabled;
            };
                       
            inputmodeMenu.DropDownItems.Add(m_basicMenuItem);
            inputmodeMenu.DropDownItems.Add(m_advancedInputMenuItem);

            var lockmenu = new ToolStripMenuItem("Lock Origin".Localize(
                "This is the name of a command. Lock is a verb. Origin is like the origin of a graph."));
            foreach (int val in lockorgValues)
            {
                string name = Enum.GetName(typeof(OriginLockMode), val);
                var item = new ToolStripMenuItem();
                item.Name = name;
                item.Text = name;
                item.Tag = (OriginLockMode)val;
                item.Click += delegate(object sender, EventArgs e)
                {
                    var menuItem = (ToolStripMenuItem)sender;
                    m_curveControl.LockOrigin = (OriginLockMode)menuItem.Tag;
                };
                lockmenu.DropDownItems.Add(item);
            }
            lockmenu.DropDownOpening += delegate
            {
                foreach (ToolStripMenuItem mitem in lockmenu.DropDownItems)
                {
                    mitem.Checked = m_curveControl.LockOrigin == (OriginLockMode)mitem.Tag;
                }
            };

                        
            m_optionsMenu.DropDownItems.Add(inputmodeMenu);
            m_optionsMenu.DropDownItems.Add(lockmenu);
            m_optionsMenu.DropDownItems.Add(flipYMenuItem);
            m_optionsMenu.DropDownItems.Add(showMinorTicksMenu);
            
                        
            // Initialize CurveTypeSelector (with items and labels)
            m_curveTypeLabel = new ToolStripLabel();
            m_curveTypeLabel.Name = "CurveTypeLabel";
            m_curveTypeLabel.AutoSize = true;
            m_curveTypeLabel.Text = "Type".Localize("curve types");
            m_curveTypeSelector = new ToolStripDropDownButton();
            m_curveTypeSelector.Name = "CurveTypeSelector";
            m_curveTypeSelector.AutoSize = false;
            m_curveTypeSelector.Width = 70;
            m_curveTypeSelector.ToolTipText = "Type of Selected Curve(s)".Localize();
            m_curveTypeSelector.DisplayStyle = ToolStripItemDisplayStyle.Text;
            var linearItem = new ToolStripMenuItem("Linear".Localize());
            linearItem.Tag = InterpolationTypes.Linear;
            linearItem.Name = linearItem.Text;
            var smoothItem = new ToolStripMenuItem("Smooth".Localize());
            smoothItem.Tag = InterpolationTypes.Hermite;
            smoothItem.Name = smoothItem.Text;
            smoothItem.Checked = true;
            m_curveTypeSelector.DropDownItems.Add(linearItem);
            m_curveTypeSelector.DropDownItems.Add(smoothItem);
            m_curveTypeSelector.Text = smoothItem.Text;
            m_curveTypeSelector.DropDownItemClicked += curveTypeSelector_DropDownItemClicked;

            m_menu.Items.AddRange(new ToolStripItem[] {
                editMenuItem,
                m_curveMenuItem,
            m_tangentsMenuItem,m_optionsMenu,m_helpMenuItem});

            m_topStrip.Items.AddRange(m_editModeButtons);
            m_topStrip.Items.Add(new ToolStripSeparator());
            m_topStrip.Items.AddRange(new ToolStripItem[] {                
            m_PointLabel,
            m_xTxtBox,
            m_yTxtBox,
            m_fitBtn,            
            });
            m_tanSeparator1 = new ToolStripSeparator();
            m_tanSeparator2 = new ToolStripSeparator();
            m_topStrip.Items.Add(m_tanSeparator1);
            m_topStrip.Items.Add(m_curveTypeLabel);
            m_topStrip.Items.Add(m_curveTypeSelector);
            m_topStrip.Items.AddRange(m_tangentBtns);
            m_topStrip.Items.Add(m_tanSeparator2);
            m_topStrip.Items.Add(m_breakTangent);
            m_topStrip.Items.Add(m_unifyTangent);
            m_topStrip.Items.Add(new ToolStripSeparator());
            m_topStrip.Items.Add(snapToX);
            m_topStrip.Items.Add(snapToY);
            m_topStrip.Items.Add(snapToPoint);
            m_topStrip.Items.Add(snapToCurve);
            m_topStrip.Items.Add(new ToolStripSeparator());
            m_topStrip.Items.AddRange(m_infinityBtns);
            m_topStrip.Items.Add(new ToolStripSeparator());
            m_topStrip.Items.Add(m_undoBtn);
            m_topStrip.Items.Add(m_redoBtn);
            m_topStrip.Items.Add(m_cutBtn);
            m_topStrip.Items.Add(m_copyBtn);
            m_topStrip.Items.Add(m_pasteBtn);
            m_topStrip.Items.Add(m_delBtn);
            m_topStrip.Items.Add(new ToolStripSeparator());
            m_topStrip.Location = new Point(0, 31);
            m_topStrip.Name = "m_topStrip";
            m_topStrip.RenderMode = ToolStripRenderMode.System;
            m_topStrip.Size = new Size(898, 32);
            m_topStrip.TabIndex = 1;
            m_topStrip.Stretch = true;
            m_topStrip.Text = "topstrip";
            m_topStrip.GripStyle = ToolStripGripStyle.Hidden;
            m_topStrip.MinimumSize = new Size(32, 32);
            m_topStrip.CausesValidation = true;


            for (int i = 0; i < m_editModeButtons.Length; i++)
            {
                m_editModeButtons[i].DisplayStyle = ToolStripItemDisplayStyle.Image;
                m_editModeButtons[i].Click += EditModeClick;
                m_editModeButtons[i].Alignment = ToolStripItemAlignment.Left;
                m_editModeButtons[i].ImageScaling = ToolStripItemImageScaling.None;
            }

            m_editModeButtons[0].Name = "ScalePoint";
            m_editModeButtons[0].Tag = EditModes.Scale;
            m_editModeButtons[0].Image = new Bitmap(typeof(CurveUtils), "Resources.ScaleKeysTool.png");
            m_editModeButtons[0].ToolTipText = "Scale selected control points   " + KeysUtil.KeysToString(CurveCanvas.ShortcutKeys.Scale, true);

            m_editModeButtons[1].Checked = true;
            m_editModeButtons[1].Name = "MovePoint";
            m_editModeButtons[1].Tag = EditModes.Move;
            m_editModeButtons[1].Image = new Bitmap(typeof(CurveUtils), "Resources.MoveKeysTool.png");
            m_editModeButtons[1].ToolTipText = "Move selected control points   " + KeysUtil.KeysToString(CurveCanvas.ShortcutKeys.Move, true);

            m_editModeButtons[2].Name = "InsertPoint";
            m_editModeButtons[2].Tag = EditModes.InsertPoint;
            m_editModeButtons[2].Image = new Bitmap(typeof(CurveUtils), "Resources.InsertKeysTool.png");
            m_editModeButtons[2].ToolTipText = "Insert control point";

            m_editModeButtons[3].Name = "AddPoint";
            m_editModeButtons[3].Tag = EditModes.AddPoint;
            m_editModeButtons[3].Image = new Bitmap(typeof(CurveUtils), "Resources.AddKeysTool.png");
            m_editModeButtons[3].ToolTipText = "Add control point";


            m_PointLabel.Name = "m_PointLabel";
            m_PointLabel.AutoSize = true;
            m_PointLabel.Text = "Stats".Localize();

            
            m_xTxtBox.Name = "m_XtxtBox";
            m_xTxtBox.Size = new Size(100, 30);
            m_xTxtBox.Validating += InputBoxValidating;
            m_xTxtBox.KeyUp += m_TxtBox_KeyUp;
            m_xTxtBox.ReadOnly = true;
            m_inputBoxBkgColor = m_xTxtBox.BackColor;
            m_xTxtBox.BackColorChanged += (s, e) =>
                {
                    if (m_xTxtBox.BackColor != m_multiPointColor)
                        m_inputBoxBkgColor = m_xTxtBox.BackColor;
                };


            m_yTxtBox.Name = "m_yTxtBox";
            m_yTxtBox.Size = new Size(100, 30);
            m_yTxtBox.Validating += InputBoxValidating;
            m_yTxtBox.KeyUp += m_TxtBox_KeyUp;
            m_yTxtBox.ReadOnly = true;


            // fit all
            m_fitBtn.Name = "m_fitBtn";
            m_fitBtn.DisplayStyle = ToolStripItemDisplayStyle.Image;
            m_fitBtn.Alignment = ToolStripItemAlignment.Left;
            m_fitBtn.Tag = null;
            m_fitBtn.Image = new Bitmap(typeof(CurveUtils), "Resources.FrameAll.png");
            m_fitBtn.ToolTipText = "Fit " + KeysUtil.KeysToString(CurveCanvas.ShortcutKeys.Fit, true);
            m_fitBtn.Click += delegate { m_curveControl.Fit(); };
            m_fitBtn.ImageScaling = ToolStripItemImageScaling.None;
            



            // tangent buttons
            for (int i = 0; i < m_tangentBtns.Length; i++)
            {
                m_tangentBtns[i].DisplayStyle = ToolStripItemDisplayStyle.Image;
                m_tangentBtns[i].Alignment = ToolStripItemAlignment.Left;
                m_tangentBtns[i].Name = "m_tangentBtns" + i;
                m_tangentBtns[i].ImageScaling = ToolStripItemImageScaling.None;
                m_tangentBtns[i].Click += delegate(object sender, EventArgs e)
                {
                    var btn = sender as ToolStripButton;
                    m_curveControl.SetTangent(TangentSelection.TangentInOut, (CurveTangentTypes)btn.Tag);
                };
            }
            m_tangentBtns[0].Tag = CurveTangentTypes.Spline;
            m_tangentBtns[0].Image = new Bitmap(typeof(CurveUtils), "Resources.SplineTangents.png");
            m_tangentBtns[0].ToolTipText = "Spline";

            m_tangentBtns[1].Tag = CurveTangentTypes.Clamped;
            m_tangentBtns[1].Image = new Bitmap(typeof(CurveUtils), "Resources.ClampedTangents.png");
            m_tangentBtns[1].ToolTipText = "Clamped";

            m_tangentBtns[2].Tag = CurveTangentTypes.Linear;
            m_tangentBtns[2].Image = new Bitmap(typeof(CurveUtils), "Resources.LinearTangents.png");
            m_tangentBtns[2].ToolTipText = "Linear";

            m_tangentBtns[3].Tag = CurveTangentTypes.Flat;
            m_tangentBtns[3].Image = new Bitmap(typeof(CurveUtils), "Resources.FlatTangents.png");
            m_tangentBtns[3].ToolTipText = "Flat";

            m_tangentBtns[4].Tag = CurveTangentTypes.Stepped;
            m_tangentBtns[4].Image = new Bitmap(typeof(CurveUtils), "Resources.StepTangents.png");
            m_tangentBtns[4].ToolTipText = "Step";


            // break tangents
            m_breakTangent.Name = "m_breakTangent";
            m_breakTangent.DisplayStyle = ToolStripItemDisplayStyle.Image;
            m_breakTangent.Alignment = ToolStripItemAlignment.Left;
            m_breakTangent.Image = new Bitmap(typeof(CurveUtils), "Resources.BreakTangents.png");
            m_breakTangent.ImageScaling = ToolStripItemImageScaling.None;
            m_breakTangent.ToolTipText = "Break Tangents";
            m_breakTangent.Click += delegate { m_curveControl.BreakTangents(true); };

            m_unifyTangent.Name = "m_unifyTangent";
            m_unifyTangent.DisplayStyle = ToolStripItemDisplayStyle.Image;
            m_unifyTangent.Alignment = ToolStripItemAlignment.Left;
            m_unifyTangent.Image = new Bitmap(typeof(CurveUtils), "Resources.UnifyTangents.png");
            m_unifyTangent.ImageScaling = ToolStripItemImageScaling.None;
            m_unifyTangent.ToolTipText = "Unify Tangents";
            m_unifyTangent.Click += delegate { m_curveControl.BreakTangents(false); };


            snapToX.Checked = m_curveControl.AutoSnapToX;
            snapToX.Name = "snapToX";
            snapToX.DisplayStyle = ToolStripItemDisplayStyle.Image;
            snapToX.Alignment = ToolStripItemAlignment.Left;
            snapToX.Image = new Bitmap(typeof(CurveUtils), "Resources.TimeSnap.png");
            snapToX.ImageScaling = ToolStripItemImageScaling.None;
            snapToX.ToolTipText = "Auto snap to major X tick";
            snapToX.Click += delegate
            {
                snapToX.Checked = !snapToX.Checked;
                m_curveControl.AutoSnapToX = snapToX.Checked;
            };


            snapToY.Checked = m_curveControl.AutoSnapToY;
            snapToY.Name = "snapToY";
            snapToY.DisplayStyle = ToolStripItemDisplayStyle.Image;
            snapToY.Alignment = ToolStripItemAlignment.Left;
            snapToY.Image = new Bitmap(typeof(CurveUtils), "Resources.ValueSnap.png");
            snapToY.ImageScaling = ToolStripItemImageScaling.None;
            snapToY.ToolTipText = "Auto snap to major Y tick";
            snapToY.Click += delegate
            {
                snapToY.Checked = !snapToY.Checked;
                m_curveControl.AutoSnapToY = snapToY.Checked;
            };

            snapToPoint.Checked = m_curveControl.AutoPointSnap;
            snapToPoint.Name = "snapToPoint";
            snapToPoint.DisplayStyle = ToolStripItemDisplayStyle.Image;
            snapToPoint.Alignment = ToolStripItemAlignment.Left;
            snapToPoint.Image = new Bitmap(typeof(CurveUtils), "Resources.PointSnap.png");
            snapToPoint.ImageScaling = ToolStripItemImageScaling.None;
            snapToPoint.ToolTipText = "Auto snap to point";
            snapToPoint.Click += delegate
            {
                snapToPoint.Checked = !snapToPoint.Checked;
                m_curveControl.AutoPointSnap = snapToPoint.Checked;
            };

            snapToCurve.Checked = m_curveControl.AutoCurveSnap;
            snapToCurve.Name = "snapToCurve";
            snapToCurve.DisplayStyle = ToolStripItemDisplayStyle.Image;
            snapToCurve.Alignment = ToolStripItemAlignment.Left;
            snapToCurve.Image = new Bitmap(typeof(CurveUtils), "Resources.CurveSnap.png");
            snapToCurve.ImageScaling = ToolStripItemImageScaling.None;
            snapToCurve.ToolTipText = "Auto snap to curve";
            snapToCurve.Click += delegate
            {
                snapToCurve.Checked = !snapToCurve.Checked;
                m_curveControl.AutoCurveSnap = snapToCurve.Checked;
            };

            for (int i = 0; i <= 1; i++)
            {
                m_infinityBtns[i].DisplayStyle = ToolStripItemDisplayStyle.Image;
                m_infinityBtns[i].Alignment = ToolStripItemAlignment.Left;
                m_infinityBtns[i].Name = "m_infinityBtns" + i;
                m_infinityBtns[i].ImageScaling = ToolStripItemImageScaling.None;
                m_infinityBtns[i].Click += delegate(object sender, EventArgs e)
                {
                    var btn = sender as ToolStripButton;
                    m_curveControl.SetPreInfinity((CurveLoopTypes)btn.Tag);
                };
            }

            for (int i = 2; i <= 3; i++)
            {
                m_infinityBtns[i].DisplayStyle = ToolStripItemDisplayStyle.Image;
                m_infinityBtns[i].Alignment = ToolStripItemAlignment.Left;
                m_infinityBtns[i].Name = "m_infinityBtns" + i;
                m_infinityBtns[i].ImageScaling = ToolStripItemImageScaling.None;
                m_infinityBtns[i].Click += delegate(object sender, EventArgs e)
                {
                    var btn = sender as ToolStripButton;
                    m_curveControl.SetPostInfinity((CurveLoopTypes)btn.Tag);
                };
            }


            m_infinityBtns[0].Tag = CurveLoopTypes.Cycle;
            m_infinityBtns[0].Image = new Bitmap(typeof(CurveUtils), "Resources.CycleBefore.png");
            m_infinityBtns[0].ToolTipText = "Cycle Before";

            m_infinityBtns[1].Tag = CurveLoopTypes.CycleWithOffset;
            m_infinityBtns[1].Image = new Bitmap(typeof(CurveUtils), "Resources.CycleBeforewithOffset.png");
            m_infinityBtns[1].ToolTipText = "Cycle Before with Offset";

            m_infinityBtns[2].Tag = CurveLoopTypes.Cycle;
            m_infinityBtns[2].Image = new Bitmap(typeof(CurveUtils), "Resources.CycleAfter.png");
            m_infinityBtns[2].ToolTipText = "Cycle After";

            m_infinityBtns[3].Tag = CurveLoopTypes.CycleWithOffset;
            m_infinityBtns[3].Image = new Bitmap(typeof(CurveUtils), "Resources.CycleAfterwithOffset.png");
            m_infinityBtns[3].ToolTipText = "Cycle After with Offset";

            // udo/redo/cut/copy/paste/delete  buttons            
            m_undoBtn.Name = "m_undoBtn";
            m_undoBtn.DisplayStyle = ToolStripItemDisplayStyle.Image;
            m_undoBtn.Alignment = ToolStripItemAlignment.Left;
            m_undoBtn.Image = ResourceUtil.GetImage24(Resources.UndoImage);
            m_undoBtn.ImageScaling = ToolStripItemImageScaling.None;
            m_undoBtn.ToolTipText = "Undo";
            m_undoBtn.Click += delegate { m_curveControl.Undo(); };

            m_redoBtn.Name = "m_redoBtn";
            m_redoBtn.DisplayStyle = ToolStripItemDisplayStyle.Image;
            m_redoBtn.Alignment = ToolStripItemAlignment.Left;
            m_redoBtn.Image = ResourceUtil.GetImage24(Resources.RedoImage);
            m_redoBtn.ImageScaling = ToolStripItemImageScaling.None;
            m_redoBtn.ToolTipText = "Redo";
            m_redoBtn.Click += delegate { m_curveControl.Redo(); };

            m_cutBtn.Name = "cutBtn";
            m_cutBtn.DisplayStyle = ToolStripItemDisplayStyle.Image;
            m_cutBtn.Alignment = ToolStripItemAlignment.Left;
            m_cutBtn.Image = ResourceUtil.GetImage24(Resources.CutImage);
            m_cutBtn.ImageScaling = ToolStripItemImageScaling.None;
            m_cutBtn.ToolTipText = "Cut selected points".Localize();
            m_cutBtn.Click += delegate { m_curveControl.Cut(); };

            m_copyBtn.Name = "copyBtn";
            m_copyBtn.DisplayStyle = ToolStripItemDisplayStyle.Image;
            m_copyBtn.Alignment = ToolStripItemAlignment.Left;
            m_copyBtn.Image = ResourceUtil.GetImage24(Resources.CopyImage);
            m_copyBtn.ImageScaling = ToolStripItemImageScaling.None;
            m_copyBtn.ToolTipText = "Copy selected points".Localize();
            m_copyBtn.Click += delegate { m_curveControl.Copy(); };

            m_pasteBtn.Name = "pasteBtn";
            m_pasteBtn.DisplayStyle = ToolStripItemDisplayStyle.Image;
            m_pasteBtn.Alignment = ToolStripItemAlignment.Left;
            m_pasteBtn.Image = ResourceUtil.GetImage24(Resources.PasteImage);
            m_pasteBtn.ImageScaling = ToolStripItemImageScaling.None;
            m_pasteBtn.ToolTipText = "Paste selected points".Localize();
            m_pasteBtn.Click += delegate { m_curveControl.Paste(); };


            m_delBtn.Name = "delBtn";
            m_delBtn.DisplayStyle = ToolStripItemDisplayStyle.Image;
            m_delBtn.Alignment = ToolStripItemAlignment.Left;
            m_delBtn.Image = ResourceUtil.GetImage24(Resources.DeleteImage);
            m_delBtn.ImageScaling = ToolStripItemImageScaling.None;
            m_delBtn.ToolTipText = "Delete selected points";
            m_delBtn.Click += delegate { m_curveControl.Delete(); };

            m_bottomStrip.Dock = DockStyle.Bottom;
            m_bottomStrip.Items.AddRange(new ToolStripItem[] { m_MousePos });
            m_bottomStrip.Location = new Point(0, 549);
            m_bottomStrip.Name = "m_bottomStrip";
            m_bottomStrip.RenderMode = ToolStripRenderMode.System;
            m_bottomStrip.Size = new Size(898, 26);
            m_bottomStrip.TabIndex = 2;
            m_bottomStrip.Text = "toolStrip2";
            m_bottomStrip.GripStyle = ToolStripGripStyle.Hidden;

            m_MousePos.Alignment = ToolStripItemAlignment.Left;
            m_MousePos.AutoSize = true;
            m_MousePos.Name = "m_MousePos";
            m_MousePos.Size = new Size(250, 27);
            m_MousePos.Text = "Mouse Position".Localize();

            m_curveControl.Dock = DockStyle.Fill;
            m_curveControl.Location = new Point(24, 61);
            m_curveControl.Name = "m_curveControl";
            m_curveControl.Size = new Size(900, 600);
            m_curveControl.TabIndex = 0;
            m_curveControl.TabStop = false;
            m_curveControl.MouseMove += delegate(object sender, MouseEventArgs e)
            {
                PointD gp = m_curveControl.ClientToGraph_d(e.X, e.Y);
                m_MousePos.Text = string.Format("{0}, {1}", Math.Round(gp.X, 4), Math.Round(gp.Y, 4));
            };
            m_curveControl.MouseLeave += delegate { m_MousePos.Text = ""; };
            m_curveControl.MouseUp += delegate { UpdateInputBoxes(); };
            m_curveControl.EditMode = EditModes.Move;
            m_curveControl.EditModeChanged += delegate
            {
                foreach (ToolStripButton btn in m_editModeButtons)
                {
                    btn.Checked = (EditModes)btn.Tag == m_curveControl.EditMode;
                }
            };
            m_curveControl.SelectionChanged += SelectionChanged;

            m_TangentsSep1.Name = "m_TangentsSep1";
            m_TangentsSep1.Size = new Size(202, 6);

            splitContainer1.Dock = DockStyle.Fill;
            splitContainer1.ForeColor = SystemColors.Control;
            splitContainer1.Location = new Point(0, 48);
            splitContainer1.Name = "splitContainer1";
            splitContainer1.Panel1MinSize = 30;
            splitContainer1.Panel2MinSize = 30;
            splitContainer1.Panel1.Controls.Add(m_curvesListView);
            splitContainer1.Panel2.Controls.Add(m_curveControl);
            splitContainer1.Size = new Size(898, 520);
            splitContainer1.SplitterDistance = 180;
            splitContainer1.SplitterIncrement = 5;
            splitContainer1.TabIndex = 0;
            splitContainer1.TabStop = false;
            splitContainer1.Text = "splitContainer1";
            splitContainer1.BorderStyle = BorderStyle.None;
            splitContainer1.SplitterWidth = 4;
            splitContainer1.FixedPanel = FixedPanel.Panel1;
            splitContainer1.SplitterMoved += splitContainer1_SplitterMoved;
            splitContainer1.SplitterMoving += splitContainer1_SplitterMoving;

            // list view                  
            m_curvesListView.CheckBoxes = true;
            m_curvesListView.Dock = DockStyle.Fill;
            m_curvesListView.HideSelection = false;
            m_curvesListView.LabelEdit = false;
            m_curvesListView.Location = new Point(0, 0);
            m_curvesListView.Name = "m_curvesListView";
            m_curvesListView.Size = new Size(300, 300);
            m_curvesListView.TabIndex = 0;
            m_curvesListView.TabStop = false;            
            m_curvesListView.UseCompatibleStateImageBehavior = false;
            m_curvesListView.View = View.Details;
            m_curvesListView.ItemChecked += m_curvesListView_ItemChecked;
            m_curvesListView.SelectedIndexChanged += m_curvesListView_SelectedIndexChanged;
            m_curvesListView.Scrollable = true;
            m_curvesListView.HeaderStyle = ColumnHeaderStyle.Nonclickable;
            m_curvesListView.Columns.Add("Curves", 250);
            m_curvesListView.AllowColumnReorder = false;
            
            
            
            var addMenuItem = new ToolStripMenuItem("Add Point".Localize());
            var listMenuStrip = new ContextMenuStrip();
            m_curvesListView.ContextMenuStrip = listMenuStrip;
            listMenuStrip.Opening += delegate
            {
                addMenuItem.Enabled = m_curvesListView.SelectedItems.Count > 0;
            };
            listMenuStrip.Items.Add(addMenuItem);
            addMenuItem.Click += delegate
            {
                if (m_curvesListView.SelectedItems.Count == 0)
                    return;
                
                PointF pt;
                using (var dlg = new AddPointDialog())
                {
                    dlg.Location = new Point(MousePosition.X, MousePosition.Y);
                    dlg.ShowDialog(this);
                    if (dlg.DialogResult != DialogResult.OK)
                        return;
                    pt = dlg.PointPosition;
                }

                m_curveControl.TransactionContext.DoTransaction(delegate
                {
                    foreach (ListViewItem item in m_curvesListView.SelectedItems)
                    {
                        var curve = (ICurve)item.Tag;
                        IControlPoint cpt = curve.CreateControlPoint();
                        float x = pt.X;

                        int index = CurveUtils.GetValidInsertionIndex(curve, x);
                        while (index == -1)
                        {
                            x += CurveUtils.Epsilone;
                            index = CurveUtils.GetValidInsertionIndex(curve, x);
                        }

                        cpt.X = x;
                        cpt.Y = pt.Y;
                        curve.InsertControlPoint(index, cpt);
                        CurveUtils.ComputeTangent(curve);
                    }
                }, "Add Point".Localize());

                m_curveControl.Invalidate();
            };

            ClientSize = new Size(898, 575);
            Dock = DockStyle.Fill;
            Controls.Add(splitContainer1);
            Controls.Add(m_bottomStrip);
            Controls.Add(m_topStrip);
            Controls.Add(m_menu);

            // resume layouts.                        
            splitContainer1.Panel1.ResumeLayout(false);
            splitContainer1.Panel2.ResumeLayout(false);
            splitContainer1.ResumeLayout(false);
            ResumeLayout(false);
            PerformLayout();
            Invalidated += CurveEditorControl_Invalidated;
            SetUI(false);
            Application.Idle += Application_Idle;
        }