mirror of
https://github.com/greenshot/greenshot
synced 2025-08-20 05:23:24 -07:00
"Merged" 0.8 with HEAD, so we can continue developing
git-svn-id: http://svn.code.sf.net/p/greenshot/code/trunk@1282 7dccd23d-a4a3-4e1f-8c07-b4c1b4018ab4
This commit is contained in:
parent
174f653a5a
commit
f3b0878b02
539 changed files with 86855 additions and 0 deletions
135
Greenshot/Configuration/EditorConfiguration.cs
Normal file
135
Greenshot/Configuration/EditorConfiguration.cs
Normal file
|
@ -0,0 +1,135 @@
|
|||
/*
|
||||
* Greenshot - a free and open source screenshot tool
|
||||
* Copyright (C) 2007-2011 Thomas Braun, Jens Klingen, Robin Krom
|
||||
*
|
||||
* For more information see: http://getgreenshot.org/
|
||||
* The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/greenshot/
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using Greenshot.Drawing;
|
||||
using Greenshot.Drawing.Fields;
|
||||
using Greenshot.Helpers;
|
||||
using Greenshot.UnmanagedHelpers;
|
||||
using GreenshotPlugin.Core;
|
||||
|
||||
namespace Greenshot.Configuration {
|
||||
/// <summary>
|
||||
/// Description of CoreConfiguration.
|
||||
/// </summary>
|
||||
[IniSection("Editor", Description="Greenshot editor configuration")]
|
||||
public class EditorConfiguration : IniSection {
|
||||
[IniProperty("RecentColors", Separator="|", Description="Last used colors")]
|
||||
public List<Color> RecentColors;
|
||||
|
||||
[IniProperty("LastFieldValue", Separator="|", Description="Field values, make sure the last used settings are re-used")]
|
||||
public Dictionary<string, object> LastUsedFieldValues;
|
||||
|
||||
[IniProperty("MatchSizeToCapture", Description="Match the editor window size to the capture", DefaultValue="false")]
|
||||
public bool MatchSizeToCapture;
|
||||
[IniProperty("WindowPlacementFlags", Description="Placement flags", DefaultValue="0")]
|
||||
public WindowPlacementFlags WindowPlacementFlags;
|
||||
[IniProperty("WindowShowCommand", Description="Show command", DefaultValue="Normal")]
|
||||
public ShowWindowCommand ShowWindowCommand;
|
||||
[IniProperty("WindowMinPosition", Description="Position of minimized window", DefaultValue="-1,-1")]
|
||||
public Point WindowMinPosition;
|
||||
[IniProperty("WindowMaxPosition", Description="Position of maximized window", DefaultValue="-1,-1")]
|
||||
public Point WindowMaxPosition;
|
||||
[IniProperty("WindowNormalPosition", Description="Position of normal window", DefaultValue="100,100,400,400")]
|
||||
public Rectangle WindowNormalPosition;
|
||||
|
||||
/// <summary>
|
||||
/// Supply values we can't put as defaults
|
||||
/// </summary>
|
||||
/// <param name="property">The property to return a default for</param>
|
||||
/// <returns>object with the default value for the supplied property</returns>
|
||||
public override object GetDefault(string property) {
|
||||
switch(property) {
|
||||
case "RecentColors":
|
||||
return new List<Color>();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <param name="requestingType">Type of the class for which to create the field</param>
|
||||
/// <param name="fieldType">FieldType of the field to construct</param>
|
||||
/// <param name="scope">FieldType of the field to construct</param>
|
||||
/// <returns>a new Field of the given fieldType, with the scope of it's value being restricted to the Type scope</returns>
|
||||
public Field CreateField(Type requestingType, FieldType fieldType, object preferredDefaultValue) {
|
||||
string requestingTypeName = requestingType.Name;
|
||||
string requestedField = requestingTypeName + "." + fieldType.Name;
|
||||
object fieldValue = preferredDefaultValue;
|
||||
|
||||
// Check if the configuration exists
|
||||
if (LastUsedFieldValues == null) {
|
||||
LastUsedFieldValues = new Dictionary<string, object>();
|
||||
}
|
||||
|
||||
// Check if settings for the requesting type exist, if not create!
|
||||
if (LastUsedFieldValues.ContainsKey(requestedField)) {
|
||||
// Check if a value is set (not null)!
|
||||
if (LastUsedFieldValues[requestedField] != null) {
|
||||
fieldValue = LastUsedFieldValues[requestedField];
|
||||
} else {
|
||||
// Overwrite null value
|
||||
LastUsedFieldValues[requestedField] = fieldValue;
|
||||
}
|
||||
} else {
|
||||
LastUsedFieldValues.Add(requestedField, fieldValue);
|
||||
}
|
||||
Field returnField = new Field(fieldType, requestingType);
|
||||
returnField.Value = fieldValue;
|
||||
return returnField;
|
||||
}
|
||||
|
||||
public void UpdateLastFieldValue(Field field) {
|
||||
string requestedField = field.Scope + "." + field.FieldType.Name;
|
||||
// Check if the configuration exists
|
||||
if (LastUsedFieldValues == null) {
|
||||
LastUsedFieldValues = new Dictionary<string, object>();
|
||||
}
|
||||
// check if settings for the requesting type exist, if not create!
|
||||
if (LastUsedFieldValues.ContainsKey(requestedField)) {
|
||||
LastUsedFieldValues[requestedField] = field.myValue;
|
||||
} else {
|
||||
LastUsedFieldValues.Add(requestedField, field.myValue);
|
||||
}
|
||||
}
|
||||
|
||||
public WindowPlacement GetEditorPlacement() {
|
||||
WindowPlacement placement = WindowPlacement.Default;
|
||||
placement.NormalPosition = new RECT(WindowNormalPosition);
|
||||
placement.MaxPosition = new POINT(WindowMaxPosition);
|
||||
placement.MinPosition = new POINT(WindowMinPosition);
|
||||
placement.ShowCmd = ShowWindowCommand;
|
||||
placement.Flags = WindowPlacementFlags;
|
||||
return placement;
|
||||
}
|
||||
|
||||
public void SetEditorPlacement(WindowPlacement placement) {
|
||||
WindowNormalPosition = placement.NormalPosition.ToRectangle();
|
||||
WindowMaxPosition = placement.MaxPosition.ToPoint();
|
||||
WindowMinPosition = placement.MinPosition.ToPoint();
|
||||
ShowWindowCommand = placement.ShowCmd;
|
||||
WindowPlacementFlags = placement.Flags;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue