UltimateZoneBuilder/Source/Editing/EditModeAttribute.cs

124 lines
4.1 KiB
C#
Raw Normal View History

2008-01-02 21:49:43 +00:00
#region ================== Copyright (c) 2007 Pascal vd Heiden
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* 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.
*
*/
#endregion
#region ================== Namespaces
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
#endregion
namespace CodeImp.DoomBuilder.Editing
{
/// <summary>
/// This registers an EditMode derived class as a known editing mode within Doom Builder.
/// Allows automatic binding with an action and a button on the toolbar/menu.
/// </summary>
2008-01-02 21:49:43 +00:00
[AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
public class EditModeAttribute : Attribute
{
#region ================== Variables
2008-01-02 21:49:43 +00:00
// Properties
private string switchaction = null;
private string buttonimage = null;
private int buttonorder = 0;
2008-11-27 19:25:13 +00:00
private bool optional = true;
private bool isvolatile = false;
2008-11-27 12:37:20 +00:00
private string displayname = "<unnamed mode>";
private bool allowcopypaste = true;
2008-11-27 19:25:13 +00:00
private bool usebydefault = false;
2008-01-02 21:49:43 +00:00
#endregion
2008-01-02 21:49:43 +00:00
#region ================== Properties
2008-01-04 00:16:58 +00:00
/// <summary>
/// Sets the action name (as defined in the Actions.cfg resource) to
/// switch to this mode by using a shortcut key, toolbar button or menu item.
/// </summary>
2008-01-02 21:49:43 +00:00
public string SwitchAction { get { return switchaction; } set { switchaction = value; } }
2008-01-04 00:16:58 +00:00
/// <summary>
/// Image resource name of the embedded resource that will be used for the
/// toolbar button and menu item. Leave this property out or set to null to
/// display no button for this mode.
/// </summary>
2008-01-02 21:49:43 +00:00
public string ButtonImage { get { return buttonimage; } set { buttonimage = value; } }
2008-01-04 00:16:58 +00:00
/// <summary>
/// Sorting number for the order of buttons on the toolbar. Buttons with
/// lower values will be more to the left than buttons with higher values.
/// </summary>
2008-01-02 21:49:43 +00:00
public int ButtonOrder { get { return buttonorder; } set { buttonorder = value; } }
2008-01-04 00:16:58 +00:00
/// <summary>
/// When set to false, this mode will always be available for use and the user cannot
/// change this in the game configuration.
2008-01-04 00:16:58 +00:00
/// </summary>
public bool Optional { get { return optional; } set { optional = value; } }
2008-01-02 21:49:43 +00:00
2008-11-27 19:25:13 +00:00
/// <summary>
/// Set this to true to select this editing mode for use in all game configurations
/// by default. This only applies the first time and can still be changed by the user.
/// THIS OPTION MAY BE INTRUSIVE TO THE USER, USE WITH GREAT CARE!
/// </summary>
public bool UseByDefault { get { return usebydefault; } set { usebydefault = value; } }
/// <summary>
/// When set to true, this mode is cancelled when core actions like
/// undo and save are performed. The editing mode should then return to
/// a non-volatile mode.
/// </summary>
public bool Volatile { get { return isvolatile; } set { isvolatile = value; } }
/// <summary>
2008-11-27 19:25:13 +00:00
/// Name to display in the game configuration editing modes list and on the
/// information bar when the mode is currently active.
/// </summary>
public string DisplayName { get { return displayname; } set { displayname = value; } }
/// <summary>
/// When set to false, the actions Cut, Copy and Paste cannot be used
/// in this mode. Default for this property is true.
/// </summary>
public bool AllowCopyPaste { get { return allowcopypaste; } set { allowcopypaste = value; } }
2008-01-02 21:49:43 +00:00
#endregion
#region ================== Constructor / Disposer
/// <summary>
/// This registers an EditMode derived class as a known editing mode within Doom Builder.
/// Allows automatic binding with an action and a button on the toolbar/menu.
/// </summary>
2008-01-02 21:49:43 +00:00
public EditModeAttribute()
{
// Initialize
}
#endregion
#region ================== Methods
#endregion
}
}