Sectors, Linedefs, Things, Vertices modes: added "Select Similar" action (available in <Mode name> -> "Select Similar..." menu), which lets you select map elements similar to currently selected ones, based on a set of settings.

Some cosmetic fixes in "Filter Selected Things" and "Paste Properties Options" panels.
This commit is contained in:
MaxED 2014-05-08 09:24:32 +00:00
parent ebd2400cde
commit 98aefb2681
21 changed files with 1284 additions and 341 deletions

View file

@ -1,4 +1,6 @@
using CodeImp.DoomBuilder.Map; using System;
using System.Collections.Generic;
using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Types; using CodeImp.DoomBuilder.Types;
namespace CodeImp.DoomBuilder.GZBuilder.Tools namespace CodeImp.DoomBuilder.GZBuilder.Tools
@ -84,5 +86,36 @@ namespace CodeImp.DoomBuilder.GZBuilder.Tools
if(fields == null || !fields.ContainsKey(key)) return; if(fields == null || !fields.ContainsKey(key)) return;
fields.Remove(key); fields.Remove(key);
} }
public static bool FieldsMatch(UniFields fields1, UniFields fields2) {
if (fields1.Keys.Count != fields2.Keys.Count) return false;
foreach(KeyValuePair<string, UniValue> group in fields1) {
if (!fields2.ContainsKey(group.Key)) return false;
if (fields2[group.Key].Type != fields1[group.Key].Type) return false;
if (fields1[group.Key].Value is int)
{
if ((int)fields1[group.Key].Value != (int)fields2[group.Key].Value) return false;
}
else if (fields1[group.Key].Value is float)
{
if((float)fields1[group.Key].Value != (float)fields2[group.Key].Value) return false;
}
else if(fields1[group.Key].Value is bool)
{
if((bool)fields1[group.Key].Value != (bool)fields2[group.Key].Value) return false;
}
else if (fields1[group.Key].Value is string)
{
if ((string)fields1[group.Key].Value != (string)fields2[group.Key].Value) return false;
}
else
{
throw new Exception("Got unknown Custom Field type to compare: " + fields1[group.Key].Value.GetType());
}
}
return true;
}
} }
} }

View file

@ -19,7 +19,6 @@
using System; using System;
using SlimDX.Direct3D9; using SlimDX.Direct3D9;
using SlimDX; using SlimDX;
using CodeImp.DoomBuilder.Geometry;
#endregion #endregion

View file

@ -330,6 +330,12 @@
<Compile Include="Interface\SectorDrawingOptionsPanel.Designer.cs"> <Compile Include="Interface\SectorDrawingOptionsPanel.Designer.cs">
<DependentUpon>SectorDrawingOptionsPanel.cs</DependentUpon> <DependentUpon>SectorDrawingOptionsPanel.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Interface\SelectSimilarElementOptionsPanel.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Interface\SelectSimilarElementOptionsPanel.Designer.cs">
<DependentUpon>SelectSimilarElementOptionsPanel.cs</DependentUpon>
</Compile>
<Compile Include="Interface\WavefrontSettingsForm.cs"> <Compile Include="Interface\WavefrontSettingsForm.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -493,6 +499,9 @@
<EmbeddedResource Include="Interface\PastePropertiesOptionsForm.resx"> <EmbeddedResource Include="Interface\PastePropertiesOptionsForm.resx">
<DependentUpon>PastePropertiesOptionsForm.cs</DependentUpon> <DependentUpon>PastePropertiesOptionsForm.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Interface\SelectSimilarElementOptionsPanel.resx">
<DependentUpon>SelectSimilarElementOptionsPanel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Resources\DrawRectangleMode.png" /> <EmbeddedResource Include="Resources\DrawRectangleMode.png" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -501,6 +510,9 @@
<ItemGroup> <ItemGroup>
<None Include="Resources\FilterThings.png" /> <None Include="Resources\FilterThings.png" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Include="Resources\Similar.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

@ -150,14 +150,14 @@ namespace CodeImp.DoomBuilder.BuilderModes
public override void OnUndoEnd() { public override void OnUndoEnd() {
General.Map.Renderer2D.UpdateExtraFloorFlag(); General.Map.Renderer2D.UpdateExtraFloorFlag();
base.OnUndoEnd(); base.OnUndoEnd();
updateSelectionInfo(); UpdateSelectionInfo();
} }
//mxd //mxd
public override void OnRedoEnd() { public override void OnRedoEnd() {
General.Map.Renderer2D.UpdateExtraFloorFlag(); General.Map.Renderer2D.UpdateExtraFloorFlag();
base.OnRedoEnd(); base.OnRedoEnd();
updateSelectionInfo(); UpdateSelectionInfo();
} }
//mxd //mxd
@ -167,7 +167,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
//mxd //mxd
protected virtual void updateSelectionInfo() { public virtual void UpdateSelectionInfo() {
General.Interface.DisplayStatus(StatusType.Selection, string.Empty); General.Interface.DisplayStatus(StatusType.Selection, string.Empty);
} }

View file

@ -298,7 +298,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
// Convert geometry selection to linedefs selection // Convert geometry selection to linedefs selection
General.Map.Map.ConvertSelection(SelectionType.Linedefs); General.Map.Map.ConvertSelection(SelectionType.Linedefs);
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
} }
// Mode disengages // Mode disengages
@ -429,7 +429,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
//mxd //mxd
updateSelectionInfo(); UpdateSelectionInfo();
} }
base.OnSelectEnd(); base.OnSelectEnd();
@ -510,7 +510,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
} }
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
} }
editpressed = false; editpressed = false;
@ -549,7 +549,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
l.Selected = !l.Selected; l.Selected = !l.Selected;
highlighted = l; highlighted = l;
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
// Update entire display // Update entire display
General.Interface.RedrawDisplay(); General.Interface.RedrawDisplay();
@ -728,7 +728,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
//mxd //mxd
updateSelectionInfo(); UpdateSelectionInfo();
} }
base.OnEndMultiSelection(); base.OnEndMultiSelection();
@ -768,7 +768,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
//mxd //mxd
protected override void updateSelectionInfo() { public override void UpdateSelectionInfo() {
if(General.Map.Map.SelectedLinedefsCount > 0) if(General.Map.Map.SelectedLinedefsCount > 0)
General.Interface.DisplayStatus(StatusType.Selection, General.Map.Map.SelectedLinedefsCount + (General.Map.Map.SelectedLinedefsCount == 1 ? " linedef" : " linedefs") + " selected."); General.Interface.DisplayStatus(StatusType.Selection, General.Map.Map.SelectedLinedefsCount + (General.Map.Map.SelectedLinedefsCount == 1 ? " linedef" : " linedefs") + " selected.");
else else
@ -1369,6 +1369,20 @@ namespace CodeImp.DoomBuilder.BuilderModes
alignTextureToLine(false, false); alignTextureToLine(false, false);
} }
//mxd
[BeginAction("selectsimilar")]
public void SelectSimilar() {
ICollection<Linedef> selection = General.Map.Map.GetSelectedLinedefs(true);
if(selection.Count == 0) {
General.Interface.DisplayStatus(StatusType.Warning, "This action requires a selection!");
return;
}
var form = new SelectSimilarElementOptionsPanel();
if(form.Setup(this)) form.ShowDialog();
}
#endregion #endregion
} }
} }

View file

@ -545,7 +545,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
// Update overlay // Update overlay
updateOverlaySurfaces(); updateOverlaySurfaces();
updateSelectionInfo(); UpdateSelectionInfo();
} }
} }
@ -598,7 +598,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
// Update // Update
UpdateSelectedLabels(); UpdateSelectedLabels();
updateOverlaySurfaces();//mxd updateOverlaySurfaces();//mxd
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
UpdateOverlay(); UpdateOverlay();
} }
@ -757,7 +757,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
General.Interface.RedrawDisplay(); General.Interface.RedrawDisplay();
} }
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
} }
base.OnSelectEnd(); base.OnSelectEnd();
@ -844,7 +844,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
} }
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
} }
editpressed = false; editpressed = false;
@ -916,7 +916,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
General.Interface.RedrawDisplay(); General.Interface.RedrawDisplay();
} }
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
} }
} }
else if(e.Button == MouseButtons.None) // Not holding any buttons? else if(e.Button == MouseButtons.None) // Not holding any buttons?
@ -1141,7 +1141,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
UpdateSelectedLabels(); //mxd UpdateSelectedLabels(); //mxd
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
updateOverlaySurfaces(); //mxd updateOverlaySurfaces(); //mxd
} }
@ -1217,7 +1217,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
//mxd //mxd
protected override void updateSelectionInfo() { public override void UpdateSelectionInfo() {
if(General.Map.Map.SelectedSectorsCount > 0) if(General.Map.Map.SelectedSectorsCount > 0)
General.Interface.DisplayStatus(StatusType.Selection, General.Map.Map.SelectedSectorsCount + (General.Map.Map.SelectedSectorsCount == 1 ? " sector" : " sectors") + " selected."); General.Interface.DisplayStatus(StatusType.Selection, General.Map.Map.SelectedSectorsCount + (General.Map.Map.SelectedSectorsCount == 1 ? " sector" : " sectors") + " selected.");
else else
@ -2082,6 +2082,20 @@ namespace CodeImp.DoomBuilder.BuilderModes
General.Interface.RedrawDisplay(); General.Interface.RedrawDisplay();
General.Interface.RefreshInfo(); General.Interface.RefreshInfo();
} }
//mxd
[BeginAction("selectsimilar")]
public void SelectSimilar() {
ICollection<Sector> selection = General.Map.Map.GetSelectedSectors(true);
if(selection.Count == 0) {
General.Interface.DisplayStatus(StatusType.Warning, "This action requires a selection!");
return;
}
var form = new SelectSimilarElementOptionsPanel();
if(form.Setup(this)) form.ShowDialog();
}
#endregion #endregion
} }

View file

@ -124,7 +124,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
// 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;
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
} }
// Mode disengages // Mode disengages
@ -352,7 +352,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
General.Interface.RedrawDisplay(); General.Interface.RedrawDisplay();
} }
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
} }
base.OnSelectEnd(); base.OnSelectEnd();
@ -441,7 +441,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
} }
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
} }
editpressed = false; editpressed = false;
@ -489,7 +489,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
t.Selected = !t.Selected; t.Selected = !t.Selected;
highlighted = t; highlighted = t;
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
// Update entire display // Update entire display
General.Interface.RedrawDisplay(); General.Interface.RedrawDisplay();
@ -623,7 +623,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
break; break;
} }
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
} }
base.OnEndMultiSelection(); base.OnEndMultiSelection();
@ -663,7 +663,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
//mxd //mxd
protected override void updateSelectionInfo() { public override void UpdateSelectionInfo() {
if(General.Map.Map.SelectedThingsCount > 0) if(General.Map.Map.SelectedThingsCount > 0)
General.Interface.DisplayStatus(StatusType.Selection, General.Map.Map.SelectedThingsCount + (General.Map.Map.SelectedThingsCount == 1 ? " thing" : " things") + " selected."); General.Interface.DisplayStatus(StatusType.Selection, General.Map.Map.SelectedThingsCount + (General.Map.Map.SelectedThingsCount == 1 ? " thing" : " things") + " selected.");
else else
@ -1022,7 +1022,21 @@ namespace CodeImp.DoomBuilder.BuilderModes
return; return;
} }
new FilterSelectedThingsForm(selection).ShowDialog(); new FilterSelectedThingsForm(selection, this).ShowDialog();
}
//mxd
[BeginAction("selectsimilar")]
public void SelectSimilar() {
ICollection<Thing> selection = General.Map.Map.GetSelectedThings(true);
if(selection.Count == 0) {
General.Interface.DisplayStatus(StatusType.Warning, "This action requires a selection!");
return;
}
var form = new SelectSimilarElementOptionsPanel();
if (form.Setup(this)) form.ShowDialog();
} }
#endregion #endregion

View file

@ -98,7 +98,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
// Convert geometry selection to vertices only // Convert geometry selection to vertices only
General.Map.Map.ConvertSelection(SelectionType.Vertices); General.Map.Map.ConvertSelection(SelectionType.Vertices);
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
} }
// Mode disengages // Mode disengages
@ -240,7 +240,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
//mxd //mxd
updateSelectionInfo(); UpdateSelectionInfo();
} }
base.OnSelectEnd(); base.OnSelectEnd();
@ -385,7 +385,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
} }
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
} }
editpressed = false; editpressed = false;
@ -431,7 +431,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
v.Selected = !v.Selected; v.Selected = !v.Selected;
highlighted = v; highlighted = v;
updateSelectionInfo(); //mxd UpdateSelectionInfo(); //mxd
// Update entire display // Update entire display
General.Interface.RedrawDisplay(); General.Interface.RedrawDisplay();
@ -613,7 +613,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
//mxd //mxd
updateSelectionInfo(); UpdateSelectionInfo();
} }
base.OnEndMultiSelection(); base.OnEndMultiSelection();
@ -653,7 +653,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
//mxd //mxd
protected override void updateSelectionInfo() { public override void UpdateSelectionInfo() {
if(General.Map.Map.SelectedVerticessCount > 0) if(General.Map.Map.SelectedVerticessCount > 0)
General.Interface.DisplayStatus(StatusType.Selection, General.Map.Map.SelectedVerticessCount + (General.Map.Map.SelectedVerticessCount == 1 ? " vertex" : " vertices") + " selected."); General.Interface.DisplayStatus(StatusType.Selection, General.Map.Map.SelectedVerticessCount + (General.Map.Map.SelectedVerticessCount == 1 ? " vertex" : " vertices") + " selected.");
else else
@ -979,6 +979,20 @@ namespace CodeImp.DoomBuilder.BuilderModes
placeThingsAtPositions(positions); placeThingsAtPositions(positions);
} }
//mxd
[BeginAction("selectsimilar")]
public void SelectSimilar() {
ICollection<Vertex> selection = General.Map.Map.GetSelectedVertices(true);
if(selection.Count == 0) {
General.Interface.DisplayStatus(StatusType.Warning, "This action requires a selection!");
return;
}
var form = new SelectSimilarElementOptionsPanel();
if(form.Setup(this)) form.ShowDialog();
}
#endregion #endregion
#region ================== Action assist (mxd) #region ================== Action assist (mxd)

View file

@ -16,19 +16,40 @@
#region ================== Namespaces #region ================== Namespaces
using System;
using System.Collections.Generic; using System.Collections.Generic;
using CodeImp.DoomBuilder.Map; using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.GZBuilder.Tools;
#endregion #endregion
namespace CodeImp.DoomBuilder.BuilderModes namespace CodeImp.DoomBuilder.BuilderModes
{ {
//mxd
public class FieldDescription : Attribute
{
public string Description { get; private set; }
public FieldDescription(string description) {
this.Description = description;
}
}
//mxd
public class VertexPropertiesCopySettings
{
[FieldDescription("Vertex Floor Height")]
public bool ZFloor = true;
[FieldDescription("Vertex Ceiling Height")]
public bool ZCeiling = true;
[FieldDescription("Custom Fields")]
public bool Fields = true;
}
// Vertex // Vertex
public class VertexProperties public class VertexProperties
{ {
public static bool ZCeiling = true; //mxd public static VertexPropertiesCopySettings CopySettings = new VertexPropertiesCopySettings();
public static bool ZFloor = true; //mxd
public static bool Universal_Fields = true; //mxd
private readonly UniFields fields; private readonly UniFields fields;
private readonly float zceiling; //mxd private readonly float zceiling; //mxd
@ -43,9 +64,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
public void Apply(Vertex v) public void Apply(Vertex v)
{ {
if (ZCeiling) v.ZCeiling = zceiling; //mxd if(CopySettings.ZCeiling) v.ZCeiling = zceiling; //mxd
if (ZFloor) v.ZFloor = zfloor; //mxd if(CopySettings.ZFloor) v.ZFloor = zfloor; //mxd
if (Universal_Fields) { if(CopySettings.Fields) {
v.Fields.BeforeFieldsChange(); v.Fields.BeforeFieldsChange();
v.Fields.Clear(); v.Fields.Clear();
foreach (KeyValuePair<string, UniValue> uv in fields) foreach (KeyValuePair<string, UniValue> uv in fields)
@ -54,18 +75,34 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
} }
//mxd
public class SectorPropertiesCopySettings
{
[FieldDescription("Floor Height")]
public bool FloorHeight = true;
[FieldDescription("Ceiling Height")]
public bool CeilingHeight = true;
[FieldDescription("Floor Texture")]
public bool FloorTexture = true;
[FieldDescription("Ceiling Texture")]
public bool CeilingTexture = true;
[FieldDescription("Brightness")]
public bool Brightness = true;
[FieldDescription("Tag")]
public bool Tag = true;
[FieldDescription("Effect")]
public bool Special = true;
[FieldDescription("Flags")]
public bool Flags = true;
[FieldDescription("Custom Fields")]
public bool Fields = true;
}
// Sector // Sector
public class SectorProperties public class SectorProperties
{ {
public static bool Floor_Height = true; //mxd //mxd
public static bool Ceiling_Height = true; //mxd public static SectorPropertiesCopySettings CopySettings = new SectorPropertiesCopySettings();
public static bool Floor_Texture = true; //mxd
public static bool Ceiling_Texture = true; //mxd
public static bool Brightness = true; //mxd
public static bool Tag = true; //mxd
public static bool Special = true; //mxd
public static bool Flags = true; //mxd
public static bool Universal_Fields = true; //mxd
private readonly int floorheight; private readonly int floorheight;
private readonly int ceilheight; private readonly int ceilheight;
@ -92,19 +129,19 @@ namespace CodeImp.DoomBuilder.BuilderModes
public void Apply(Sector s) public void Apply(Sector s)
{ {
if (Floor_Height) s.FloorHeight = floorheight; if(CopySettings.FloorHeight) s.FloorHeight = floorheight;
if (Ceiling_Height) s.CeilHeight = ceilheight; if(CopySettings.CeilingHeight) s.CeilHeight = ceilheight;
if (Floor_Texture) s.SetFloorTexture(floortexture); if(CopySettings.FloorTexture) s.SetFloorTexture(floortexture);
if (Ceiling_Texture) s.SetCeilTexture(ceilingtexture); if(CopySettings.CeilingTexture) s.SetCeilTexture(ceilingtexture);
if (Brightness) s.Brightness = brightness; if(CopySettings.Brightness) s.Brightness = brightness;
if (Tag) s.Tag = tag; if(CopySettings.Tag) s.Tag = tag;
if (Special) s.Effect = effect; if(CopySettings.Special) s.Effect = effect;
if (Flags) { if(CopySettings.Flags) {
s.ClearFlags(); //mxd s.ClearFlags(); //mxd
foreach (KeyValuePair<string, bool> f in flags) //mxd foreach (KeyValuePair<string, bool> f in flags) //mxd
s.SetFlag(f.Key, f.Value); s.SetFlag(f.Key, f.Value);
} }
if (Universal_Fields) { if(CopySettings.Fields) {
s.Fields.BeforeFieldsChange(); s.Fields.BeforeFieldsChange();
s.Fields.Clear(); s.Fields.Clear();
foreach (KeyValuePair<string, UniValue> v in fields) foreach (KeyValuePair<string, UniValue> v in fields)
@ -113,17 +150,31 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
} }
//mxd
public class SidedefPropertiesCopySettings
{
[FieldDescription("Upper Texture")]
public bool UpperTexture = true;
[FieldDescription("Middle Texture")]
public bool MiddleTexture = true;
[FieldDescription("Lower Texture")]
public bool LowerTexture = true;
[FieldDescription("Offset X")]
public bool OffsetX = true;
[FieldDescription("Offset Y")]
public bool OffsetY = true;
[FieldDescription("Flags")]
public bool Flags = true;
[FieldDescription("Custom Fields")]
public bool Fields = true;
}
// Sidedef // Sidedef
public class SidedefProperties public class SidedefProperties
{ {
public static bool Upper_Texture = true; //mxd //mxd
public static bool Middle_Texture = true; //mxd public static SidedefPropertiesCopySettings CopySettings = new SidedefPropertiesCopySettings();
public static bool Lower_Texture = true; //mxd
public static bool OffsetX = true; //mxd
public static bool OffsetY = true; //mxd
public static bool Flags = true; //mxd
public static bool Universal_Fields = true; //mxd
private readonly string hightexture; private readonly string hightexture;
private readonly string middletexture; private readonly string middletexture;
private readonly string lowtexture; private readonly string lowtexture;
@ -145,17 +196,17 @@ namespace CodeImp.DoomBuilder.BuilderModes
public void Apply(Sidedef s) public void Apply(Sidedef s)
{ {
if (Upper_Texture) s.SetTextureHigh(hightexture); if(CopySettings.UpperTexture) s.SetTextureHigh(hightexture);
if (Middle_Texture) s.SetTextureMid(middletexture); if(CopySettings.MiddleTexture) s.SetTextureMid(middletexture);
if (Lower_Texture) s.SetTextureLow(lowtexture); if(CopySettings.LowerTexture) s.SetTextureLow(lowtexture);
if (OffsetX) s.OffsetX = offsetx; if(CopySettings.OffsetX) s.OffsetX = offsetx;
if (OffsetY) s.OffsetY = offsety; if(CopySettings.OffsetY) s.OffsetY = offsety;
if (Flags) { if(CopySettings.Flags) {
s.ClearFlags(); //mxd s.ClearFlags(); //mxd
foreach (KeyValuePair<string, bool> f in flags) //mxd foreach (KeyValuePair<string, bool> f in flags) //mxd
s.SetFlag(f.Key, f.Value); s.SetFlag(f.Key, f.Value);
} }
if (Universal_Fields) { if(CopySettings.Fields) {
s.Fields.BeforeFieldsChange(); s.Fields.BeforeFieldsChange();
s.Fields.Clear(); s.Fields.Clear();
foreach (KeyValuePair<string, UniValue> v in fields) foreach (KeyValuePair<string, UniValue> v in fields)
@ -164,15 +215,30 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
} }
//mxd
public class LinedefPropertiesCopySettings
{
[FieldDescription("Sidedef Properties")]
public bool SidedefProperties = true;
[FieldDescription("Action")]
public bool Action = true;
[FieldDescription("Action Arguments")]
public bool Arguments = true;
[FieldDescription("Activation")]
public bool Activation = true;
[FieldDescription("Tag")]
public bool Tag = true;
[FieldDescription("Flags")]
public bool Flags = true;
[FieldDescription("Custom Fields")]
public bool Fields = true;
}
// Linedef // Linedef
public class LinedefProperties public class LinedefProperties
{ {
public static bool Sidedef_Properties = true; //mxd //mxd
public static bool Action = true; //mxd public static LinedefPropertiesCopySettings CopySettings = new LinedefPropertiesCopySettings();
public static bool Activation = true; //mxd
public static bool Tag = true; //mxd
public static bool Flags = true; //mxd
public static bool Universal_Fields = true; //mxd
private readonly SidedefProperties front; private readonly SidedefProperties front;
private readonly SidedefProperties back; private readonly SidedefProperties back;
@ -198,23 +264,23 @@ namespace CodeImp.DoomBuilder.BuilderModes
public void Apply(Linedef l) public void Apply(Linedef l)
{ {
if (Sidedef_Properties) { if(CopySettings.SidedefProperties) {
if ((front != null) && (l.Front != null)) front.Apply(l.Front); if ((front != null) && (l.Front != null)) front.Apply(l.Front);
if ((back != null) && (l.Back != null)) back.Apply(l.Back); if ((back != null) && (l.Back != null)) back.Apply(l.Back);
} }
if (Flags) { if(CopySettings.Flags) {
l.ClearFlags(); l.ClearFlags();
foreach (KeyValuePair<string, bool> f in flags) foreach (KeyValuePair<string, bool> f in flags)
l.SetFlag(f.Key, f.Value); l.SetFlag(f.Key, f.Value);
} }
if (Activation) l.Activate = activate; if(CopySettings.Activation) l.Activate = activate;
if (Tag)l.Tag = tag; if(CopySettings.Tag) l.Tag = tag;
if (Action) { if(CopySettings.Action) l.Action = action;
l.Action = action; if(CopySettings.Arguments) {
for (int i = 0; i < l.Args.Length; i++) for(int i = 0; i < l.Args.Length; i++)
l.Args[i] = args[i]; l.Args[i] = args[i];
} }
if (Universal_Fields) { if(CopySettings.Fields) {
l.Fields.BeforeFieldsChange(); l.Fields.BeforeFieldsChange();
l.Fields.Clear(); l.Fields.Clear();
foreach (KeyValuePair<string, UniValue> v in fields) foreach (KeyValuePair<string, UniValue> v in fields)
@ -222,19 +288,37 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
} }
} }
//mxd
public class ThingPropertiesCopySettings
{
[FieldDescription("Type")]
public bool Type = true;
[FieldDescription("Angle")]
public bool Angle = true;
[FieldDescription("Pitch")]
public bool Pitch = true;
[FieldDescription("Roll")]
public bool Roll = true;
[FieldDescription("Scale")]
public bool Scale = true;
[FieldDescription("Action")]
public bool Action = true;
[FieldDescription("Action Arguments")]
public bool Arguments = true;
[FieldDescription("Tag")]
public bool Tag = true;
[FieldDescription("Flags")]
public bool Flags = true;
[FieldDescription("Custom Fields")]
public bool Fields = true;
}
// Thing // Thing
public class ThingProperties public class ThingProperties
{ {
public static bool Type = true; //mxd //mxd
public static bool Angle = true; //mxd public static ThingPropertiesCopySettings CopySettings = new ThingPropertiesCopySettings();
public static bool Pitch = true; //mxd
public static bool Roll = true; //mxd
public static bool Scale = true; //mxd
public static bool Action = true; //mxd
public static bool Tag = true; //mxd
public static bool Flags = true; //mxd
public static bool Universal_Fields = true; //mxd
private readonly int type; private readonly int type;
private readonly float angle; private readonly float angle;
@ -265,23 +349,23 @@ namespace CodeImp.DoomBuilder.BuilderModes
public void Apply(Thing t) public void Apply(Thing t)
{ {
if (Type) t.Type = type; if(CopySettings.Type) t.Type = type;
if (Angle) t.Rotate(angle); if(CopySettings.Angle) t.Rotate(angle);
if (Pitch) t.SetPitch(pitch); if(CopySettings.Pitch) t.SetPitch(pitch);
if (Roll) t.SetRoll(roll); if(CopySettings.Roll) t.SetRoll(roll);
if (Scale) t.SetScale(scalex, scaley); if(CopySettings.Scale) t.SetScale(scalex, scaley);
if (Flags) { if(CopySettings.Flags) {
t.ClearFlags(); t.ClearFlags();
foreach (KeyValuePair<string, bool> f in flags) foreach (KeyValuePair<string, bool> f in flags)
t.SetFlag(f.Key, f.Value); t.SetFlag(f.Key, f.Value);
} }
if (Tag) t.Tag = tag; if(CopySettings.Tag) t.Tag = tag;
if (Action) { if(CopySettings.Action) t.Action = action;
t.Action = action; if(CopySettings.Arguments) {
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];
} }
if (Universal_Fields) { if(CopySettings.Fields) {
t.Fields.BeforeFieldsChange(); t.Fields.BeforeFieldsChange();
t.Fields.Clear(); t.Fields.Clear();
foreach (KeyValuePair<string, UniValue> v in fields) foreach (KeyValuePair<string, UniValue> v in fields)
@ -289,4 +373,104 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
} }
} }
//mxd. A class, which checks whether source and target map element's properties match
public static class PropertiesComparer
{
#region Vertex
public static bool PropertiesMatch(VertexPropertiesCopySettings flags, Vertex source, Vertex target) {
if(flags.ZCeiling && source.ZCeiling != target.ZCeiling) return false;
if(flags.ZFloor && source.ZFloor != target.ZFloor) return false;
return !flags.Fields || UDMFTools.FieldsMatch(source.Fields, target.Fields);
}
#endregion
#region Sector
public static bool PropertiesMatch(SectorPropertiesCopySettings flags, Sector source, Sector target) {
if(flags.FloorHeight && source.FloorHeight != target.FloorHeight) return false;
if(flags.CeilingHeight && source.CeilHeight != target.CeilHeight) return false;
if(flags.FloorTexture && source.FloorTexture != target.FloorTexture) return false;
if(flags.CeilingTexture && source.CeilTexture != target.CeilTexture) return false;
if(flags.Brightness && source.Brightness != target.Brightness) return false;
if(flags.Tag && source.Tag != target.Tag) return false;
if(flags.Special && source.Effect != target.Effect) return false;
if(flags.Flags && !FlagsMatch(source.GetFlags(), target.GetFlags())) return false;
return !flags.Fields || UDMFTools.FieldsMatch(source.Fields, target.Fields);
}
#endregion
#region Linedef
public static bool PropertiesMatch(LinedefPropertiesCopySettings linedefflags, SidedefPropertiesCopySettings sideflags, Linedef source, Linedef target) {
if(linedefflags.Action && source.Action != target.Action) return false;
if(linedefflags.Activation && source.Activate != target.Activate) return false;
if(linedefflags.Tag && source.Tag != target.Tag) return false;
if(linedefflags.Arguments) {
for(int i = 0; i < source.Args.Length; i++) {
if(source.Args[i] != target.Args[i]) return false;
}
}
if(linedefflags.Flags && !FlagsMatch(source.GetFlags(), target.GetFlags())) return false;
if(linedefflags.SidedefProperties) {
if ((source.Front == null && target.Front != null) || (source.Front != null && target.Front == null) ||
(source.Back == null && target.Back != null) || (source.Back != null && target.Back == null))
return false;
if(source.Front != null && !PropertiesMatch(sideflags, source.Front, target.Front)) return false;
if(source.Back != null && !PropertiesMatch(sideflags, source.Back, target.Back)) return false;
}
return !linedefflags.Fields || UDMFTools.FieldsMatch(source.Fields, target.Fields);
}
#endregion
#region Sidedef
public static bool PropertiesMatch(SidedefPropertiesCopySettings flags, Sidedef source, Sidedef target) {
if(flags.OffsetX && source.OffsetX != target.OffsetX) return false;
if(flags.OffsetY && source.OffsetY != target.OffsetY) return false;
if(flags.UpperTexture && source.HighTexture != target.HighTexture) return false;
if(flags.MiddleTexture && source.MiddleTexture != target.MiddleTexture) return false;
if(flags.LowerTexture && source.LowTexture != target.LowTexture) return false;
if(flags.Flags && !FlagsMatch(source.GetFlags(), target.GetFlags())) return false;
return !flags.Fields || UDMFTools.FieldsMatch(source.Fields, target.Fields);
}
#endregion
#region Thing
public static bool PropertiesMatch(ThingPropertiesCopySettings flags, Thing source, Thing target) {
if(flags.Type && source.Type != target.Type) return false;
if(flags.Angle && source.AngleDoom != target.AngleDoom) return false;
if(flags.Action && source.Action != target.Action) return false;
if (flags.Arguments) {
for(int i = 0; i < source.Args.Length; i++) {
if (source.Args[i] != target.Args[i]) return false;
}
}
if(flags.Tag && source.Tag != target.Tag) return false;
if(flags.Pitch && source.Pitch != target.Pitch) return false;
if(flags.Roll && source.Roll != target.Roll) return false;
if(flags.Scale && (source.ScaleX != target.ScaleX) || (source.ScaleY != target.ScaleY))
return false;
if(flags.Flags && !FlagsMatch(source.GetFlags(), target.GetFlags())) return false;
return !flags.Fields || UDMFTools.FieldsMatch(source.Fields, target.Fields);
}
#endregion
private static bool FlagsMatch(Dictionary<string, bool> flags1, Dictionary<string, bool> flags2) {
if (flags1.Count != flags2.Count) return false;
foreach (KeyValuePair<string, bool> group in flags1) {
if (!flags2.ContainsKey(group.Key) || flags2[group.Key] != flags1[group.Key]) return false;
}
return true;
}
}
} }

View file

@ -25,9 +25,9 @@
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() { private void InitializeComponent() {
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
this.cancel = new System.Windows.Forms.Button(); this.cancel = new System.Windows.Forms.Button();
this.apply = new System.Windows.Forms.Button(); this.apply = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox(); this.textBox1 = new System.Windows.Forms.TextBox();
@ -87,14 +87,14 @@
this.dataGridView.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.dataGridView.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.dataGridView.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; this.dataGridView.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
this.dataGridView.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; this.dataGridView.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control; dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle4.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); dataGridViewCellStyle1.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText; dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.False; dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dataGridView.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle4; this.dataGridView.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.dataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.ThingType, this.ThingType,
@ -112,8 +112,8 @@
// ThingType // ThingType
// //
this.ThingType.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.ColumnHeader; this.ThingType.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.ColumnHeader;
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.ThingType.DefaultCellStyle = dataGridViewCellStyle5; this.ThingType.DefaultCellStyle = dataGridViewCellStyle2;
this.ThingType.HeaderText = "Type"; this.ThingType.HeaderText = "Type";
this.ThingType.Name = "ThingType"; this.ThingType.Name = "ThingType";
this.ThingType.ReadOnly = true; this.ThingType.ReadOnly = true;
@ -122,8 +122,8 @@
// ThingTitle // ThingTitle
// //
this.ThingTitle.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; this.ThingTitle.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.True; dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.ThingTitle.DefaultCellStyle = dataGridViewCellStyle6; this.ThingTitle.DefaultCellStyle = dataGridViewCellStyle3;
this.ThingTitle.HeaderText = "Title"; this.ThingTitle.HeaderText = "Title";
this.ThingTitle.Name = "ThingTitle"; this.ThingTitle.Name = "ThingTitle";
this.ThingTitle.ReadOnly = true; this.ThingTitle.ReadOnly = true;
@ -148,6 +148,7 @@
this.Controls.Add(this.apply); this.Controls.Add(this.apply);
this.Controls.Add(this.textBox1); this.Controls.Add(this.textBox1);
this.Controls.Add(this.dataGridView); this.Controls.Add(this.dataGridView);
this.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
this.Name = "FilterSelectedThingsForm"; this.Name = "FilterSelectedThingsForm";
this.ShowInTaskbar = false; this.ShowInTaskbar = false;

View file

@ -5,7 +5,6 @@ using System.Drawing;
using System.Windows.Forms; using System.Windows.Forms;
using CodeImp.DoomBuilder.Map; using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Config; using CodeImp.DoomBuilder.Config;
using CodeImp.DoomBuilder.Windows;
namespace CodeImp.DoomBuilder.BuilderModes namespace CodeImp.DoomBuilder.BuilderModes
{ {
@ -14,9 +13,11 @@ namespace CodeImp.DoomBuilder.BuilderModes
private static Size size = Size.Empty; private static Size size = Size.Empty;
private static Point location = Point.Empty; private static Point location = Point.Empty;
private ICollection<Thing> selection; private ICollection<Thing> selection;
private ThingsMode mode;
public FilterSelectedThingsForm(ICollection<Thing> selection) { public FilterSelectedThingsForm(ICollection<Thing> selection, ThingsMode mode) {
InitializeComponent(); InitializeComponent();
this.mode = mode;
//apply window size and location //apply window size and location
if(!size.IsEmpty && !location.IsEmpty) { if(!size.IsEmpty && !location.IsEmpty) {
@ -75,13 +76,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
} }
} }
//update selection info //update display
if(General.Map.Map.SelectedThingsCount > 0) mode.UpdateSelectionInfo();
General.Interface.DisplayStatus(StatusType.Selection, General.Map.Map.SelectedThingsCount + (General.Map.Map.SelectedThingsCount == 1 ? " thing" : " things") + " selected.");
else
General.Interface.DisplayStatus(StatusType.Selection, string.Empty);
//redraw display
General.Interface.RedrawDisplay(); General.Interface.RedrawDisplay();
} }

View file

@ -54,39 +54,46 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.joinsectorsitem = new System.Windows.Forms.ToolStripMenuItem(); this.joinsectorsitem = new System.Windows.Forms.ToolStripMenuItem();
this.mergesectorsitem = new System.Windows.Forms.ToolStripMenuItem(); this.mergesectorsitem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
this.makedooritem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
this.thingsmenu = new System.Windows.Forms.ToolStripMenuItem(); this.thingsmenu = new System.Windows.Forms.ToolStripMenuItem();
this.selectInSectorsItem = new System.Windows.Forms.ToolStripMenuItem(); this.selectInSectorsItem = new System.Windows.Forms.ToolStripMenuItem();
this.filterSelectionItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.alignToWallItem = new System.Windows.Forms.ToolStripMenuItem();
this.pointAtCursorItem = new System.Windows.Forms.ToolStripMenuItem();
this.vertsmenu = new System.Windows.Forms.ToolStripMenuItem(); this.vertsmenu = new System.Windows.Forms.ToolStripMenuItem();
this.placethingsv = new System.Windows.Forms.ToolStripMenuItem(); this.placethingsv = new System.Windows.Forms.ToolStripMenuItem();
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.seperatorcopypaste = new System.Windows.Forms.ToolStripSeparator();
this.separatorsectors1 = new System.Windows.Forms.ToolStripSeparator();
this.brightnessGradientMode = new System.Windows.Forms.ToolStripComboBox();
this.fileMenuStrip = new System.Windows.Forms.MenuStrip();
this.exportStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
this.buttoncopyproperties = new System.Windows.Forms.ToolStripButton(); this.buttoncopyproperties = new System.Windows.Forms.ToolStripButton();
this.buttonpasteproperties = new System.Windows.Forms.ToolStripButton(); this.buttonpasteproperties = new System.Windows.Forms.ToolStripButton();
this.buttonpastepropertiesoptions = new System.Windows.Forms.ToolStripButton(); this.buttonpastepropertiesoptions = new System.Windows.Forms.ToolStripButton();
this.seperatorcopypaste = new System.Windows.Forms.ToolStripSeparator();
this.buttonselectionnumbers = new System.Windows.Forms.ToolStripButton(); this.buttonselectionnumbers = new System.Windows.Forms.ToolStripButton();
this.buttonselectioneffects = new System.Windows.Forms.ToolStripButton(); this.buttonselectioneffects = new System.Windows.Forms.ToolStripButton();
this.separatorsectors1 = new System.Windows.Forms.ToolStripSeparator();
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.brightnessGradientMode = new System.Windows.Forms.ToolStripComboBox();
this.buttonMarqueSelectTouching = new System.Windows.Forms.ToolStripButton(); this.buttonMarqueSelectTouching = new System.Windows.Forms.ToolStripButton();
this.buttonAlignThingsToWall = new System.Windows.Forms.ToolStripButton(); this.buttonAlignThingsToWall = new System.Windows.Forms.ToolStripButton();
this.buttonTextureOffsetLock = new System.Windows.Forms.ToolStripButton(); this.buttonTextureOffsetLock = new System.Windows.Forms.ToolStripButton();
this.buttonMakeDoor = new System.Windows.Forms.ToolStripButton(); this.buttonMakeDoor = new System.Windows.Forms.ToolStripButton();
this.fileMenuStrip = new System.Windows.Forms.MenuStrip(); this.selectSimilarLinesItem = new System.Windows.Forms.ToolStripMenuItem();
this.exportStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.makedooritem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem(); this.filterSelectionItem = new System.Windows.Forms.ToolStripMenuItem();
this.alignToWallItem = new System.Windows.Forms.ToolStripMenuItem();
this.pointAtCursorItem = new System.Windows.Forms.ToolStripMenuItem();
this.selectSimilarSectors = new System.Windows.Forms.ToolStripMenuItem();
this.selectSimilarThingsItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
this.selectSimilarVertsItem = new System.Windows.Forms.ToolStripMenuItem();
this.menustrip.SuspendLayout(); this.menustrip.SuspendLayout();
this.manualstrip.SuspendLayout(); this.manualstrip.SuspendLayout();
this.fileMenuStrip.SuspendLayout(); this.fileMenuStrip.SuspendLayout();
@ -120,7 +127,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.curvelinedefsitem, this.curvelinedefsitem,
this.toolStripMenuItem3, this.toolStripMenuItem3,
this.splitlinedefsitem, this.splitlinedefsitem,
this.alignLinedefsItem}); this.alignLinedefsItem,
this.toolStripSeparator5,
this.selectSimilarLinesItem});
this.linedefsmenu.Name = "linedefsmenu"; this.linedefsmenu.Name = "linedefsmenu";
this.linedefsmenu.Size = new System.Drawing.Size(63, 20); this.linedefsmenu.Size = new System.Drawing.Size(63, 20);
this.linedefsmenu.Text = "&Linedefs"; this.linedefsmenu.Text = "&Linedefs";
@ -263,7 +272,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.mergesectorsitem, this.mergesectorsitem,
this.toolStripMenuItem2, this.toolStripMenuItem2,
this.makedooritem, this.makedooritem,
this.toolStripSeparator4}); this.toolStripSeparator4,
this.selectSimilarSectors});
this.sectorsmenu.Name = "sectorsmenu"; this.sectorsmenu.Name = "sectorsmenu";
this.sectorsmenu.Size = new System.Drawing.Size(57, 20); this.sectorsmenu.Size = new System.Drawing.Size(57, 20);
this.sectorsmenu.Text = "&Sectors"; this.sectorsmenu.Text = "&Sectors";
@ -310,15 +320,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.toolStripMenuItem2.Name = "toolStripMenuItem2"; this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(242, 6); this.toolStripMenuItem2.Size = new System.Drawing.Size(242, 6);
// //
// makedooritem
//
this.makedooritem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Door;
this.makedooritem.Name = "makedooritem";
this.makedooritem.Size = new System.Drawing.Size(245, 22);
this.makedooritem.Tag = "makedoor";
this.makedooritem.Text = "Make &Door";
this.makedooritem.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// toolStripSeparator4 // toolStripSeparator4
// //
this.toolStripSeparator4.Name = "toolStripSeparator4"; this.toolStripSeparator4.Name = "toolStripSeparator4";
@ -332,7 +333,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.filterSelectionItem, this.filterSelectionItem,
this.toolStripSeparator3, this.toolStripSeparator3,
this.alignToWallItem, this.alignToWallItem,
this.pointAtCursorItem}); this.pointAtCursorItem,
this.toolStripSeparator6,
this.selectSimilarThingsItem});
this.thingsmenu.Name = "thingsmenu"; this.thingsmenu.Name = "thingsmenu";
this.thingsmenu.Size = new System.Drawing.Size(55, 20); this.thingsmenu.Size = new System.Drawing.Size(55, 20);
this.thingsmenu.Text = "Things"; this.thingsmenu.Text = "Things";
@ -346,42 +349,17 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.selectInSectorsItem.Text = "&Select Things in Selected Sectors"; this.selectInSectorsItem.Text = "&Select Things in Selected Sectors";
this.selectInSectorsItem.Click += new System.EventHandler(this.InvokeTaggedAction); this.selectInSectorsItem.Click += new System.EventHandler(this.InvokeTaggedAction);
// //
// filterSelectionItem
//
this.filterSelectionItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.FilterThings;
this.filterSelectionItem.Name = "filterSelectionItem";
this.filterSelectionItem.Size = new System.Drawing.Size(245, 22);
this.filterSelectionItem.Tag = "filterselectedthings";
this.filterSelectionItem.Text = "Filter Selection...";
this.filterSelectionItem.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// toolStripSeparator3 // toolStripSeparator3
// //
this.toolStripSeparator3.Name = "toolStripSeparator3"; this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(242, 6); this.toolStripSeparator3.Size = new System.Drawing.Size(242, 6);
// //
// alignToWallItem
//
this.alignToWallItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.AlignThings;
this.alignToWallItem.Name = "alignToWallItem";
this.alignToWallItem.Size = new System.Drawing.Size(245, 22);
this.alignToWallItem.Tag = "thingaligntowall";
this.alignToWallItem.Text = "&Align To Closest Linedef";
this.alignToWallItem.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// pointAtCursorItem
//
this.pointAtCursorItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.ThingPointAtCursor;
this.pointAtCursorItem.Name = "pointAtCursorItem";
this.pointAtCursorItem.Size = new System.Drawing.Size(245, 22);
this.pointAtCursorItem.Tag = "thinglookatcursor";
this.pointAtCursorItem.Text = "&Point at Cursor";
this.pointAtCursorItem.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// vertsmenu // vertsmenu
// //
this.vertsmenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.vertsmenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.placethingsv}); this.placethingsv,
this.toolStripSeparator7,
this.selectSimilarVertsItem});
this.vertsmenu.Name = "vertsmenu"; this.vertsmenu.Name = "vertsmenu";
this.vertsmenu.Size = new System.Drawing.Size(60, 20); this.vertsmenu.Size = new System.Drawing.Size(60, 20);
this.vertsmenu.Text = "Vertices"; this.vertsmenu.Text = "Vertices";
@ -390,7 +368,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
// placethingsv // placethingsv
// //
this.placethingsv.Name = "placethingsv"; this.placethingsv.Name = "placethingsv";
this.placethingsv.Size = new System.Drawing.Size(150, 22); this.placethingsv.Size = new System.Drawing.Size(153, 22);
this.placethingsv.Tag = "placethings"; this.placethingsv.Tag = "placethings";
this.placethingsv.Text = "&Place Things..."; this.placethingsv.Text = "&Place Things...";
this.placethingsv.Click += new System.EventHandler(this.InvokeTaggedAction); this.placethingsv.Click += new System.EventHandler(this.InvokeTaggedAction);
@ -430,6 +408,57 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.manualstrip.TabIndex = 2; this.manualstrip.TabIndex = 2;
this.manualstrip.Text = "toolStrip1"; this.manualstrip.Text = "toolStrip1";
// //
// 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);
//
// 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);
//
// brightnessGradientMode
//
this.brightnessGradientMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.brightnessGradientMode.Name = "brightnessGradientMode";
this.brightnessGradientMode.Size = new System.Drawing.Size(75, 25);
this.brightnessGradientMode.ToolTipText = "Brightness Gradient affects:";
this.brightnessGradientMode.DropDownClosed += new System.EventHandler(this.brightnessGradientMode_DropDownClosed);
//
// fileMenuStrip
//
this.fileMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.exportStripMenuItem});
this.fileMenuStrip.Location = new System.Drawing.Point(0, 0);
this.fileMenuStrip.Name = "fileMenuStrip";
this.fileMenuStrip.Size = new System.Drawing.Size(588, 24);
this.fileMenuStrip.TabIndex = 3;
this.fileMenuStrip.Text = "menuStrip1";
//
// exportStripMenuItem
//
this.exportStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem5});
this.exportStripMenuItem.Name = "exportStripMenuItem";
this.exportStripMenuItem.Size = new System.Drawing.Size(52, 20);
this.exportStripMenuItem.Text = "Export";
//
// toolStripMenuItem5
//
this.toolStripMenuItem5.Name = "toolStripMenuItem5";
this.toolStripMenuItem5.Size = new System.Drawing.Size(229, 22);
this.toolStripMenuItem5.Tag = "exporttoobj";
this.toolStripMenuItem5.Text = "Selection To Wavefront .obj...";
this.toolStripMenuItem5.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// toolStripSeparator5
//
this.toolStripSeparator5.Name = "toolStripSeparator5";
this.toolStripSeparator5.Size = new System.Drawing.Size(242, 6);
//
// buttoncopyproperties // buttoncopyproperties
// //
this.buttoncopyproperties.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.buttoncopyproperties.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@ -463,12 +492,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.buttonpastepropertiesoptions.Text = "Choose Properties to Paste"; this.buttonpastepropertiesoptions.Text = "Choose Properties to Paste";
this.buttonpastepropertiesoptions.Click += new System.EventHandler(this.InvokeTaggedAction); this.buttonpastepropertiesoptions.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);
//
// buttonselectionnumbers // buttonselectionnumbers
// //
this.buttonselectionnumbers.CheckOnClick = true; this.buttonselectionnumbers.CheckOnClick = true;
@ -491,12 +514,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.buttonselectioneffects.Text = "View Tags and Effects"; this.buttonselectioneffects.Text = "View Tags and Effects";
this.buttonselectioneffects.Click += new System.EventHandler(this.buttonselectioneffects_Click); this.buttonselectioneffects.Click += new System.EventHandler(this.buttonselectioneffects_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;
@ -564,14 +581,6 @@ 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);
// //
// brightnessGradientMode
//
this.brightnessGradientMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.brightnessGradientMode.Name = "brightnessGradientMode";
this.brightnessGradientMode.Size = new System.Drawing.Size(75, 25);
this.brightnessGradientMode.ToolTipText = "Brightness Gradient affects:";
this.brightnessGradientMode.DropDownClosed += new System.EventHandler(this.brightnessGradientMode_DropDownClosed);
//
// buttonMarqueSelectTouching // buttonMarqueSelectTouching
// //
this.buttonMarqueSelectTouching.CheckOnClick = true; this.buttonMarqueSelectTouching.CheckOnClick = true;
@ -619,31 +628,87 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.buttonMakeDoor.Text = "Make Door From Selection"; this.buttonMakeDoor.Text = "Make Door From Selection";
this.buttonMakeDoor.Click += new System.EventHandler(this.InvokeTaggedAction); this.buttonMakeDoor.Click += new System.EventHandler(this.InvokeTaggedAction);
// //
// fileMenuStrip // selectSimilarLinesItem
// //
this.fileMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.selectSimilarLinesItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar;
this.exportStripMenuItem}); this.selectSimilarLinesItem.Name = "selectSimilarLinesItem";
this.fileMenuStrip.Location = new System.Drawing.Point(0, 0); this.selectSimilarLinesItem.Size = new System.Drawing.Size(245, 22);
this.fileMenuStrip.Name = "fileMenuStrip"; this.selectSimilarLinesItem.Tag = "selectsimilar";
this.fileMenuStrip.Size = new System.Drawing.Size(588, 24); this.selectSimilarLinesItem.Text = "Select Similar...";
this.fileMenuStrip.TabIndex = 3; this.selectSimilarLinesItem.Click += new System.EventHandler(this.InvokeTaggedAction);
this.fileMenuStrip.Text = "menuStrip1";
// //
// exportStripMenuItem // makedooritem
// //
this.exportStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.makedooritem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Door;
this.toolStripMenuItem5}); this.makedooritem.Name = "makedooritem";
this.exportStripMenuItem.Name = "exportStripMenuItem"; this.makedooritem.Size = new System.Drawing.Size(245, 22);
this.exportStripMenuItem.Size = new System.Drawing.Size(52, 20); this.makedooritem.Tag = "makedoor";
this.exportStripMenuItem.Text = "Export"; this.makedooritem.Text = "Make &Door";
this.makedooritem.Click += new System.EventHandler(this.InvokeTaggedAction);
// //
// toolStripMenuItem5 // filterSelectionItem
// //
this.toolStripMenuItem5.Name = "toolStripMenuItem5"; this.filterSelectionItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.FilterThings;
this.toolStripMenuItem5.Size = new System.Drawing.Size(229, 22); this.filterSelectionItem.Name = "filterSelectionItem";
this.toolStripMenuItem5.Tag = "exporttoobj"; this.filterSelectionItem.Size = new System.Drawing.Size(245, 22);
this.toolStripMenuItem5.Text = "Selection To Wavefront .obj..."; this.filterSelectionItem.Tag = "filterselectedthings";
this.toolStripMenuItem5.Click += new System.EventHandler(this.InvokeTaggedAction); this.filterSelectionItem.Text = "Filter Selection...";
this.filterSelectionItem.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// alignToWallItem
//
this.alignToWallItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.AlignThings;
this.alignToWallItem.Name = "alignToWallItem";
this.alignToWallItem.Size = new System.Drawing.Size(245, 22);
this.alignToWallItem.Tag = "thingaligntowall";
this.alignToWallItem.Text = "&Align To Closest Linedef";
this.alignToWallItem.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// pointAtCursorItem
//
this.pointAtCursorItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.ThingPointAtCursor;
this.pointAtCursorItem.Name = "pointAtCursorItem";
this.pointAtCursorItem.Size = new System.Drawing.Size(245, 22);
this.pointAtCursorItem.Tag = "thinglookatcursor";
this.pointAtCursorItem.Text = "&Point at Cursor";
this.pointAtCursorItem.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// selectSimilarSectors
//
this.selectSimilarSectors.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar;
this.selectSimilarSectors.Name = "selectSimilarSectors";
this.selectSimilarSectors.Size = new System.Drawing.Size(245, 22);
this.selectSimilarSectors.Tag = "selectsimilar";
this.selectSimilarSectors.Text = "Select Similar...";
this.selectSimilarSectors.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// selectSimilarThingsItem
//
this.selectSimilarThingsItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar;
this.selectSimilarThingsItem.Name = "selectSimilarThingsItem";
this.selectSimilarThingsItem.Size = new System.Drawing.Size(245, 22);
this.selectSimilarThingsItem.Tag = "selectsimilar";
this.selectSimilarThingsItem.Text = "Select Similar...";
this.selectSimilarThingsItem.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// toolStripSeparator6
//
this.toolStripSeparator6.Name = "toolStripSeparator6";
this.toolStripSeparator6.Size = new System.Drawing.Size(242, 6);
//
// toolStripSeparator7
//
this.toolStripSeparator7.Name = "toolStripSeparator7";
this.toolStripSeparator7.Size = new System.Drawing.Size(150, 6);
//
// selectSimilarVertsItem
//
this.selectSimilarVertsItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar;
this.selectSimilarVertsItem.Name = "selectSimilarVertsItem";
this.selectSimilarVertsItem.Size = new System.Drawing.Size(153, 22);
this.selectSimilarVertsItem.Tag = "selectsimilar";
this.selectSimilarVertsItem.Text = "Select Similar...";
this.selectSimilarVertsItem.Click += new System.EventHandler(this.InvokeTaggedAction);
// //
// MenusForm // MenusForm
// //
@ -735,5 +800,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem5; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem5;
private System.Windows.Forms.ToolStripButton buttonpastepropertiesoptions; private System.Windows.Forms.ToolStripButton buttonpastepropertiesoptions;
private System.Windows.Forms.ToolStripMenuItem filterSelectionItem; private System.Windows.Forms.ToolStripMenuItem filterSelectionItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
private System.Windows.Forms.ToolStripMenuItem selectSimilarLinesItem;
private System.Windows.Forms.ToolStripMenuItem selectSimilarSectors;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
private System.Windows.Forms.ToolStripMenuItem selectSimilarThingsItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;
private System.Windows.Forms.ToolStripMenuItem selectSimilarVertsItem;
} }
} }

View file

@ -49,8 +49,7 @@
// //
// tabControl // tabControl
// //
this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.tabControl.Controls.Add(this.sectors); this.tabControl.Controls.Add(this.sectors);
this.tabControl.Controls.Add(this.linedefs); this.tabControl.Controls.Add(this.linedefs);
@ -91,7 +90,7 @@
this.linedefs.Location = new System.Drawing.Point(4, 23); this.linedefs.Location = new System.Drawing.Point(4, 23);
this.linedefs.Name = "linedefs"; this.linedefs.Name = "linedefs";
this.linedefs.Padding = new System.Windows.Forms.Padding(3); this.linedefs.Padding = new System.Windows.Forms.Padding(3);
this.linedefs.Size = new System.Drawing.Size(258, 182); this.linedefs.Size = new System.Drawing.Size(258, 100);
this.linedefs.TabIndex = 1; this.linedefs.TabIndex = 1;
this.linedefs.Text = "Linedefs"; this.linedefs.Text = "Linedefs";
this.linedefs.UseVisualStyleBackColor = true; this.linedefs.UseVisualStyleBackColor = true;
@ -103,7 +102,7 @@
this.lineflags.Dock = System.Windows.Forms.DockStyle.Fill; this.lineflags.Dock = System.Windows.Forms.DockStyle.Fill;
this.lineflags.Location = new System.Drawing.Point(3, 3); this.lineflags.Location = new System.Drawing.Point(3, 3);
this.lineflags.Name = "lineflags"; this.lineflags.Name = "lineflags";
this.lineflags.Size = new System.Drawing.Size(252, 176); this.lineflags.Size = new System.Drawing.Size(252, 94);
this.lineflags.TabIndex = 3; this.lineflags.TabIndex = 3;
this.lineflags.VerticalSpacing = 1; this.lineflags.VerticalSpacing = 1;
// //
@ -113,7 +112,7 @@
this.sidedefs.Location = new System.Drawing.Point(4, 23); this.sidedefs.Location = new System.Drawing.Point(4, 23);
this.sidedefs.Name = "sidedefs"; this.sidedefs.Name = "sidedefs";
this.sidedefs.Padding = new System.Windows.Forms.Padding(3); this.sidedefs.Padding = new System.Windows.Forms.Padding(3);
this.sidedefs.Size = new System.Drawing.Size(258, 182); this.sidedefs.Size = new System.Drawing.Size(258, 100);
this.sidedefs.TabIndex = 2; this.sidedefs.TabIndex = 2;
this.sidedefs.Text = "Sidedefs"; this.sidedefs.Text = "Sidedefs";
this.sidedefs.UseVisualStyleBackColor = true; this.sidedefs.UseVisualStyleBackColor = true;
@ -125,7 +124,7 @@
this.sideflags.Dock = System.Windows.Forms.DockStyle.Fill; this.sideflags.Dock = System.Windows.Forms.DockStyle.Fill;
this.sideflags.Location = new System.Drawing.Point(3, 3); this.sideflags.Location = new System.Drawing.Point(3, 3);
this.sideflags.Name = "sideflags"; this.sideflags.Name = "sideflags";
this.sideflags.Size = new System.Drawing.Size(252, 176); this.sideflags.Size = new System.Drawing.Size(252, 94);
this.sideflags.TabIndex = 2; this.sideflags.TabIndex = 2;
this.sideflags.VerticalSpacing = 1; this.sideflags.VerticalSpacing = 1;
// //
@ -135,7 +134,7 @@
this.things.Location = new System.Drawing.Point(4, 23); this.things.Location = new System.Drawing.Point(4, 23);
this.things.Name = "things"; this.things.Name = "things";
this.things.Padding = new System.Windows.Forms.Padding(3); this.things.Padding = new System.Windows.Forms.Padding(3);
this.things.Size = new System.Drawing.Size(258, 182); this.things.Size = new System.Drawing.Size(258, 100);
this.things.TabIndex = 3; this.things.TabIndex = 3;
this.things.Text = "Things"; this.things.Text = "Things";
this.things.UseVisualStyleBackColor = true; this.things.UseVisualStyleBackColor = true;
@ -147,7 +146,7 @@
this.thingflags.Dock = System.Windows.Forms.DockStyle.Fill; this.thingflags.Dock = System.Windows.Forms.DockStyle.Fill;
this.thingflags.Location = new System.Drawing.Point(3, 3); this.thingflags.Location = new System.Drawing.Point(3, 3);
this.thingflags.Name = "thingflags"; this.thingflags.Name = "thingflags";
this.thingflags.Size = new System.Drawing.Size(252, 176); this.thingflags.Size = new System.Drawing.Size(252, 94);
this.thingflags.TabIndex = 2; this.thingflags.TabIndex = 2;
this.thingflags.VerticalSpacing = 1; this.thingflags.VerticalSpacing = 1;
// //
@ -157,7 +156,7 @@
this.vertices.Location = new System.Drawing.Point(4, 23); this.vertices.Location = new System.Drawing.Point(4, 23);
this.vertices.Name = "vertices"; this.vertices.Name = "vertices";
this.vertices.Padding = new System.Windows.Forms.Padding(3); this.vertices.Padding = new System.Windows.Forms.Padding(3);
this.vertices.Size = new System.Drawing.Size(258, 182); this.vertices.Size = new System.Drawing.Size(258, 100);
this.vertices.TabIndex = 4; this.vertices.TabIndex = 4;
this.vertices.Text = "Vertices"; this.vertices.Text = "Vertices";
this.vertices.UseVisualStyleBackColor = true; this.vertices.UseVisualStyleBackColor = true;
@ -169,7 +168,7 @@
this.vertexflags.Dock = System.Windows.Forms.DockStyle.Fill; this.vertexflags.Dock = System.Windows.Forms.DockStyle.Fill;
this.vertexflags.Location = new System.Drawing.Point(3, 3); this.vertexflags.Location = new System.Drawing.Point(3, 3);
this.vertexflags.Name = "vertexflags"; this.vertexflags.Name = "vertexflags";
this.vertexflags.Size = new System.Drawing.Size(252, 176); this.vertexflags.Size = new System.Drawing.Size(252, 94);
this.vertexflags.TabIndex = 1; this.vertexflags.TabIndex = 1;
this.vertexflags.VerticalSpacing = 1; this.vertexflags.VerticalSpacing = 1;
// //
@ -177,7 +176,7 @@
// //
this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancel.Location = new System.Drawing.Point(202, 146); this.cancel.Location = new System.Drawing.Point(122, 144);
this.cancel.Name = "cancel"; this.cancel.Name = "cancel";
this.cancel.Size = new System.Drawing.Size(75, 23); this.cancel.Size = new System.Drawing.Size(75, 23);
this.cancel.TabIndex = 0; this.cancel.TabIndex = 0;
@ -188,7 +187,7 @@
// apply // apply
// //
this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.apply.Location = new System.Drawing.Point(121, 146); this.apply.Location = new System.Drawing.Point(203, 144);
this.apply.Name = "apply"; this.apply.Name = "apply";
this.apply.Size = new System.Drawing.Size(75, 23); this.apply.Size = new System.Drawing.Size(75, 23);
this.apply.TabIndex = 1; this.apply.TabIndex = 1;
@ -199,11 +198,11 @@
// enableall // enableall
// //
this.enableall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.enableall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.enableall.Location = new System.Drawing.Point(10, 146); this.enableall.Location = new System.Drawing.Point(11, 144);
this.enableall.Name = "enableall"; this.enableall.Name = "enableall";
this.enableall.Size = new System.Drawing.Size(70, 23); this.enableall.Size = new System.Drawing.Size(70, 23);
this.enableall.TabIndex = 2; this.enableall.TabIndex = 2;
this.enableall.Text = "Enable All"; this.enableall.Text = "Toggle All";
this.enableall.UseVisualStyleBackColor = true; this.enableall.UseVisualStyleBackColor = true;
this.enableall.Click += new System.EventHandler(this.enableall_Click); this.enableall.Click += new System.EventHandler(this.enableall_Click);
// //
@ -213,7 +212,7 @@
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.CancelButton = this.cancel; this.CancelButton = this.cancel;
this.ClientSize = new System.Drawing.Size(290, 176); this.ClientSize = new System.Drawing.Size(290, 171);
this.Controls.Add(this.enableall); this.Controls.Add(this.enableall);
this.Controls.Add(this.apply); this.Controls.Add(this.apply);
this.Controls.Add(this.cancel); this.Controls.Add(this.cancel);
@ -222,8 +221,8 @@
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Name = "PastePropertiesOptionsForm"; this.Name = "PastePropertiesOptionsForm";
this.ShowInTaskbar = false; this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.Text = "Paste Properties Options"; this.Text = "Paste Properties Options";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.PastePropertiesOptionsForm_FormClosing);
this.tabControl.ResumeLayout(false); this.tabControl.ResumeLayout(false);
this.sectors.ResumeLayout(false); this.sectors.ResumeLayout(false);
this.linedefs.ResumeLayout(false); this.linedefs.ResumeLayout(false);

View file

@ -9,30 +9,42 @@ namespace CodeImp.DoomBuilder.BuilderModes.Interface
{ {
public partial class PastePropertiesOptionsForm : Form public partial class PastePropertiesOptionsForm : Form
{ {
private readonly Dictionary<Type, CheckboxArrayControl> typecontrols; private static Size size = Size.Empty;
private static Point location = Point.Empty;
private readonly Dictionary<object, CheckboxArrayControl> typecontrols;
public PastePropertiesOptionsForm() { public PastePropertiesOptionsForm() {
Point pos = Cursor.Position;
pos.Offset(-this.Width / 2, -this.Height / 2);
if (pos.Y < 0) pos.Y = 0;
this.Location = pos;
InitializeComponent(); InitializeComponent();
//apply window size and location
if(!size.IsEmpty && !location.IsEmpty) {
this.StartPosition = FormStartPosition.Manual;
this.Size = size;
this.Location = location;
}
//create a collection //create a collection
typecontrols = new Dictionary<Type, CheckboxArrayControl> { typecontrols = new Dictionary<object, CheckboxArrayControl> {
{typeof (SectorProperties), sectorflags}, {SectorProperties.CopySettings, sectorflags},
{typeof (LinedefProperties), lineflags}, {LinedefProperties.CopySettings, lineflags},
{typeof (SidedefProperties), sideflags}, {SidedefProperties.CopySettings, sideflags},
{typeof (ThingProperties), thingflags}, {ThingProperties.CopySettings, thingflags},
{typeof (VertexProperties), vertexflags} {VertexProperties.CopySettings, vertexflags}
}; };
//fill flags //fill flags
foreach(KeyValuePair<Type, CheckboxArrayControl> group in typecontrols) { foreach(KeyValuePair<object, CheckboxArrayControl> group in typecontrols) {
FieldInfo[] props = group.Key.GetFields(BindingFlags.Static | BindingFlags.Public); FieldInfo[] props = group.Key.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance);
string title = "<unknown flag>";
foreach(var prop in props) { foreach(var prop in props) {
group.Value.Add(prop.Name.Replace("_", " "), prop.Name).Checked = (bool)prop.GetValue(group.Key); foreach(Attribute attr in Attribute.GetCustomAttributes(prop)) {
if(attr.GetType() == typeof(FieldDescription)) {
title = ((FieldDescription)attr).Description;
break;
}
}
group.Value.Add(title, prop.Name).Checked = (bool)prop.GetValue(group.Key);
} }
group.Value.PositionCheckboxes(); group.Value.PositionCheckboxes();
@ -49,8 +61,8 @@ namespace CodeImp.DoomBuilder.BuilderModes.Interface
} }
private void apply_Click(object sender, EventArgs e) { private void apply_Click(object sender, EventArgs e) {
foreach (KeyValuePair<Type, CheckboxArrayControl> group in typecontrols) { foreach (KeyValuePair<object, CheckboxArrayControl> group in typecontrols) {
FieldInfo[] props = group.Key.GetFields(BindingFlags.Static | BindingFlags.Public); FieldInfo[] props = group.Key.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance);
var fields = new Dictionary<string, FieldInfo>(props.Length); var fields = new Dictionary<string, FieldInfo>(props.Length);
for(int i = 0; i < props.Length; i++) { for(int i = 0; i < props.Length; i++) {
fields[props[i].Name] = props[i]; fields[props[i].Name] = props[i];
@ -68,9 +80,15 @@ namespace CodeImp.DoomBuilder.BuilderModes.Interface
} }
private void enableall_Click(object sender, EventArgs e) { private void enableall_Click(object sender, EventArgs e) {
foreach (KeyValuePair<Type, CheckboxArrayControl> group in typecontrols) { CheckboxArrayControl curControl = tabControl.SelectedTab.Controls[0] as CheckboxArrayControl;
foreach (var cb in group.Value.Checkboxes) cb.Checked = true; if(curControl == null) return; //just a piece of boilerplate...
} bool enable = !curControl.Checkboxes[0].Checked;
foreach(var cb in curControl.Checkboxes) cb.Checked = enable;
}
private void PastePropertiesOptionsForm_FormClosing(object sender, FormClosingEventArgs e) {
size = this.Size;
location = this.Location;
} }
} }
} }

View file

@ -0,0 +1,253 @@
namespace CodeImp.DoomBuilder.BuilderModes
{
partial class SelectSimilarElementOptionsPanel
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) {
if(disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
this.enableall = new System.Windows.Forms.Button();
this.apply = new System.Windows.Forms.Button();
this.cancel = new System.Windows.Forms.Button();
this.tabControl = new System.Windows.Forms.TabControl();
this.sectors = new System.Windows.Forms.TabPage();
this.sectorflags = new CodeImp.DoomBuilder.Controls.CheckboxArrayControl();
this.linedefs = new System.Windows.Forms.TabPage();
this.lineflags = new CodeImp.DoomBuilder.Controls.CheckboxArrayControl();
this.sidedefs = new System.Windows.Forms.TabPage();
this.sideflags = new CodeImp.DoomBuilder.Controls.CheckboxArrayControl();
this.things = new System.Windows.Forms.TabPage();
this.thingflags = new CodeImp.DoomBuilder.Controls.CheckboxArrayControl();
this.vertices = new System.Windows.Forms.TabPage();
this.vertexflags = new CodeImp.DoomBuilder.Controls.CheckboxArrayControl();
this.tabControl.SuspendLayout();
this.sectors.SuspendLayout();
this.linedefs.SuspendLayout();
this.sidedefs.SuspendLayout();
this.things.SuspendLayout();
this.vertices.SuspendLayout();
this.SuspendLayout();
//
// enableall
//
this.enableall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.enableall.Location = new System.Drawing.Point(11, 144);
this.enableall.Name = "enableall";
this.enableall.Size = new System.Drawing.Size(70, 23);
this.enableall.TabIndex = 7;
this.enableall.Text = "Toggle All";
this.enableall.UseVisualStyleBackColor = true;
this.enableall.Click += new System.EventHandler(this.enableall_Click);
//
// apply
//
this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.apply.Location = new System.Drawing.Point(203, 144);
this.apply.Name = "apply";
this.apply.Size = new System.Drawing.Size(75, 23);
this.apply.TabIndex = 6;
this.apply.Text = "OK";
this.apply.UseVisualStyleBackColor = true;
this.apply.Click += new System.EventHandler(this.apply_Click);
//
// cancel
//
this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancel.Location = new System.Drawing.Point(122, 144);
this.cancel.Name = "cancel";
this.cancel.Size = new System.Drawing.Size(75, 23);
this.cancel.TabIndex = 5;
this.cancel.Text = "Cancel";
this.cancel.UseVisualStyleBackColor = true;
this.cancel.Click += new System.EventHandler(this.cancel_Click);
//
// tabControl
//
this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tabControl.Controls.Add(this.sectors);
this.tabControl.Controls.Add(this.linedefs);
this.tabControl.Controls.Add(this.sidedefs);
this.tabControl.Controls.Add(this.things);
this.tabControl.Controls.Add(this.vertices);
this.tabControl.Location = new System.Drawing.Point(12, 12);
this.tabControl.Name = "tabControl";
this.tabControl.SelectedIndex = 0;
this.tabControl.Size = new System.Drawing.Size(266, 127);
this.tabControl.TabIndex = 8;
//
// sectors
//
this.sectors.Controls.Add(this.sectorflags);
this.sectors.Location = new System.Drawing.Point(4, 23);
this.sectors.Name = "sectors";
this.sectors.Padding = new System.Windows.Forms.Padding(3);
this.sectors.Size = new System.Drawing.Size(258, 100);
this.sectors.TabIndex = 0;
this.sectors.Text = "Sectors";
this.sectors.UseVisualStyleBackColor = true;
//
// sectorflags
//
this.sectorflags.AutoScroll = true;
this.sectorflags.Columns = 2;
this.sectorflags.Dock = System.Windows.Forms.DockStyle.Fill;
this.sectorflags.Location = new System.Drawing.Point(3, 3);
this.sectorflags.Name = "sectorflags";
this.sectorflags.Size = new System.Drawing.Size(252, 94);
this.sectorflags.TabIndex = 3;
this.sectorflags.VerticalSpacing = 1;
//
// linedefs
//
this.linedefs.Controls.Add(this.lineflags);
this.linedefs.Location = new System.Drawing.Point(4, 23);
this.linedefs.Name = "linedefs";
this.linedefs.Padding = new System.Windows.Forms.Padding(3);
this.linedefs.Size = new System.Drawing.Size(258, 100);
this.linedefs.TabIndex = 1;
this.linedefs.Text = "Linedefs";
this.linedefs.UseVisualStyleBackColor = true;
//
// lineflags
//
this.lineflags.AutoScroll = true;
this.lineflags.Columns = 2;
this.lineflags.Dock = System.Windows.Forms.DockStyle.Fill;
this.lineflags.Location = new System.Drawing.Point(3, 3);
this.lineflags.Name = "lineflags";
this.lineflags.Size = new System.Drawing.Size(252, 94);
this.lineflags.TabIndex = 3;
this.lineflags.VerticalSpacing = 1;
//
// sidedefs
//
this.sidedefs.Controls.Add(this.sideflags);
this.sidedefs.Location = new System.Drawing.Point(4, 23);
this.sidedefs.Name = "sidedefs";
this.sidedefs.Padding = new System.Windows.Forms.Padding(3);
this.sidedefs.Size = new System.Drawing.Size(258, 100);
this.sidedefs.TabIndex = 2;
this.sidedefs.Text = "Sidedefs";
this.sidedefs.UseVisualStyleBackColor = true;
//
// sideflags
//
this.sideflags.AutoScroll = true;
this.sideflags.Columns = 2;
this.sideflags.Dock = System.Windows.Forms.DockStyle.Fill;
this.sideflags.Location = new System.Drawing.Point(3, 3);
this.sideflags.Name = "sideflags";
this.sideflags.Size = new System.Drawing.Size(252, 94);
this.sideflags.TabIndex = 2;
this.sideflags.VerticalSpacing = 1;
//
// things
//
this.things.Controls.Add(this.thingflags);
this.things.Location = new System.Drawing.Point(4, 23);
this.things.Name = "things";
this.things.Padding = new System.Windows.Forms.Padding(3);
this.things.Size = new System.Drawing.Size(258, 100);
this.things.TabIndex = 3;
this.things.Text = "Things";
this.things.UseVisualStyleBackColor = true;
//
// thingflags
//
this.thingflags.AutoScroll = true;
this.thingflags.Columns = 2;
this.thingflags.Dock = System.Windows.Forms.DockStyle.Fill;
this.thingflags.Location = new System.Drawing.Point(3, 3);
this.thingflags.Name = "thingflags";
this.thingflags.Size = new System.Drawing.Size(252, 94);
this.thingflags.TabIndex = 2;
this.thingflags.VerticalSpacing = 1;
//
// vertices
//
this.vertices.Controls.Add(this.vertexflags);
this.vertices.Location = new System.Drawing.Point(4, 23);
this.vertices.Name = "vertices";
this.vertices.Padding = new System.Windows.Forms.Padding(3);
this.vertices.Size = new System.Drawing.Size(258, 100);
this.vertices.TabIndex = 4;
this.vertices.Text = "Vertices";
this.vertices.UseVisualStyleBackColor = true;
//
// vertexflags
//
this.vertexflags.AutoScroll = true;
this.vertexflags.Columns = 2;
this.vertexflags.Dock = System.Windows.Forms.DockStyle.Fill;
this.vertexflags.Location = new System.Drawing.Point(3, 3);
this.vertexflags.Name = "vertexflags";
this.vertexflags.Size = new System.Drawing.Size(252, 94);
this.vertexflags.TabIndex = 1;
this.vertexflags.VerticalSpacing = 1;
//
// SelectSimilarElementOptionsPanel
//
this.AcceptButton = this.apply;
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.CancelButton = this.cancel;
this.ClientSize = new System.Drawing.Size(290, 171);
this.Controls.Add(this.tabControl);
this.Controls.Add(this.enableall);
this.Controls.Add(this.apply);
this.Controls.Add(this.cancel);
this.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Name = "SelectSimilarElementOptionsPanel";
this.ShowInTaskbar = false;
this.Text = "Selection Options";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SelectSimilarElementOptionsPanel_FormClosing);
this.tabControl.ResumeLayout(false);
this.sectors.ResumeLayout(false);
this.linedefs.ResumeLayout(false);
this.sidedefs.ResumeLayout(false);
this.things.ResumeLayout(false);
this.vertices.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button enableall;
private System.Windows.Forms.Button apply;
private System.Windows.Forms.Button cancel;
private System.Windows.Forms.TabControl tabControl;
private System.Windows.Forms.TabPage sectors;
private CodeImp.DoomBuilder.Controls.CheckboxArrayControl sectorflags;
private System.Windows.Forms.TabPage linedefs;
private CodeImp.DoomBuilder.Controls.CheckboxArrayControl lineflags;
private System.Windows.Forms.TabPage sidedefs;
private CodeImp.DoomBuilder.Controls.CheckboxArrayControl sideflags;
private System.Windows.Forms.TabPage things;
private CodeImp.DoomBuilder.Controls.CheckboxArrayControl thingflags;
private System.Windows.Forms.TabPage vertices;
private CodeImp.DoomBuilder.Controls.CheckboxArrayControl vertexflags;
}
}

View file

@ -0,0 +1,179 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Reflection;
using System.Windows.Forms;
using CodeImp.DoomBuilder.Controls;
using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Windows;
namespace CodeImp.DoomBuilder.BuilderModes
{
public partial class SelectSimilarElementOptionsPanel : Form
{
private static Size size = Size.Empty;
private static Point location = Point.Empty;
private static readonly object[] flags = {
new SectorPropertiesCopySettings(),
new LinedefPropertiesCopySettings(),
new SidedefPropertiesCopySettings(),
new ThingPropertiesCopySettings(),
new VertexPropertiesCopySettings()
};
private BaseClassicMode mode;
private TabPage[] activeTabs;
private readonly Dictionary<CheckboxArrayControl, object> typecontrols;
public SelectSimilarElementOptionsPanel() {
InitializeComponent();
//apply window size and location
if(!size.IsEmpty && !location.IsEmpty) {
this.StartPosition = FormStartPosition.Manual;
this.Size = size;
this.Location = location;
}
//create a collection
typecontrols = new Dictionary<CheckboxArrayControl, object> {
{sectorflags, flags[0]},
{lineflags, flags[1]},
{sideflags, flags[2]},
{thingflags, flags[3]},
{vertexflags, flags[4]}
};
}
public bool Setup(BaseClassicMode mode) {
this.mode = mode;
//which tabs should we display?
if(General.Editing.Mode is ThingsMode) {
activeTabs = new[] {things};
} else if(General.Editing.Mode is VerticesMode) {
activeTabs = new[] { vertices };
} else if(General.Editing.Mode is LinedefsMode) {
activeTabs = new[] { linedefs, sidedefs };
} else if(mode is SectorsMode) {
activeTabs = new[] { sectors };
} else {
General.Interface.DisplayStatus(StatusType.Warning, "This action doesn't support current editing mode...");
return false;
}
//fill flags
foreach(TabPage page in activeTabs) {
CheckboxArrayControl curControl = page.Controls[0] as CheckboxArrayControl;
if(curControl == null) continue; //just a piece of boilerplate...
FieldInfo[] props = typecontrols[curControl].GetType().GetFields(BindingFlags.Public | BindingFlags.Instance);
string title = "<unknown flag>";
foreach(var prop in props) {
foreach(Attribute attr in Attribute.GetCustomAttributes(prop)) {
if(attr.GetType() == typeof(FieldDescription)) {
title = ((FieldDescription)attr).Description;
break;
}
}
curControl.Add(title, prop.Name).Checked = (bool)prop.GetValue(typecontrols[curControl]);
}
curControl.PositionCheckboxes();
}
//hide unused tab pages
tabControl.SelectTab(activeTabs[0]);
tabControl.TabPages.Clear();
tabControl.TabPages.AddRange(activeTabs);
return true;
}
private void SelectSimilarElementOptionsPanel_FormClosing(object sender, FormClosingEventArgs e) {
size = this.Size;
location = this.Location;
}
private void enableall_Click(object sender, EventArgs e) {
CheckboxArrayControl curControl = tabControl.SelectedTab.Controls[0] as CheckboxArrayControl;
if(curControl == null) return; //just a piece of boilerplate...
bool enable = !curControl.Checkboxes[0].Checked;
foreach(var cb in curControl.Checkboxes) cb.Checked = enable;
}
private void cancel_Click(object sender, EventArgs e) {
this.Close();
}
private void apply_Click(object sender, EventArgs e) {
//save flags states
foreach (TabPage page in activeTabs) {
CheckboxArrayControl curControl = page.Controls[0] as CheckboxArrayControl;
if(curControl == null) continue; //just a piece of boilerplate...
FieldInfo[] props = typecontrols[curControl].GetType().GetFields(BindingFlags.Public | BindingFlags.Instance);
var fields = new Dictionary<string, FieldInfo>(props.Length);
for(int i = 0; i < props.Length; i++) {
fields[props[i].Name] = props[i];
}
foreach(CheckBox cb in curControl.Checkboxes) {
fields[cb.Tag.ToString()].SetValue(typecontrols[curControl], cb.Checked);
}
}
//perform selection
if(mode is ThingsMode) {
ICollection<Thing> selected = General.Map.Map.GetSelectedThings(true);
ICollection<Thing> unselected = General.Map.Map.GetSelectedThings(false);
foreach (Thing target in unselected) {
foreach (Thing source in selected) {
if (PropertiesComparer.PropertiesMatch((ThingPropertiesCopySettings) typecontrols[thingflags], source, target))
mode.SelectMapElement(target);
}
}
} else if(mode is LinedefsMode) {
ICollection<Linedef> selected = General.Map.Map.GetSelectedLinedefs(true);
ICollection<Linedef> unselected = General.Map.Map.GetSelectedLinedefs(false);
foreach(Linedef target in unselected) {
foreach(Linedef source in selected) {
if(PropertiesComparer.PropertiesMatch((LinedefPropertiesCopySettings)typecontrols[lineflags], (SidedefPropertiesCopySettings)typecontrols[sideflags], source, target))
mode.SelectMapElement(target);
}
}
} else if(mode is SectorsMode) {
ICollection<Sector> selected = General.Map.Map.GetSelectedSectors(true);
ICollection<Sector> unselected = General.Map.Map.GetSelectedSectors(false);
foreach(Sector target in unselected) {
foreach(Sector source in selected) {
if(PropertiesComparer.PropertiesMatch((SectorPropertiesCopySettings)typecontrols[sectorflags], source, target))
mode.SelectMapElement(target);
}
}
} else if(mode is VerticesMode) {
ICollection<Vertex> selected = General.Map.Map.GetSelectedVertices(true);
ICollection<Vertex> unselected = General.Map.Map.GetSelectedVertices(false);
foreach(Vertex target in unselected) {
foreach(Vertex source in selected) {
if(PropertiesComparer.PropertiesMatch((VertexPropertiesCopySettings)typecontrols[vertexflags], source, target))
mode.SelectMapElement(target);
}
}
}
mode.UpdateSelectionInfo();
General.Interface.RedrawDisplay();
this.Close();
}
}
}

View file

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -242,6 +242,13 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties {
} }
} }
internal static System.Drawing.Bitmap Similar {
get {
object obj = ResourceManager.GetObject("Similar", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap SnapVerts { internal static System.Drawing.Bitmap SnapVerts {
get { get {
object obj = ResourceManager.GetObject("SnapVerts", resourceCulture); object obj = ResourceManager.GetObject("SnapVerts", resourceCulture);

View file

@ -118,106 +118,109 @@
<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="ViewSelectionEffects" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="FloorAlign" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ViewSelectionEffects.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\FloorAlign.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="AlignThings" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlignThings.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="SelectTouching" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SelectTouching.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="DrawEllipseMode" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="DrawEllipseMode" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\DrawEllipseMode.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\DrawEllipseMode.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </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>
<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="ColorPick" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ColorPick.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="Text" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Text.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="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="Gear" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Gear.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="PastePropertiesOptions" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\PastePropertiesOptions.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="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>
</data>
<data name="CeilingAlign" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\CeilingAlign.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<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>
</data>
<data name="Angle" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Angle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="SnapVerts" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SnapVerts.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="VisualModeGZ" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="VisualModeGZ" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\VisualModeGZ.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\VisualModeGZ.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="TextureLock" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\TextureLock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="CopyProperties" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\CopyProperties.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="List" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\List.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="List_Images" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\List_Images.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="FloorAlign" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FloorAlign.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="Reset" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Reset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="DrawGridMode" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\DrawGridMode.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Door" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Door.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="DrawCurveMode" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\DrawCurveMode.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="DrawGeometryMode" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\DrawGeometryMode.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="DrawRectangleMode" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="DrawRectangleMode" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\DrawRectangleMode.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\DrawRectangleMode.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="ViewSelectionEffects" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ViewSelectionEffects.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Gear" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Gear.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="SnapVerts" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SnapVerts.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="DrawGridMode" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\DrawGridMode.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="PastePropertiesOptions" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\PastePropertiesOptions.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<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>
</data>
<data name="AlignThings" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AlignThings.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="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="List" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\List.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="CopyProperties" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\CopyProperties.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="SelectTouching" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SelectTouching.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ThingPointAtCursor" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="ThingPointAtCursor" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ThingPointAtCursor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\ThingPointAtCursor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="Text" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Text.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="Door" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Door.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="TextureLock" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\TextureLock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Reset" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Reset.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>
<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>
</data>
<data name="DrawCurveMode" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\DrawCurveMode.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ColorPick" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ColorPick.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="Angle" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Angle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="List_Images" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\List_Images.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="DrawGeometryMode" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\DrawGeometryMode.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="CeilingAlign" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\CeilingAlign.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="FilterThings" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="FilterThings" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FilterThings.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\FilterThings.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="Similar" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Similar.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root> </root>

View file

@ -206,6 +206,17 @@ placethings
allowscroll = false; allowscroll = false;
} }
//mxd
selectsimilar
{
title = "Select Similar Map Elements";
category = "edit";
description = "Selects map elements, similar to currently selected ones, based on a set of settings.";
allowkeys = true;
allowmouse = false;
allowscroll = false;
}
//mxd //mxd
filterselectedthings filterselectedthings
{ {

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B