public MainWindowSettings(IObjectData data) : base(data)
        {
            // prepare settings
            double[] logListViewColumnWidths        = null;
            NativeMethods.WINDOWPLACEMENT?placement = null;
            if (data != null)
            {
                // get settings from data
                logListViewColumnWidths = data.GetDoubleArrayValue(SettingNames.LogListViewColumnWidths, null);
                placement = data.GetNullableValue(SettingNames.Placement, CreateWINDOWPLACEMENT);
            }

            // set settings
            try {
                // may throw ArgumentException for an invalid value
                this.LogListViewColumnWidths = logListViewColumnWidths;
                this.Placement = placement;
            } catch (Exception exception) {
                throw new FormatException(exception.Message);
            }

            return;
        }