Added some missing things in ZDoom game configurations

Added Copy and Paste object properties for classic modes
Added some options for toolbar customization
This commit is contained in:
codeimp 2010-08-15 13:45:43 +00:00
parent 14415a7767
commit 34bd24505d
26 changed files with 1100 additions and 402 deletions

View file

@ -655,6 +655,37 @@ hexen
title = "Sound Number"; title = "Sound Number";
} }
} }
9048
{
title = "Sound Environment";
arg0
{
title = "First REVERBS ID";
}
arg1
{
title = "Second REVERBS ID";
}
}
14066
{
title = "Sound Sequence";
arg0
{
title = "Sound Sequence";
}
}
14165
{
title = "Music Changer";
arg0
{
title = "Music Number";
}
}
} }
marine marine

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

View file

@ -83,6 +83,15 @@ namespace CodeImp.DoomBuilder.Config
private int dockersposition; private int dockersposition;
private bool collapsedockers; private bool collapsedockers;
private int dockerswidth; private int dockerswidth;
private bool toolbarscript;
private bool toolbarundo;
private bool toolbarcopy;
private bool toolbarprefabs;
private bool toolbarfilter;
private bool toolbarviewmodes;
private bool toolbargeometry;
private bool toolbartesting;
private bool toolbarfile;
// These are not stored in the configuration, only used at runtime // These are not stored in the configuration, only used at runtime
private string defaulttexture; private string defaulttexture;
@ -135,6 +144,15 @@ namespace CodeImp.DoomBuilder.Config
public int DockersPosition { get { return dockersposition; } internal set { dockersposition = value; } } public int DockersPosition { get { return dockersposition; } internal set { dockersposition = value; } }
public bool CollapseDockers { get { return collapsedockers; } internal set { collapsedockers = value; } } public bool CollapseDockers { get { return collapsedockers; } internal set { collapsedockers = value; } }
public int DockersWidth { get { return dockerswidth; } internal set { dockerswidth = value; } } public int DockersWidth { get { return dockerswidth; } internal set { dockerswidth = value; } }
public bool ToolbarScript { get { return toolbarscript; } internal set { toolbarscript = value; } }
public bool ToolbarUndo { get { return toolbarundo; } internal set { toolbarundo = value; } }
public bool ToolbarCopy { get { return toolbarcopy; } internal set { toolbarcopy = value; } }
public bool ToolbarPrefabs { get { return toolbarprefabs; } internal set { toolbarprefabs = value; } }
public bool ToolbarFilter { get { return toolbarfilter; } internal set { toolbarfilter = value; } }
public bool ToolbarViewModes { get { return toolbarviewmodes; } internal set { toolbarviewmodes = value; } }
public bool ToolbarGeometry { get { return toolbargeometry; } internal set { toolbargeometry = value; } }
public bool ToolbarTesting { get { return toolbartesting; } internal set { toolbartesting = value; } }
public bool ToolbarFile { get { return toolbarfile; } internal set { toolbarfile = value; } }
public string DefaultTexture { get { return defaulttexture; } set { defaulttexture = value; } } public string DefaultTexture { get { return defaulttexture; } set { defaulttexture = value; } }
public string DefaultFloorTexture { get { return defaultfloortexture; } set { defaultfloortexture = value; } } public string DefaultFloorTexture { get { return defaultfloortexture; } set { defaultfloortexture = value; } }
@ -204,6 +222,15 @@ namespace CodeImp.DoomBuilder.Config
collapsedockers = cfg.ReadSetting("collapsedockers", true); collapsedockers = cfg.ReadSetting("collapsedockers", true);
dockerswidth = cfg.ReadSetting("dockerswidth", 300); dockerswidth = cfg.ReadSetting("dockerswidth", 300);
pasteoptions.ReadConfiguration(cfg, "pasteoptions"); pasteoptions.ReadConfiguration(cfg, "pasteoptions");
toolbarscript = cfg.ReadSetting("toolbarscript", true);
toolbarundo = cfg.ReadSetting("toolbarundo", false);
toolbarcopy = cfg.ReadSetting("toolbarcopy", false);
toolbarprefabs = cfg.ReadSetting("toolbarprefabs", true);
toolbarfilter = cfg.ReadSetting("toolbarfilter", true);
toolbarviewmodes = cfg.ReadSetting("toolbarviewmodes", false);
toolbargeometry = cfg.ReadSetting("toolbargeometry", true);
toolbartesting = cfg.ReadSetting("toolbartesting", true);
toolbarfile = cfg.ReadSetting("toolbarfile", true);
// Success // Success
return true; return true;
@ -255,6 +282,15 @@ namespace CodeImp.DoomBuilder.Config
cfg.WriteSetting("collapsedockers", collapsedockers); cfg.WriteSetting("collapsedockers", collapsedockers);
cfg.WriteSetting("dockerswidth", dockerswidth); cfg.WriteSetting("dockerswidth", dockerswidth);
pasteoptions.WriteConfiguration(cfg, "pasteoptions"); pasteoptions.WriteConfiguration(cfg, "pasteoptions");
cfg.WriteSetting("toolbarscript", toolbarscript);
cfg.WriteSetting("toolbarundo", toolbarundo);
cfg.WriteSetting("toolbarcopy", toolbarcopy);
cfg.WriteSetting("toolbarprefabs", toolbarprefabs);
cfg.WriteSetting("toolbarfilter", toolbarfilter);
cfg.WriteSetting("toolbarviewmodes", toolbarviewmodes);
cfg.WriteSetting("toolbargeometry", toolbargeometry);
cfg.WriteSetting("toolbartesting", toolbartesting);
cfg.WriteSetting("toolbarfile", toolbarfile);
// Save settings configuration // Save settings configuration
General.WriteLogLine("Saving program configuration..."); General.WriteLogLine("Saving program configuration...");

View file

@ -335,6 +335,7 @@ namespace CodeImp.DoomBuilder.Data
public override List<Stream> GetDecorateData(string pname) public override List<Stream> GetDecorateData(string pname)
{ {
List<Stream> streams = new List<Stream>(); List<Stream> streams = new List<Stream>();
string[] allfilenames;
// Error when suspended // Error when suspended
if(issuspended) throw new Exception("Data reader is suspended"); if(issuspended) throw new Exception("Data reader is suspended");
@ -342,7 +343,15 @@ namespace CodeImp.DoomBuilder.Data
// Find in root directory // Find in root directory
string filename = Path.GetFileName(pname); string filename = Path.GetFileName(pname);
string pathname = Path.GetDirectoryName(pname); string pathname = Path.GetDirectoryName(pname);
string[] allfilenames = GetAllFilesWithTitle(pathname, filename, false);
if(filename.IndexOf('.') > -1)
{
allfilenames = new string[1];
allfilenames[0] = Path.Combine(pathname, filename);
}
else
allfilenames = GetAllFilesWithTitle(pathname, filename, false);
foreach(string foundfile in allfilenames) foreach(string foundfile in allfilenames)
{ {
streams.Add(LoadFile(foundfile)); streams.Add(LoadFile(foundfile));

View file

@ -187,7 +187,11 @@ namespace CodeImp.DoomBuilder.Map
// Serialize / deserialize (passive: doesn't record) // Serialize / deserialize (passive: doesn't record)
internal void ReadWrite(IReadWriteStream s) internal void ReadWrite(IReadWriteStream s)
{ {
if(!s.IsWriting) BeforePropsChange(); if(!s.IsWriting)
{
BeforePropsChange();
updateneeded = true;
}
base.ReadWrite(s); base.ReadWrite(s);
@ -539,6 +543,7 @@ namespace CodeImp.DoomBuilder.Map
// This clears all flags // This clears all flags
public void ClearFlags() public void ClearFlags()
{ {
BeforePropsChange();
flags.Clear(); flags.Clear();
blocksoundflag = false; blocksoundflag = false;
impassableflag = false; impassableflag = false;

View file

@ -31,10 +31,12 @@ namespace CodeImp.DoomBuilder.Map
{ {
} }
// Copy constructor // Copy constructor (makes a deep copy)
///<summary></summary> ///<summary></summary>
public UniFields(UniFields copyfrom) : base(copyfrom) public UniFields(UniFields copyfrom) : base(copyfrom.Count)
{ {
foreach(KeyValuePair<string, UniValue> v in copyfrom)
this.Add(v.Key, new UniValue(v.Value));
} }
// New constructor // New constructor

View file

@ -114,7 +114,6 @@ namespace CodeImp.DoomBuilder.Windows
this.buttonnewmap = new System.Windows.Forms.ToolStripButton(); this.buttonnewmap = new System.Windows.Forms.ToolStripButton();
this.buttonopenmap = new System.Windows.Forms.ToolStripButton(); this.buttonopenmap = new System.Windows.Forms.ToolStripButton();
this.buttonsavemap = new System.Windows.Forms.ToolStripButton(); this.buttonsavemap = new System.Windows.Forms.ToolStripButton();
this.buttonmapoptions = new System.Windows.Forms.ToolStripButton();
this.buttonscripteditor = new System.Windows.Forms.ToolStripButton(); this.buttonscripteditor = new System.Windows.Forms.ToolStripButton();
this.buttonundo = new System.Windows.Forms.ToolStripButton(); this.buttonundo = new System.Windows.Forms.ToolStripButton();
this.buttonredo = new System.Windows.Forms.ToolStripButton(); this.buttonredo = new System.Windows.Forms.ToolStripButton();
@ -876,7 +875,6 @@ namespace CodeImp.DoomBuilder.Windows
this.buttonopenmap, this.buttonopenmap,
this.buttonsavemap, this.buttonsavemap,
toolStripSeparator3, toolStripSeparator3,
this.buttonmapoptions,
this.buttonscripteditor, this.buttonscripteditor,
toolStripSeparator10, toolStripSeparator10,
this.buttonundo, this.buttonundo,
@ -941,17 +939,6 @@ namespace CodeImp.DoomBuilder.Windows
this.buttonsavemap.Text = "Save Map"; this.buttonsavemap.Text = "Save Map";
this.buttonsavemap.Click += new System.EventHandler(this.InvokeTaggedAction); this.buttonsavemap.Click += new System.EventHandler(this.InvokeTaggedAction);
// //
// buttonmapoptions
//
this.buttonmapoptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonmapoptions.Image = global::CodeImp.DoomBuilder.Properties.Resources.Properties;
this.buttonmapoptions.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonmapoptions.Name = "buttonmapoptions";
this.buttonmapoptions.Size = new System.Drawing.Size(23, 22);
this.buttonmapoptions.Tag = "builder_mapoptions";
this.buttonmapoptions.Text = "Map Options";
this.buttonmapoptions.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonscripteditor // buttonscripteditor
// //
this.buttonscripteditor.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.buttonscripteditor.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@ -1689,7 +1676,6 @@ namespace CodeImp.DoomBuilder.Windows
private System.Windows.Forms.ToolStripMenuItem preferencesToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem preferencesToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem menuedit; private System.Windows.Forms.ToolStripMenuItem menuedit;
private System.Windows.Forms.ToolStripMenuItem itemmapoptions; private System.Windows.Forms.ToolStripMenuItem itemmapoptions;
private System.Windows.Forms.ToolStripButton buttonmapoptions;
private System.Windows.Forms.ToolStripMenuItem itemreloadresources; private System.Windows.Forms.ToolStripMenuItem itemreloadresources;
private CodeImp.DoomBuilder.Controls.LinedefInfoPanel linedefinfo; private CodeImp.DoomBuilder.Controls.LinedefInfoPanel linedefinfo;
private CodeImp.DoomBuilder.Controls.VertexInfoPanel vertexinfo; private CodeImp.DoomBuilder.Controls.VertexInfoPanel vertexinfo;

View file

@ -485,6 +485,7 @@ namespace CodeImp.DoomBuilder.Windows
{ {
windowactive = true; windowactive = true;
UpdateInterface();
ResumeExclusiveMouseInput(); ResumeExclusiveMouseInput();
ReleaseAllKeys(); ReleaseAllKeys();
FocusDisplay(); FocusDisplay();
@ -1533,8 +1534,32 @@ namespace CodeImp.DoomBuilder.Windows
// This enables or disables all editing mode items and toolbar buttons // This enables or disables all editing mode items and toolbar buttons
private void UpdateToolbar() private void UpdateToolbar()
{ {
// Show/hide items based on preferences
buttonnewmap.Visible = General.Settings.ToolbarFile;
buttonopenmap.Visible = General.Settings.ToolbarFile;
buttonsavemap.Visible = General.Settings.ToolbarFile;
buttonscripteditor.Visible = General.Settings.ToolbarScript;
buttonundo.Visible = General.Settings.ToolbarUndo;
buttonredo.Visible = General.Settings.ToolbarUndo;
buttoncut.Visible = General.Settings.ToolbarCopy;
buttoncopy.Visible = General.Settings.ToolbarCopy;
buttonpaste.Visible = General.Settings.ToolbarCopy;
buttoninsertprefabfile.Visible = General.Settings.ToolbarPrefabs;
buttoninsertpreviousprefab.Visible = General.Settings.ToolbarPrefabs;
buttonthingsfilter.Visible = General.Settings.ToolbarFilter;
thingfilters.Visible = General.Settings.ToolbarFilter;
buttonviewbrightness.Visible = General.Settings.ToolbarViewModes;
buttonviewceilings.Visible = General.Settings.ToolbarViewModes;
buttonviewfloors.Visible = General.Settings.ToolbarViewModes;
buttonviewnormal.Visible = General.Settings.ToolbarViewModes;
buttonsnaptogrid.Visible = General.Settings.ToolbarGeometry;
buttonautomerge.Visible = General.Settings.ToolbarGeometry;
buttontest.Visible = General.Settings.ToolbarTesting;
// Enable/disable all edit mode items // Enable/disable all edit mode items
foreach(ToolStripItem i in editmodeitems) i.Enabled = (General.Map != null); foreach(ToolStripItem i in editmodeitems) i.Enabled = (General.Map != null);
UpdateSeparators();
} }
// This checks one of the edit mode items (and unchecks all others) // This checks one of the edit mode items (and unchecks all others)
@ -1940,7 +1965,6 @@ namespace CodeImp.DoomBuilder.Windows
itemredo.Text = "Redo"; itemredo.Text = "Redo";
// Toolbar icons // Toolbar icons
buttonmapoptions.Enabled = (General.Map != null);
buttonundo.Enabled = itemundo.Enabled; buttonundo.Enabled = itemundo.Enabled;
buttonredo.Enabled = itemredo.Enabled; buttonredo.Enabled = itemredo.Enabled;
buttonundo.ToolTipText = itemundo.Text; buttonundo.ToolTipText = itemundo.Text;
@ -2135,6 +2159,7 @@ namespace CodeImp.DoomBuilder.Windows
{ {
// Update stuff // Update stuff
SetupInterface(); SetupInterface();
UpdateInterface();
ApplyShortcutKeys(); ApplyShortcutKeys();
General.Colors.CreateCorrectionTable(); General.Colors.CreateCorrectionTable();
General.Plugins.ProgramReconfigure(); General.Plugins.ProgramReconfigure();

File diff suppressed because it is too large Load diff

View file

@ -84,6 +84,15 @@ namespace CodeImp.DoomBuilder.Windows
animatevisualselection.Checked = General.Settings.AnimateVisualSelection; animatevisualselection.Checked = General.Settings.AnimateVisualSelection;
dockersposition.SelectedIndex = General.Settings.DockersPosition; dockersposition.SelectedIndex = General.Settings.DockersPosition;
collapsedockers.Checked = General.Settings.CollapseDockers; collapsedockers.Checked = General.Settings.CollapseDockers;
toolbar_file.Checked = General.Settings.ToolbarFile;
toolbar_script.Checked = General.Settings.ToolbarScript;
toolbar_undo.Checked = General.Settings.ToolbarUndo;
toolbar_copy.Checked = General.Settings.ToolbarCopy;
toolbar_prefabs.Checked = General.Settings.ToolbarPrefabs;
toolbar_filter.Checked = General.Settings.ToolbarFilter;
toolbar_viewmodes.Checked = General.Settings.ToolbarViewModes;
toolbar_geometry.Checked = General.Settings.ToolbarGeometry;
toolbar_testing.Checked = General.Settings.ToolbarTesting;
// Fill fonts list // Fill fonts list
scriptfontname.BeginUpdate(); scriptfontname.BeginUpdate();
@ -197,6 +206,15 @@ namespace CodeImp.DoomBuilder.Windows
General.Settings.AnimateVisualSelection = animatevisualselection.Checked; General.Settings.AnimateVisualSelection = animatevisualselection.Checked;
General.Settings.DockersPosition = dockersposition.SelectedIndex; General.Settings.DockersPosition = dockersposition.SelectedIndex;
General.Settings.CollapseDockers = collapsedockers.Checked; General.Settings.CollapseDockers = collapsedockers.Checked;
General.Settings.ToolbarFile = toolbar_file.Checked;
General.Settings.ToolbarScript = toolbar_script.Checked;
General.Settings.ToolbarUndo = toolbar_undo.Checked;
General.Settings.ToolbarCopy = toolbar_copy.Checked;
General.Settings.ToolbarPrefabs = toolbar_prefabs.Checked;
General.Settings.ToolbarFilter = toolbar_filter.Checked;
General.Settings.ToolbarViewModes = toolbar_viewmodes.Checked;
General.Settings.ToolbarGeometry = toolbar_geometry.Checked;
General.Settings.ToolbarTesting = toolbar_testing.Checked;
// Script font size // Script font size
int fontsize = 8; int fontsize = 8;

View file

@ -141,6 +141,9 @@
<metadata name="groupBox1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="groupBox1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value> <value>False</value>
</metadata> </metadata>
<metadata name="scriptontop.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="zoomfactor.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="zoomfactor.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@ -186,12 +189,21 @@
<metadata name="colorsgroup1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="colorsgroup1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="label2.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colorgrid64.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="colorgrid64.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="squarethings.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colorgrid.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="colorgrid.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="doublesidedalphalabel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colorindication.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="colorindication.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@ -201,6 +213,9 @@
<metadata name="colorspeciallinedefs.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="colorspeciallinedefs.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="qualitydisplay.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colorbackcolor.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="colorbackcolor.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@ -210,6 +225,9 @@
<metadata name="colorvertices.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="colorvertices.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="doublesidedalpha.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colorhighlight.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="colorhighlight.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@ -228,6 +246,36 @@
<metadata name="tabinterface.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="tabinterface.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="groupBox5.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="toolbar_file.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="toolbar_testing.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="toolbar_geometry.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="toolbar_viewmodes.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="toolbar_filter.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="toolbar_prefabs.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="toolbar_copy.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="toolbar_undo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="toolbar_script.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="groupBox4.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="groupBox4.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@ -240,42 +288,6 @@
<metadata name="label17.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="label17.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="groupBox3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="scripttabwidth.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="scriptautoindent.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="label10.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="scriptontop.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="panel1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="scriptfontlabel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="scriptfontsize.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="label8.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="scriptfontbold.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="scriptfontname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="label3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="groupBox2.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="groupBox2.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@ -354,21 +366,12 @@
<metadata name="appearancegroup1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="appearancegroup1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="label2.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="animatevisualselection.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="animatevisualselection.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="blackbrowsers.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="blackbrowsers.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="squarethings.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="doublesidedalphalabel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="visualbilinear.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="visualbilinear.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@ -378,18 +381,42 @@
<metadata name="imagebrightnesslabel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="imagebrightnesslabel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="qualitydisplay.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="doublesidedalpha.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="imagebrightness.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="imagebrightness.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="colorsgroup3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="colorsgroup3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="scripttabwidth.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="scriptautoindent.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="label10.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="panel1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="scriptfontlabel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="scriptfontsize.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="label8.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="scriptfontbold.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="scriptfontname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="label3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colorconstants.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="colorconstants.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>

View file

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion> <ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion> <SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{B42D5AA0-F9A6-4234-9C4B-A05B11A64851}</ProjectGuid> <ProjectGuid>{B42D5AA0-F9A6-4234-9C4B-A05B11A64851}</ProjectGuid>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
@ -287,6 +287,12 @@
<ItemGroup> <ItemGroup>
<None Include="Resources\CurveLines.png" /> <None Include="Resources\CurveLines.png" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Include="Resources\CopyProperties.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\PasteProperties.png" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.

View file

@ -206,6 +206,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
renderer.SetPresentation(Presentation.Standard); renderer.SetPresentation(Presentation.Standard);
// Add toolbar buttons // Add toolbar buttons
General.Interface.AddButton(BuilderPlug.Me.MenusForm.CopyProperties);
General.Interface.AddButton(BuilderPlug.Me.MenusForm.PasteProperties);
General.Interface.AddButton(BuilderPlug.Me.MenusForm.SeparatorCopyPaste);
General.Interface.AddButton(BuilderPlug.Me.MenusForm.CurveLinedefs); General.Interface.AddButton(BuilderPlug.Me.MenusForm.CurveLinedefs);
// Convert geometry selection to linedefs selection // Convert geometry selection to linedefs selection
@ -218,6 +221,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
base.OnDisengage(); base.OnDisengage();
// Remove toolbar buttons // Remove toolbar buttons
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.CopyProperties);
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.PasteProperties);
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.SeparatorCopyPaste);
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.CurveLinedefs); General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.CurveLinedefs);
// Going to EditSelectionMode? // Going to EditSelectionMode?
@ -540,6 +546,63 @@ namespace CodeImp.DoomBuilder.BuilderModes
#region ================== Actions #region ================== Actions
// This copies the properties
[BeginAction("classiccopyproperties")]
public void CopyProperties()
{
// Determine source linedefs
ICollection<Linedef> sel = null;
if(General.Map.Map.SelectedLinedefsCount > 0)
sel = General.Map.Map.GetSelectedLinedefs(true);
else if(highlighted != null)
{
sel = new List<Linedef>();
sel.Add(highlighted);
}
if(sel != null)
{
// Copy properties from first source linedef
BuilderPlug.Me.CopiedLinedefProps = new LinedefProperties(General.GetByIndex(sel, 0));
General.Interface.DisplayStatus(StatusType.Action, "Copied linedef properties.");
}
}
// This pastes the properties
[BeginAction("classicpasteproperties")]
public void PasteProperties()
{
if(BuilderPlug.Me.CopiedLinedefProps != null)
{
// Determine target linedefs
ICollection<Linedef> sel = null;
if(General.Map.Map.SelectedLinedefsCount > 0)
sel = General.Map.Map.GetSelectedLinedefs(true);
else if(highlighted != null)
{
sel = new List<Linedef>();
sel.Add(highlighted);
}
if(sel != null)
{
// Apply properties to selection
General.Map.UndoRedo.CreateUndo("Paste linedef properties");
foreach(Linedef l in sel)
{
BuilderPlug.Me.CopiedLinedefProps.Apply(l);
l.UpdateCache();
}
General.Interface.DisplayStatus(StatusType.Action, "Pasted linedef properties.");
// Update and redraw
General.Map.IsChanged = true;
General.Interface.RefreshInfo();
General.Interface.RedrawDisplay();
}
}
}
// This keeps only the single-sided lines selected // This keeps only the single-sided lines selected
[BeginAction("selectsinglesided")] [BeginAction("selectsinglesided")]
public void SelectSingleSided() public void SelectSingleSided()

View file

@ -408,6 +408,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
renderer.SetPresentation(Presentation.Standard); renderer.SetPresentation(Presentation.Standard);
// Add toolbar buttons // Add toolbar buttons
General.Interface.AddButton(BuilderPlug.Me.MenusForm.CopyProperties);
General.Interface.AddButton(BuilderPlug.Me.MenusForm.PasteProperties);
General.Interface.AddButton(BuilderPlug.Me.MenusForm.SeparatorCopyPaste);
General.Interface.AddButton(BuilderPlug.Me.MenusForm.ViewSelectionNumbers); General.Interface.AddButton(BuilderPlug.Me.MenusForm.ViewSelectionNumbers);
General.Interface.AddButton(BuilderPlug.Me.MenusForm.SeparatorSectors1); General.Interface.AddButton(BuilderPlug.Me.MenusForm.SeparatorSectors1);
General.Interface.AddButton(BuilderPlug.Me.MenusForm.MakeGradientBrightness); General.Interface.AddButton(BuilderPlug.Me.MenusForm.MakeGradientBrightness);
@ -431,6 +434,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
base.OnDisengage(); base.OnDisengage();
// Remove toolbar buttons // Remove toolbar buttons
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.CopyProperties);
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.PasteProperties);
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.SeparatorCopyPaste);
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.ViewSelectionNumbers); General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.ViewSelectionNumbers);
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.SeparatorSectors1); General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.SeparatorSectors1);
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.MakeGradientBrightness); General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.MakeGradientBrightness);
@ -855,6 +861,64 @@ namespace CodeImp.DoomBuilder.BuilderModes
#region ================== Actions #region ================== Actions
// This copies the properties
[BeginAction("classiccopyproperties")]
public void CopyProperties()
{
// Determine source sectors
ICollection<Sector> sel = null;
if(General.Map.Map.SelectedSectorsCount > 0)
sel = General.Map.Map.GetSelectedSectors(true);
else if(highlighted != null)
{
sel = new List<Sector>();
sel.Add(highlighted);
}
if(sel != null)
{
// Copy properties from first source sectors
BuilderPlug.Me.CopiedSectorProps = new SectorProperties(General.GetByIndex(sel, 0));
General.Interface.DisplayStatus(StatusType.Action, "Copied sector properties.");
}
}
// This pastes the properties
[BeginAction("classicpasteproperties")]
public void PasteProperties()
{
if(BuilderPlug.Me.CopiedSectorProps != null)
{
// Determine target sectors
ICollection<Sector> sel = null;
if(General.Map.Map.SelectedSectorsCount > 0)
sel = General.Map.Map.GetSelectedSectors(true);
else if(highlighted != null)
{
sel = new List<Sector>();
sel.Add(highlighted);
}
if(sel != null)
{
// Apply properties to selection
General.Map.UndoRedo.CreateUndo("Paste sector properties");
foreach(Sector s in sel)
{
BuilderPlug.Me.CopiedSectorProps.Apply(s);
s.UpdateCeilingSurface();
s.UpdateFloorSurface();
}
General.Interface.DisplayStatus(StatusType.Action, "Pasted sector properties.");
// Update and redraw
General.Map.IsChanged = true;
General.Interface.RefreshInfo();
General.Interface.RedrawDisplay();
}
}
}
// This creates a new vertex at the mouse position // This creates a new vertex at the mouse position
[BeginAction("insertitem", BaseAction = true)] [BeginAction("insertitem", BaseAction = true)]
public virtual void InsertVertexAction() public virtual void InsertVertexAction()

View file

@ -97,6 +97,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
base.OnEngage(); base.OnEngage();
renderer.SetPresentation(Presentation.Things); renderer.SetPresentation(Presentation.Things);
// Add toolbar buttons
General.Interface.AddButton(BuilderPlug.Me.MenusForm.CopyProperties);
General.Interface.AddButton(BuilderPlug.Me.MenusForm.PasteProperties);
// Convert geometry selection to linedefs selection // Convert geometry selection to linedefs selection
General.Map.Map.ConvertSelection(SelectionType.Linedefs); General.Map.Map.ConvertSelection(SelectionType.Linedefs);
General.Map.Map.SelectionType = SelectionType.Things; General.Map.Map.SelectionType = SelectionType.Things;
@ -107,6 +111,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
{ {
base.OnDisengage(); base.OnDisengage();
// Remove toolbar buttons
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.CopyProperties);
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.PasteProperties);
// Going to EditSelectionMode? // Going to EditSelectionMode?
if(General.Editing.NewMode is EditSelectionMode) if(General.Editing.NewMode is EditSelectionMode)
{ {
@ -524,6 +532,64 @@ namespace CodeImp.DoomBuilder.BuilderModes
#region ================== Actions #region ================== Actions
// This copies the properties
[BeginAction("classiccopyproperties")]
public void CopyProperties()
{
// Determine source things
ICollection<Thing> sel = null;
if(General.Map.Map.SelectedThingsCount > 0)
sel = General.Map.Map.GetSelectedThings(true);
else if(highlighted != null)
{
sel = new List<Thing>();
sel.Add(highlighted);
}
if(sel != null)
{
// Copy properties from first source thing
BuilderPlug.Me.CopiedThingProps = new ThingProperties(General.GetByIndex(sel, 0));
General.Interface.DisplayStatus(StatusType.Action, "Copied thing properties.");
}
}
// This pastes the properties
[BeginAction("classicpasteproperties")]
public void PasteProperties()
{
if(BuilderPlug.Me.CopiedThingProps != null)
{
// Determine target things
ICollection<Thing> sel = null;
if(General.Map.Map.SelectedThingsCount > 0)
sel = General.Map.Map.GetSelectedThings(true);
else if(highlighted != null)
{
sel = new List<Thing>();
sel.Add(highlighted);
}
if(sel != null)
{
// Apply properties to selection
General.Map.UndoRedo.CreateUndo("Paste thing properties");
foreach(Thing t in sel)
{
BuilderPlug.Me.CopiedThingProps.Apply(t);
t.UpdateConfiguration();
}
General.Interface.DisplayStatus(StatusType.Action, "Pasted thing properties.");
// Update and redraw
General.Map.IsChanged = true;
General.Map.ThingsFilter.Update();
General.Interface.RefreshInfo();
General.Interface.RedrawDisplay();
}
}
}
// This clears the selection // This clears the selection
[BeginAction("clearselection", BaseAction = true)] [BeginAction("clearselection", BaseAction = true)]
public void ClearSelection() public void ClearSelection()

View file

@ -92,6 +92,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
base.OnEngage(); base.OnEngage();
renderer.SetPresentation(Presentation.Standard); renderer.SetPresentation(Presentation.Standard);
// Add toolbar buttons
General.Interface.AddButton(BuilderPlug.Me.MenusForm.CopyProperties);
General.Interface.AddButton(BuilderPlug.Me.MenusForm.PasteProperties);
// Convert geometry selection to vertices only // Convert geometry selection to vertices only
General.Map.Map.ConvertSelection(SelectionType.Vertices); General.Map.Map.ConvertSelection(SelectionType.Vertices);
} }
@ -101,6 +105,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
{ {
base.OnDisengage(); base.OnDisengage();
// Remove toolbar buttons
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.CopyProperties);
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.PasteProperties);
// Going to EditSelectionMode? // Going to EditSelectionMode?
if(General.Editing.NewMode is EditSelectionMode) if(General.Editing.NewMode is EditSelectionMode)
{ {
@ -486,6 +494,62 @@ namespace CodeImp.DoomBuilder.BuilderModes
#region ================== Actions #region ================== Actions
// This copies the properties
[BeginAction("classiccopyproperties")]
public void CopyProperties()
{
// Determine source vertices
ICollection<Vertex> sel = null;
if(General.Map.Map.SelectedVerticessCount > 0)
sel = General.Map.Map.GetSelectedVertices(true);
else if(highlighted != null)
{
sel = new List<Vertex>();
sel.Add(highlighted);
}
if(sel != null)
{
// Copy properties from first source vertex
BuilderPlug.Me.CopiedVertexProps = new VertexProperties(General.GetByIndex(sel, 0));
General.Interface.DisplayStatus(StatusType.Action, "Copied vertex properties.");
}
}
// This pastes the properties
[BeginAction("classicpasteproperties")]
public void PasteProperties()
{
if(BuilderPlug.Me.CopiedVertexProps != null)
{
// Determine target vertices
ICollection<Vertex> sel = null;
if(General.Map.Map.SelectedVerticessCount > 0)
sel = General.Map.Map.GetSelectedVertices(true);
else if(highlighted != null)
{
sel = new List<Vertex>();
sel.Add(highlighted);
}
if(sel != null)
{
// Apply properties to selection
General.Map.UndoRedo.CreateUndo("Paste vertex properties");
foreach(Vertex v in sel)
{
BuilderPlug.Me.CopiedVertexProps.Apply(v);
}
General.Interface.DisplayStatus(StatusType.Action, "Pasted vertex properties.");
// Update and redraw
General.Map.IsChanged = true;
General.Interface.RefreshInfo();
General.Interface.RedrawDisplay();
}
}
}
// This clears the selection // This clears the selection
[BeginAction("clearselection", BaseAction = true)] [BeginAction("clearselection", BaseAction = true)]
public void ClearSelection() public void ClearSelection()

View file

@ -87,8 +87,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
private string copiedtexture; private string copiedtexture;
private string copiedflat; private string copiedflat;
private Point copiedoffsets; private Point copiedoffsets;
private VertexProperties copiedvertexprops;
private SectorProperties copiedsectorprops; private SectorProperties copiedsectorprops;
private SidedefProperties copiedsidedefprops; private SidedefProperties copiedsidedefprops;
private LinedefProperties copiedlinedefprops;
private ThingProperties copiedthingprops; private ThingProperties copiedthingprops;
private bool viewselectionnumbers; private bool viewselectionnumbers;
private float stitchrange; private float stitchrange;
@ -128,8 +130,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
public string CopiedTexture { get { return copiedtexture; } set { copiedtexture = value; } } public string CopiedTexture { get { return copiedtexture; } set { copiedtexture = value; } }
public string CopiedFlat { get { return copiedflat; } set { copiedflat = value; } } public string CopiedFlat { get { return copiedflat; } set { copiedflat = value; } }
public Point CopiedOffsets { get { return copiedoffsets; } set { copiedoffsets = value; } } public Point CopiedOffsets { get { return copiedoffsets; } set { copiedoffsets = value; } }
public VertexProperties CopiedVertexProps { get { return copiedvertexprops; } set { copiedvertexprops = value; } }
public SectorProperties CopiedSectorProps { get { return copiedsectorprops; } set { copiedsectorprops = value; } } public SectorProperties CopiedSectorProps { get { return copiedsectorprops; } set { copiedsectorprops = value; } }
public SidedefProperties CopiedSidedefProps { get { return copiedsidedefprops; } set { copiedsidedefprops = value; } } public SidedefProperties CopiedSidedefProps { get { return copiedsidedefprops; } set { copiedsidedefprops = value; } }
public LinedefProperties CopiedLinedefProps { get { return copiedlinedefprops; } set { copiedlinedefprops = value; } }
public ThingProperties CopiedThingProps { get { return copiedthingprops; } set { copiedthingprops = value; } } public ThingProperties CopiedThingProps { get { return copiedthingprops; } set { copiedthingprops = value; } }
public bool ViewSelectionNumbers { get { return viewselectionnumbers; } set { viewselectionnumbers = value; } } public bool ViewSelectionNumbers { get { return viewselectionnumbers; } set { viewselectionnumbers = value; } }
public float StitchRange { get { return stitchrange; } } public float StitchRange { get { return stitchrange; } }

View file

@ -40,6 +40,25 @@ using CodeImp.DoomBuilder.Data;
namespace CodeImp.DoomBuilder.BuilderModes namespace CodeImp.DoomBuilder.BuilderModes
{ {
// Vertex
public class VertexProperties
{
private UniFields fields;
public VertexProperties(Vertex v)
{
fields = new UniFields(v.Fields);
}
public void Apply(Vertex v)
{
v.Fields.BeforeFieldsChange();
v.Fields.Clear();
foreach(KeyValuePair<string, UniValue> uv in fields)
v.Fields.Add(uv.Key, new UniValue(uv.Value));
}
}
// Sector // Sector
public class SectorProperties public class SectorProperties
{ {
@ -47,8 +66,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
private int ceilheight; private int ceilheight;
private string floortexture; private string floortexture;
private string ceilingtexture; private string ceilingtexture;
private int effect;
private int brightness; private int brightness;
private int tag; private int tag;
private UniFields fields;
public SectorProperties(Sector s) public SectorProperties(Sector s)
{ {
@ -57,7 +78,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
floortexture = s.FloorTexture; floortexture = s.FloorTexture;
ceilingtexture = s.CeilTexture; ceilingtexture = s.CeilTexture;
brightness = s.Brightness; brightness = s.Brightness;
effect = s.Effect;
tag = s.Tag; tag = s.Tag;
fields = new UniFields(s.Fields);
} }
public void Apply(Sector s) public void Apply(Sector s)
@ -67,7 +90,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
s.SetFloorTexture(floortexture); s.SetFloorTexture(floortexture);
s.SetCeilTexture(ceilingtexture); s.SetCeilTexture(ceilingtexture);
s.Brightness = brightness; s.Brightness = brightness;
s.Tag = s.Tag; s.Tag = tag;
s.Effect = effect;
s.Fields.BeforeFieldsChange();
s.Fields.Clear();
foreach(KeyValuePair<string, UniValue> v in fields)
s.Fields.Add(v.Key, new UniValue(v.Value));
} }
} }
@ -79,6 +107,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
private string lowtexture; private string lowtexture;
private int offsetx; private int offsetx;
private int offsety; private int offsety;
private UniFields fields;
public SidedefProperties(Sidedef s) public SidedefProperties(Sidedef s)
{ {
@ -87,6 +116,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
lowtexture = s.LowTexture; lowtexture = s.LowTexture;
offsetx = s.OffsetX; offsetx = s.OffsetX;
offsety = s.OffsetY; offsety = s.OffsetY;
fields = new UniFields(s.Fields);
} }
public void Apply(Sidedef s) public void Apply(Sidedef s)
@ -96,6 +126,61 @@ namespace CodeImp.DoomBuilder.BuilderModes
s.SetTextureLow(lowtexture); s.SetTextureLow(lowtexture);
s.OffsetX = offsetx; s.OffsetX = offsetx;
s.OffsetY = offsety; s.OffsetY = offsety;
s.Fields.BeforeFieldsChange();
s.Fields.Clear();
foreach(KeyValuePair<string, UniValue> v in fields)
s.Fields.Add(v.Key, new UniValue(v.Value));
}
}
// Linedef
public class LinedefProperties
{
private SidedefProperties front;
private SidedefProperties back;
private Dictionary<string, bool> flags;
private int action;
private int activate;
private int tag;
private int[] args;
private UniFields fields;
public LinedefProperties(Linedef l)
{
if(l.Front != null)
front = new SidedefProperties(l.Front);
else
front = null;
if(l.Back != null)
back = new SidedefProperties(l.Back);
else
back = null;
flags = l.GetFlags();
action = l.Action;
activate = l.Activate;
tag = l.Tag;
args = (int[])(l.Args.Clone());
fields = new UniFields(l.Fields);
}
public void Apply(Linedef l)
{
if((front != null) && (l.Front != null)) front.Apply(l.Front);
if((back != null) && (l.Back != null)) back.Apply(l.Back);
l.ClearFlags();
foreach(KeyValuePair<string, bool> f in flags)
l.SetFlag(f.Key, f.Value);
l.Action = action;
l.Activate = activate;
l.Tag = tag;
for(int i = 0; i < l.Args.Length; i++)
l.Args[i] = args[i];
l.Fields.BeforeFieldsChange();
l.Fields.Clear();
foreach(KeyValuePair<string, UniValue> v in fields)
l.Fields.Add(v.Key, new UniValue(v.Value));
} }
} }
@ -108,6 +193,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
private int tag; private int tag;
private int action; private int action;
private int[] args; private int[] args;
private UniFields fields;
public ThingProperties(Thing t) public ThingProperties(Thing t)
{ {
@ -117,6 +203,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
tag = t.Tag; tag = t.Tag;
action = t.Action; action = t.Action;
args = (int[])(t.Args.Clone()); args = (int[])(t.Args.Clone());
fields = new UniFields(t.Fields);
} }
public void Apply(Thing t) public void Apply(Thing t)
@ -130,6 +217,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
t.Action = action; t.Action = action;
for(int i = 0; i < t.Args.Length; i++) for(int i = 0; i < t.Args.Length; i++)
t.Args[i] = args[i]; t.Args[i] = args[i];
t.Fields.BeforeFieldsChange();
t.Fields.Clear();
foreach(KeyValuePair<string, UniValue> v in fields)
t.Fields.Add(v.Key, new UniValue(v.Value));
} }
} }
} }

View file

@ -45,14 +45,17 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
this.globalstrip = new System.Windows.Forms.ToolStrip(); this.globalstrip = new System.Windows.Forms.ToolStrip();
this.manualstrip = new System.Windows.Forms.ToolStrip(); this.manualstrip = new System.Windows.Forms.ToolStrip();
this.buttonselectionnumbers = new System.Windows.Forms.ToolStripButton();
this.separatorsectors1 = new System.Windows.Forms.ToolStripSeparator(); this.separatorsectors1 = new System.Windows.Forms.ToolStripSeparator();
this.buttonselectionnumbers = new System.Windows.Forms.ToolStripButton();
this.buttonbrightnessgradient = new System.Windows.Forms.ToolStripButton(); this.buttonbrightnessgradient = new System.Windows.Forms.ToolStripButton();
this.buttonfloorgradient = new System.Windows.Forms.ToolStripButton(); this.buttonfloorgradient = new System.Windows.Forms.ToolStripButton();
this.buttonceilinggradient = new System.Windows.Forms.ToolStripButton(); this.buttonceilinggradient = new System.Windows.Forms.ToolStripButton();
this.buttonflipselectionh = new System.Windows.Forms.ToolStripButton(); this.buttonflipselectionh = new System.Windows.Forms.ToolStripButton();
this.buttonflipselectionv = new System.Windows.Forms.ToolStripButton(); this.buttonflipselectionv = new System.Windows.Forms.ToolStripButton();
this.buttoncurvelinedefs = new System.Windows.Forms.ToolStripButton(); this.buttoncurvelinedefs = new System.Windows.Forms.ToolStripButton();
this.buttoncopyproperties = new System.Windows.Forms.ToolStripButton();
this.buttonpasteproperties = new System.Windows.Forms.ToolStripButton();
this.seperatorcopypaste = new System.Windows.Forms.ToolStripSeparator();
this.menustrip.SuspendLayout(); this.menustrip.SuspendLayout();
this.manualstrip.SuspendLayout(); this.manualstrip.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
@ -191,6 +194,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
// manualstrip // manualstrip
// //
this.manualstrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.manualstrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.buttoncopyproperties,
this.buttonpasteproperties,
this.seperatorcopypaste,
this.buttonselectionnumbers, this.buttonselectionnumbers,
this.separatorsectors1, this.separatorsectors1,
this.buttonbrightnessgradient, this.buttonbrightnessgradient,
@ -205,6 +211,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.manualstrip.TabIndex = 2; this.manualstrip.TabIndex = 2;
this.manualstrip.Text = "toolStrip1"; this.manualstrip.Text = "toolStrip1";
// //
// separatorsectors1
//
this.separatorsectors1.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
this.separatorsectors1.Name = "separatorsectors1";
this.separatorsectors1.Size = new System.Drawing.Size(6, 25);
//
// buttonselectionnumbers // buttonselectionnumbers
// //
this.buttonselectionnumbers.CheckOnClick = true; this.buttonselectionnumbers.CheckOnClick = true;
@ -216,12 +228,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.buttonselectionnumbers.Text = "View Selection Numbering"; this.buttonselectionnumbers.Text = "View Selection Numbering";
this.buttonselectionnumbers.Click += new System.EventHandler(this.buttonselectionnumbers_Click); this.buttonselectionnumbers.Click += new System.EventHandler(this.buttonselectionnumbers_Click);
// //
// separatorsectors1
//
this.separatorsectors1.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
this.separatorsectors1.Name = "separatorsectors1";
this.separatorsectors1.Size = new System.Drawing.Size(6, 25);
//
// buttonbrightnessgradient // buttonbrightnessgradient
// //
this.buttonbrightnessgradient.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.buttonbrightnessgradient.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@ -289,6 +295,34 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.buttoncurvelinedefs.Text = "Curve Linedefs"; this.buttoncurvelinedefs.Text = "Curve Linedefs";
this.buttoncurvelinedefs.Click += new System.EventHandler(this.InvokeTaggedAction); this.buttoncurvelinedefs.Click += new System.EventHandler(this.InvokeTaggedAction);
// //
// buttoncopyproperties
//
this.buttoncopyproperties.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttoncopyproperties.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.CopyProperties;
this.buttoncopyproperties.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttoncopyproperties.Name = "buttoncopyproperties";
this.buttoncopyproperties.Size = new System.Drawing.Size(23, 22);
this.buttoncopyproperties.Tag = "classiccopyproperties";
this.buttoncopyproperties.Text = "Copy Properties";
this.buttoncopyproperties.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonpasteproperties
//
this.buttonpasteproperties.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonpasteproperties.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PasteProperties;
this.buttonpasteproperties.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonpasteproperties.Name = "buttonpasteproperties";
this.buttonpasteproperties.Size = new System.Drawing.Size(23, 22);
this.buttonpasteproperties.Tag = "classicpasteproperties";
this.buttonpasteproperties.Text = "Paste Properties";
this.buttonpasteproperties.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// seperatorcopypaste
//
this.seperatorcopypaste.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
this.seperatorcopypaste.Name = "seperatorcopypaste";
this.seperatorcopypaste.Size = new System.Drawing.Size(6, 25);
//
// MenusForm // MenusForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
@ -342,5 +376,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
private System.Windows.Forms.ToolStripButton buttonfloorgradient; private System.Windows.Forms.ToolStripButton buttonfloorgradient;
private System.Windows.Forms.ToolStripButton buttonceilinggradient; private System.Windows.Forms.ToolStripButton buttonceilinggradient;
private System.Windows.Forms.ToolStripButton buttoncurvelinedefs; private System.Windows.Forms.ToolStripButton buttoncurvelinedefs;
private System.Windows.Forms.ToolStripButton buttoncopyproperties;
private System.Windows.Forms.ToolStripButton buttonpasteproperties;
private System.Windows.Forms.ToolStripSeparator seperatorcopypaste;
} }
} }

View file

@ -60,6 +60,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
public ToolStripButton FlipSelectionV { get { return buttonflipselectionv; } } public ToolStripButton FlipSelectionV { get { return buttonflipselectionv; } }
public ToolStripButton FlipSelectionH { get { return buttonflipselectionh; } } public ToolStripButton FlipSelectionH { get { return buttonflipselectionh; } }
public ToolStripButton CurveLinedefs { get { return buttoncurvelinedefs; } } public ToolStripButton CurveLinedefs { get { return buttoncurvelinedefs; } }
public ToolStripButton CopyProperties { get { return buttoncopyproperties; } }
public ToolStripButton PasteProperties { get { return buttonpasteproperties; } }
public ToolStripSeparator SeparatorCopyPaste { get { return seperatorcopypaste; } }
#endregion #endregion

View file

@ -1,7 +1,7 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:2.0.50727.3082 // Runtime Version:2.0.50727.3615
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
@ -74,6 +74,13 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties {
} }
} }
internal static System.Drawing.Bitmap CopyProperties {
get {
object obj = ResourceManager.GetObject("CopyProperties", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap CurveLines { internal static System.Drawing.Bitmap CurveLines {
get { get {
object obj = ResourceManager.GetObject("CurveLines", resourceCulture); object obj = ResourceManager.GetObject("CurveLines", resourceCulture);
@ -102,6 +109,13 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties {
} }
} }
internal static System.Drawing.Bitmap PasteProperties {
get {
object obj = ResourceManager.GetObject("PasteProperties", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap treeview { internal static System.Drawing.Bitmap treeview {
get { get {
object obj = ResourceManager.GetObject("treeview", resourceCulture); object obj = ResourceManager.GetObject("treeview", resourceCulture);

View file

@ -118,28 +118,34 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="treeview" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="FlipSelectionH" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\treeview.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\FlipSelectionH.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="ViewSelectionIndex" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="ViewSelectionIndex" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ViewSelectionIndex.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\ViewSelectionIndex.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="CeilsGradient" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="CopyProperties" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\CeilsGradient.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\CopyProperties.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="BrightnessGradient" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\BrightnessGradient.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="FlipSelectionH" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FlipSelectionH.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="FloorsGradient" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FloorsGradient.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="FlipSelectionV" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FlipSelectionV.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="CurveLines" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="CurveLines" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\CurveLines.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\CurveLines.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="FloorsGradient" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FloorsGradient.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="treeview" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\treeview.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="FlipSelectionV" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FlipSelectionV.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="BrightnessGradient" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\BrightnessGradient.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="CeilsGradient" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\CeilsGradient.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="PasteProperties" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\PasteProperties.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root> </root>

View file

@ -680,6 +680,28 @@ placevisualstart
allowscroll = true; allowscroll = true;
} }
classiccopyproperties
{
title = "Copy Properties";
category = "classic";
description = "Copies the properties of the highlighted or selected object for pasting.";
allowkeys = true;
allowmouse = true;
allowscroll = true;
default = 196675; // CTRL+SHIFT+C
}
classicpasteproperties
{
title = "Paste Properties";
category = "classic";
description = "Pastes the copied properties onto the highlighted or selected objects.";
allowkeys = true;
allowmouse = true;
allowscroll = true;
default = 196694; // CTRL+SHIFT+V
}
floodfilltextures floodfilltextures
{ {
title = "Paste Texture Flood-Fill"; title = "Paste Texture Flood-Fill";

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B