private bool saveGeneral(ref _ChangesAction result, ref bool changeDockSize)
        {
            try
            {
                var applyAutoHeight = false;
                if (PNStatic.Settings.GeneralSettings.Language != _TempSettings.GeneralSettings.Language)
                {
                    PNStatic.FormMain.ApplyNewLanguage(_TempSettings.GeneralSettings.Language);
                }
                if (PNStatic.Settings.GeneralSettings.UseSkins != _TempSettings.GeneralSettings.UseSkins)
                {
                    //apply or remove skins
                    PNStatic.Settings.GeneralSettings.UseSkins = _TempSettings.GeneralSettings.UseSkins;
                    result |= _ChangesAction.SkinsReload;
                }
                // hide toolbar
                if (PNStatic.Settings.GeneralSettings.HideToolbar != _TempSettings.GeneralSettings.HideToolbar &&
                    _TempSettings.GeneralSettings.HideToolbar)
                {
                    PNNotesOperations.ApplyHideToolbar();
                }
                // hide or show delete button
                if (PNStatic.Settings.GeneralSettings.HideDeleteButton !=
                    _TempSettings.GeneralSettings.HideDeleteButton)
                {
                    PNNotesOperations.ApplyDeleteButtonVisibility(!_TempSettings.GeneralSettings.HideDeleteButton);
                }
                // change hide to delete
                if (PNStatic.Settings.GeneralSettings.ChangeHideToDelete !=
                    _TempSettings.GeneralSettings.ChangeHideToDelete)
                {
                    PNNotesOperations.ApplyUseAlternative(_TempSettings.GeneralSettings.ChangeHideToDelete);
                }
                // hide or show hide button
                if (PNStatic.Settings.GeneralSettings.HideHideButton !=
                    _TempSettings.GeneralSettings.HideHideButton)
                {
                    PNNotesOperations.ApplyHideButtonVisibility(!_TempSettings.GeneralSettings.HideHideButton);
                }
                // scroll bars
                if (PNStatic.Settings.GeneralSettings.ShowScrollbar !=
                    _TempSettings.GeneralSettings.ShowScrollbar)
                {
                    if (_TempSettings.GeneralSettings.ShowScrollbar == System.Windows.Forms.RichTextBoxScrollBars.None)
                        PNNotesOperations.ApplyShowScrollBars(_TempSettings.GeneralSettings.ShowScrollbar);
                    else
                    {
                        if (!_TempSettings.GeneralSettings.AutoHeight)
                            PNNotesOperations.ApplyShowScrollBars(_TempSettings.GeneralSettings.ShowScrollbar);
                    }
                }
                // auto height
                if (PNStatic.Settings.GeneralSettings.AutoHeight != _TempSettings.GeneralSettings.AutoHeight)
                {
                    // auto height after
                    if (_TempSettings.GeneralSettings.AutoHeight)
                    {
                        // scroll bars after (and may be before)
                        if (_TempSettings.GeneralSettings.ShowScrollbar != System.Windows.Forms.RichTextBoxScrollBars.None)
                        {
                            // remove scroll bars
                            PNNotesOperations.ApplyShowScrollBars(System.Windows.Forms.RichTextBoxScrollBars.None);
                        }
                        // apply auto height
                        applyAutoHeight = true;
                    }
                    else
                    {
                        // scroll bars after (and may be before)
                        if (_TempSettings.GeneralSettings.ShowScrollbar != System.Windows.Forms.RichTextBoxScrollBars.None)
                        {
                            // restore scroll bars
                            PNNotesOperations.ApplyShowScrollBars(_TempSettings.GeneralSettings.ShowScrollbar);
                        }
                    }
                }
                // buttons size
                if (PNStatic.Settings.GeneralSettings.ButtonsSize != _TempSettings.GeneralSettings.ButtonsSize)
                {
                    PNNotesOperations.ApplyButtonsSize(_TempSettings.GeneralSettings.ButtonsSize);
                }
                // custom fonts
                if (PNStatic.Settings.GeneralSettings.UseCustomFonts !=
                    _TempSettings.GeneralSettings.UseCustomFonts)
                {
                    if (_TempSettings.GeneralSettings.UseCustomFonts)
                    {
                        PNInterop.AddCustomFonts();
                    }
                    else
                    {
                        PNInterop.RemoveCustomFonts();
                    }
                }
                // margins
                if (PNStatic.Settings.GeneralSettings.MarginWidth != _TempSettings.GeneralSettings.MarginWidth)
                {
                    if (!PNStatic.Settings.GeneralSettings.UseSkins)
                    {
                        PNNotesOperations.ApplyMarginsWidth(_TempSettings.GeneralSettings.MarginWidth);
                    }
                }
                // docked notes width and/or height
                if (PNStatic.Settings.GeneralSettings.DockWidth != _TempSettings.GeneralSettings.DockWidth ||
                    PNStatic.Settings.GeneralSettings.DockHeight != _TempSettings.GeneralSettings.DockHeight)
                {
                    changeDockSize = true;
                }
                // spell check color
                if (PNStatic.Settings.GeneralSettings.SpellColor != _TempSettings.GeneralSettings.SpellColor)
                {
                    if (Spellchecking.Initialized)
                    {
                        Spellchecking.ColorUnderlining = _TempSettings.GeneralSettings.SpellColor;
                        PNNotesOperations.ApplySpellColor();
                    }
                }
                // autosave
                if (PNStatic.Settings.GeneralSettings.Autosave != _TempSettings.GeneralSettings.Autosave)
                {
                    if (_TempSettings.GeneralSettings.Autosave)
                    {
                        PNStatic.FormMain.TimerAutosave.Interval =
                            _TempSettings.GeneralSettings.AutosavePeriod * 60000;
                        PNStatic.FormMain.TimerAutosave.Start();
                    }
                    else
                    {
                        PNStatic.FormMain.TimerAutosave.Stop();
                    }
                }
                else
                {
                    if (PNStatic.Settings.GeneralSettings.AutosavePeriod !=
                        _TempSettings.GeneralSettings.AutosavePeriod)
                    {
                        if (PNStatic.Settings.GeneralSettings.Autosave)
                        {
                            PNStatic.FormMain.TimerAutosave.Stop();
                            PNStatic.FormMain.TimerAutosave.Interval =
                                _TempSettings.GeneralSettings.AutosavePeriod * 60000;
                            PNStatic.FormMain.TimerAutosave.Start();
                        }
                    }
                }
                // clean bin
                if (PNStatic.Settings.GeneralSettings.RemoveFromBinPeriod !=
                    _TempSettings.GeneralSettings.RemoveFromBinPeriod)
                {
                    if (_TempSettings.GeneralSettings.RemoveFromBinPeriod == 0)
                    {
                        // stop timer
                        PNStatic.FormMain.TimerCleanBin.Stop();
                    }
                    else if (PNStatic.Settings.GeneralSettings.RemoveFromBinPeriod == 0)
                    {
                        // start timer
                        PNStatic.FormMain.TimerCleanBin.Start();
                    }
                }

                //create or delete shortcut
                string shortcutFile = Environment.GetFolderPath(Environment.SpecialFolder.Startup) +
                                      PNStrings.SHORTCUT_FILE;
                if (PNStatic.Settings.GeneralSettings.RunOnStart != _TempSettings.GeneralSettings.RunOnStart)
                {
                    if (_TempSettings.GeneralSettings.RunOnStart)
                    {
                        //create shortcut
                        if (!File.Exists(shortcutFile))
                        {
                            using (var link = new PNShellLink())
                            {
                                link.ShortcutFile = shortcutFile;
                                link.Target = System.Windows.Forms.Application.ExecutablePath;
                                link.WorkingDirectory = System.Windows.Forms.Application.StartupPath;
                                link.IconPath = System.Windows.Forms.Application.ExecutablePath;
                                link.IconIndex = 0;
                                link.Save();
                            }
                        }
                    }
                    else
                    {
                        //delete shortcut
                        if (File.Exists(shortcutFile))
                        {
                            File.Delete(shortcutFile);
                        }
                    }
                }
                PNStatic.Settings.GeneralSettings = (PNGeneralSettings)_TempSettings.GeneralSettings.Clone();
                if (applyAutoHeight)
                {
                    PNNotesOperations.ApplyAutoHeight();
                }
                PNData.SaveGeneralSettings();
                return true;
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
                return false;
            }
        }
        private bool saveBehavior(ref _ChangesAction result)
        {
            try
            {
                if (PNStatic.Settings.Behavior.HideMainWindow != _TempSettings.Behavior.HideMainWindow)
                {
                    result |= _ChangesAction.Restart;
                }
                if (Math.Abs(PNStatic.Settings.Behavior.Opacity - _TempSettings.Behavior.Opacity) >
                    double.Epsilon)
                {
                    PNNotesOperations.ApplyTransparency(_TempSettings.Behavior.Opacity);
                }
                if (PNStatic.Settings.Behavior.BigIconsOnCP != _TempSettings.Behavior.BigIconsOnCP)
                {
                    if (PNStatic.FormCP != null)
                    {
                        PNStatic.FormCP.SetToolbarIcons(_TempSettings.Behavior.BigIconsOnCP);
                    }
                }
                if (PNStatic.Settings.Behavior.HideCompleted != _TempSettings.Behavior.HideCompleted)
                {
                    if (_TempSettings.Behavior.HideCompleted)
                    {
                        //hide all notes marked as complete
                        var notes = PNStatic.Notes.Where(n => n.Visible && n.Completed);
                        foreach (PNote n in notes)
                        {
                            n.Dialog.ApplyHideNote(n);
                        }
                    }
                }
                var dblActionChanged = PNStatic.Settings.Behavior.DoubleClickAction !=
                                       _TempSettings.Behavior.DoubleClickAction;

                if (PNStatic.Settings.Behavior.KeepVisibleOnShowDesktop !=
                    _TempSettings.Behavior.KeepVisibleOnShowDesktop)
                {
                    PNNotesOperations.ApplyKeepVisibleOnShowDesktop(_TempSettings.Behavior.KeepVisibleOnShowDesktop);
                }

                if (PNStatic.Settings.Behavior.Theme != _TempSettings.Behavior.Theme)
                {
                    //PNStatic.ApplyTheme(_TempSettings.Behavior.Theme);
                    result |= _ChangesAction.Restart;
                }

                var panelFlag = 0;
                if (PNStatic.Settings.Behavior.ShowNotesPanel != _TempSettings.Behavior.ShowNotesPanel)
                {
                    PNNotesOperations.ApplyPanelButtonVisibility(_TempSettings.Behavior.ShowNotesPanel);
                    if (PNStatic.Settings.Behavior.ShowNotesPanel && !_TempSettings.Behavior.ShowNotesPanel)
                    {
                        //panel before and no panel after
                        PNStatic.FormPanel.RemoveAllThumbnails();
                        PNStatic.FormPanel.Hide();
                    }
                    else if (!PNStatic.Settings.Behavior.ShowNotesPanel && _TempSettings.Behavior.ShowNotesPanel)
                    {
                        //no panel before and panel after
                        panelFlag |= 1;
                    }
                }
                if (PNStatic.Settings.Behavior.NotesPanelOrientation != _TempSettings.Behavior.NotesPanelOrientation)
                {
                    panelFlag |= 2;
                }
                if (PNStatic.Settings.Behavior.PanelAutoHide != _TempSettings.Behavior.PanelAutoHide)
                {
                    panelFlag |= 4;
                }

                //unroll all rolled notes if RollOnDoubleClick discarded
                if (PNStatic.Settings.Behavior.RollOnDblClick != _TempSettings.Behavior.RollOnDblClick &&
                    !_TempSettings.Behavior.RollOnDblClick)
                {
                    var notes = PNStatic.Notes.Where(n => n.Rolled);
                    foreach (var note in notes)
                    {
                        if (note.Visible)
                            note.Dialog.ApplyRollUnroll(note);
                        else
                            PNNotesOperations.ApplyBooleanChange(note, NoteBooleanTypes.Roll, false, null);
                    }
                }

                PNStatic.Settings.Behavior = _TempSettings.Behavior.PNClone();

                if ((panelFlag & 1) == 1)
                {
                    PNStatic.FormPanel.Show();
                }
                if ((panelFlag & 1) == 1 || (panelFlag & 2) == 2 || (panelFlag & 4) == 4)
                {
                    PNStatic.FormPanel.SetPanelPlacement();
                }
                if ((panelFlag & 2) == 2)
                {
                    PNStatic.FormPanel.UpdateOrientationImageBinding();
                }
                if ((panelFlag & 4) == 4)
                {
                    PNStatic.FormPanel.UpdateAutoHideImageBinding();
                }

                if (dblActionChanged)
                {
                    PNStatic.FormMain.ApplyNewDefaultMenu();
                }

                PNData.SaveBehaviorSettings();
                return true;
            }
            catch (Exception ex)
            {
                PNStatic.LogException(ex);
                return false;
            }
        }