コード例 #1
0
ファイル: DesktopForm.cs プロジェクト: hksonngan/Xian
        private void OnToolStripSettingsPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            ToolStripSettings settings = ToolStripSettings.Default;

            if (e.PropertyName == "WrapLongToolstrips" || e.PropertyName == "ToolStripDock")
            {
                // handle both wrapping and docking together because both affect flow direction
                bool verticalOrientation = ReferenceEquals(_toolbar.Parent, _toolStripContainer.LeftToolStripPanel) ||
                                           ReferenceEquals(_toolbar.Parent, _toolStripContainer.RightToolStripPanel);

                _toolbar.SuspendLayout();
                _toolbar.LayoutStyle = settings.WrapLongToolstrips ? ToolStripLayoutStyle.Flow : ToolStripLayoutStyle.StackWithOverflow;
                if (settings.WrapLongToolstrips)
                {
                    ((FlowLayoutSettings)_toolbar.LayoutSettings).FlowDirection = verticalOrientation ? FlowDirection.TopDown : FlowDirection.LeftToRight;
                }
                _toolbar.ResumeLayout(true);

                ToolStripPanel targetParent = ConvertToToolStripPanel(_toolStripContainer, settings.ToolStripDock);
                if (targetParent != null && !ReferenceEquals(targetParent, _toolbar.Parent))
                {
                    _toolStripContainer.SuspendLayout();
                    targetParent.Join(_toolbar);

                    _toolStripContainer.ResumeLayout(true);
                }
            }
            else if (e.PropertyName == "IconSize")
            {
                ToolStripBuilder.ChangeIconSize(_toolbar, settings.IconSize);
            }
        }
コード例 #2
0
 private static void AssertReadOnlyFileSave()
 {
     SetUpReadOnlySettingsFile();
     // content is not relevant here
     var newSettings = new ToolStripSettings();
     newSettings.Save();
     Assert.Fail("Save of read only file has to fail");
 }
コード例 #3
0
        public void PanelLocation_LoadFromSaved_ReadsSavedLocation()
        {
            SaveSampleSettings();
            var loaded     = ToolStripSettings.Load();
            int loadedLeft = loaded[IRELEVANT_KEY].Left;

            Assert.AreEqual(IRELEVANT_LEFT, loadedLeft, "We need to be able read previously saved settings");
        }
コード例 #4
0
    internal static void InternalLoadSettings(Control owner)
    {
        //owner内のToolStripPanelを探す
        List <Control> toolStripPanels = new List <Control>();

        FindControls(typeof(ToolStripPanel), owner.Controls,
                     ref toolStripPanels);

        foreach (ToolStripPanel tsp in toolStripPanels)
        {
            if (string.IsNullOrEmpty(tsp.Name))
            {
                continue;
            }

            //ToolStripPanelの情報を読み込む
            string                       skey     = owner.GetType().FullName + "." + tsp.Name;
            ToolStripSettings            settings = new ToolStripSettings(skey);
            List <List <ToolStripInfo> > rowsList = settings.Rows;

            //ToolStripPanel内のToolStripを一時的にすべて削除する
            Dictionary <string, ToolStrip> toolstrips =
                new Dictionary <string, ToolStrip>();
            foreach (Control c in tsp.Controls)
            {
                toolstrips.Add(c.Name, (ToolStrip)c);
            }
            tsp.Controls.Clear();

            for (int i = 0; i < rowsList.Count; i++)
            {
                foreach (ToolStripInfo info in rowsList[i])
                {
                    //位置を設定するToolStripを探す
                    ToolStrip ts = null;
                    if (toolstrips.ContainsKey(info.Name))
                    {
                        ts = toolstrips[info.Name];
                    }
                    else
                    {
                        Control[] tss =
                            owner.Controls.Find(info.Name, true);
                        if ((tss != null) && (tss.Length == 1) &&
                            (tss[0] is ToolStrip))
                        {
                            ts = (ToolStrip)tss[0];
                        }
                    }
                    //ToolStripの位置を変更する
                    if (ts != null)
                    {
                        tsp.Join(ts, info.Location);
                    }
                }
            }
        }
    }
コード例 #5
0
        private static void AssertReadOnlyFileSave()
        {
            SetUpReadOnlySettingsFile();
            // content is not relevant here
            var newSettings = new ToolStripSettings();

            newSettings.Save();
            Assert.Fail("Save of read only file has to fail");
        }
コード例 #6
0
ファイル: ToolStripContainer.cs プロジェクト: zoroz/Terminals
        private void SaveAllPanels()
        {
            var newSettings = new ToolStripSettings();

            SaveToolStripPanel(this.TopToolStripPanel, "Top", newSettings);
            SaveToolStripPanel(this.LeftToolStripPanel, "Left", newSettings);
            SaveToolStripPanel(this.RightToolStripPanel, "Right", newSettings);
            SaveToolStripPanel(this.BottomToolStripPanel, "Bottom", newSettings);
            newSettings.Save();
        }
コード例 #7
0
ファイル: ToolStripContainer.cs プロジェクト: zoroz/Terminals
 private void AplyAllPanelPositions(ToolStripSettings newSettings)
 {
     foreach (ToolStripSetting setting in newSettings.Values)
     {
         ToolStrip strip = this.FindToolStripForSetting(setting);
         strip.GripStyle = ToolStripGripStyle.Visible;
         //ChangeToolStripLock(strip);
         ApplyLastPosition(setting, strip);
     }
 }
コード例 #8
0
        private static void SaveSampleSettings()
        {
            var newSettings = new ToolStripSettings();

            newSettings.Add(IRELEVANT_KEY, new ToolStripSetting()
            {
                Left = IRELEVANT_LEFT
            });
            newSettings.Save();
        }
コード例 #9
0
ファイル: DesktopForm.cs プロジェクト: hksonngan/Xian
        private void OnToolbarParentChanged(object sender, EventArgs e)
        {
            ToolStripDock dock = ConvertToToolStripDock(_toolStripContainer, _toolbar);

            if (dock != ToolStripDock.None)
            {
                ToolStripSettings settings = ToolStripSettings.Default;
                settings.ToolStripDock = dock;
                settings.Save();
            }
        }
コード例 #10
0
ファイル: ToolStripContainer.cs プロジェクト: zoroz/Terminals
 private static void SaveToolStripRow(ToolStripPanelRow row, ToolStripSettings newSettings, String position, int rowIndex)
 {
     foreach (ToolStrip strip in row.Controls)
     {
         ToolStripSetting setting = new ToolStripSetting();
         setting.Dock    = position;
         setting.Row     = rowIndex;
         setting.Left    = strip.Left;
         setting.Top     = strip.Top;
         setting.Name    = strip.Name;
         setting.Visible = strip.Visible;
         newSettings.Add(newSettings.Count, setting);
     }
 }
コード例 #11
0
ファイル: ToolStripContainer.cs プロジェクト: zoroz/Terminals
        private void ReJoinAllPanels(ToolStripSettings newSettings)
        {
            foreach (ToolStripSetting setting in newSettings.Values)
            {
                ToolStrip         strip    = this.FindToolStripForSetting(setting);
                ToolStripMenuItem menuItem = this.FindMenuForSetting(setting);

                if (menuItem != null)
                {
                    menuItem.Checked = setting.Visible;
                }

                this.RestoreStripLayout(setting, strip);
            }
        }
コード例 #12
0
    internal static void InternalSaveSettings(Control owner)
    {
        //owner内のToolStripPanelを探す
        List <Control> toolStripPanels = new List <Control>();

        FindControls(typeof(ToolStripPanel), owner.Controls,
                     ref toolStripPanels);

        foreach (ToolStripPanel tsp in toolStripPanels)
        {
            if (string.IsNullOrEmpty(tsp.Name))
            {
                continue;
            }

            List <List <ToolStripInfo> > rowsList =
                new List <List <ToolStripInfo> >();
            foreach (ToolStripPanelRow r in tsp.Rows)
            {
                //ToolStripPanelの列内のToolStripの情報を収集
                List <ToolStripInfo> toolStripNames =
                    new List <ToolStripInfo>();
                foreach (Control con in r.Controls)
                {
                    if (con is ToolStrip &&
                        !string.IsNullOrEmpty(con.Name))
                    {
                        toolStripNames.Add(
                            new ToolStripInfo((ToolStrip)con));
                    }
                }
                //列内の順番を並び替え
                toolStripNames.Sort();
                rowsList.Add(toolStripNames);
            }

            //ToolStripPanelごとに保存する
            string            skey     = owner.GetType().FullName + "." + tsp.Name;
            ToolStripSettings settings = new ToolStripSettings(skey);
            settings.Rows = rowsList;
            settings.Save();
        }
    }
コード例 #13
0
ファイル: ToolStripContainer.cs プロジェクト: zoroz/Terminals
        internal void LoadToolStripsState()
        {
            ToolStripSettings newSettings = ToolStripSettings.Load();

            if (newSettings != null && newSettings.Count > 0)
            {
                this.SuspendLayout();
                this.ClearAllPanels();
                ReJoinAllPanels(newSettings);

                // paranoic, because the previous join can reset the position
                // dont assign if already there. Because it can reorder the toolbars
                // http://www.visualbasicask.com/visual-basic-language/toolstrips-controls-becoming-desorganized.shtml
                AplyAllPanelPositions(newSettings);
                this.ResumeLayout(true);

                ChangeLockState();
            }
        }
コード例 #14
0
ファイル: ToolStripContainer.cs プロジェクト: zoroz/Terminals
 private static void SaveToolStripPanel(ToolStripPanel panel, String position, ToolStripSettings newSettings)
 {
     for (Int32 rowIndex = 0; rowIndex < panel.Rows.Length; rowIndex++)
     {
         ToolStripPanelRow row = panel.Rows[rowIndex];
         SaveToolStripRow(row, newSettings, position, rowIndex);
     }
 }
コード例 #15
0
 private static void SaveSampleSettings()
 {
     var newSettings = new ToolStripSettings();
     newSettings.Add(IRELEVANT_KEY, new ToolStripSetting() {Left = IRELEVANT_LEFT});
     newSettings.Save();
 }
コード例 #16
0
        public void NotExistingFile_Load_ReturnsNull()
        {
            ToolStripSettings loaded = ToolStripSettings.Load();

            Assert.IsNull(loaded, "We do nothing, when settings are loaded as null.");
        }