Skip to content

Commit

Permalink
Fixed ReplaceDialog for Pasting of nodes [Yes, YesToAll, No, NoToAll …
Browse files Browse the repository at this point in the history
…option]
  • Loading branch information
lastbattle committed Jul 22, 2018
1 parent 782a079 commit 43392a4
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 50 deletions.
6 changes: 3 additions & 3 deletions HaRepacker/GUI/MainForm.cs
Expand Up @@ -1184,16 +1184,16 @@ private void InsertWzNodeThreadSafe(WzNode node, WzNode parent)

private bool yesToAll = false;
private bool noToAll = false;
private ReplaceResult result;

private bool ShowReplaceDialog(string name)
{
if (yesToAll) return true;
else if (noToAll) return false;
else
{
ReplaceBox dialog = new ReplaceBox(name);
dialog.ShowDialog();
switch (dialog.result)
ReplaceBox.Show(name, out result);
switch (result)
{
case ReplaceResult.NoToAll:
noToAll = true;
Expand Down
79 changes: 42 additions & 37 deletions HaRepackerLib/Controls/HaRepackerMainPanels/HaRepackerMainPanel.cs
Expand Up @@ -879,34 +879,6 @@ private void changeSoundButton_Click(object sender, EventArgs e)
}
}

private bool yesToAll = false;
private bool noToAll = false;

private bool ShowReplaceDialog(string name)
{
if (yesToAll) return true;
else if (noToAll) return false;
else
{
ReplaceBox dialog = new ReplaceBox(name);
dialog.ShowDialog();
switch (dialog.result)
{
case ReplaceResult.NoToAll:
noToAll = true;
return false;
case ReplaceResult.No:
return false;
case ReplaceResult.YesToAll:
yesToAll = true;
return true;
case ReplaceResult.Yes:
return true;
}
}
throw new Exception("cant get here anyway");
}

public WzObject CloneWzObject(WzObject obj)
{
if (obj is WzDirectory)
Expand Down Expand Up @@ -946,6 +918,8 @@ public void DoCopy()
}
}

private ReplaceResult replaceBoxResult = ReplaceResult.NoneSelectedYet;

/// <summary>
/// Paste to the selected WzObject
/// </summary>
Expand All @@ -954,8 +928,9 @@ public void DoPaste()
if (!Warning.Warn(Properties.Resources.MainConfirmPaste))
return;

yesToAll = false;
noToAll = false;
// Reset replace option
replaceBoxResult = ReplaceResult.NoneSelectedYet;

WzNode parent = (WzNode)DataTree.SelectedNode;
WzObject parentObj = (WzObject)parent.Tag;

Expand All @@ -967,23 +942,53 @@ public void DoPaste()
if (parentObj is WzFile)
parentObj = ((WzFile)parentObj).WzDirectory;

bool bNoToAllComplete = false;
foreach (WzObject obj in clipboard)
{
if (((obj is WzDirectory || obj is WzImage) && parentObj is WzDirectory) || (obj is WzImageProperty && parentObj is IPropertyContainer))
{
WzObject clone = CloneWzObject(obj);
if (clone == null)
continue;
WzNode node = new WzNode(clone);
WzNode node = new WzNode(clone, true);

WzNode child = WzNode.GetChildNode(parent, node.Text);
if (child != null)
if (child != null) // A Child already exist
{
if (ShowReplaceDialog(node.Text))
child.Delete();
else return;
}
parent.AddNode(node);
if (replaceBoxResult == ReplaceResult.NoneSelectedYet)
{
ReplaceBox.Show(node.Text, out replaceBoxResult);
}

switch (replaceBoxResult)
{
case ReplaceResult.No: // Skip just this
replaceBoxResult = ReplaceResult.NoneSelectedYet; // reset after use
break;

case ReplaceResult.Yes: // Replace just this
child.Delete();
parent.AddNode(node);
replaceBoxResult = ReplaceResult.NoneSelectedYet; // reset after use
break;

case ReplaceResult.NoToAll:
bNoToAllComplete = true;
break;

case ReplaceResult.YesToAll:
child.Delete();
parent.AddNode(node);
break;
}

if (bNoToAllComplete)
break;
}
else // not not in this
{
parent.AddNode(node);
}
}
}
}
Expand Down
1 change: 0 additions & 1 deletion HaRepackerLib/Controls/ReplaceBox.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 16 additions & 9 deletions HaRepackerLib/Controls/ReplaceBox.cs
Expand Up @@ -14,49 +14,56 @@ public enum ReplaceResult
Yes,
No,
YesToAll,
NoToAll
NoToAll,
NoneSelectedYet
}

public partial class ReplaceBox : Form
{
public ReplaceResult result = ReplaceResult.No;

public ReplaceBox(string name)
private ReplaceBox()
{
InitializeComponent();
label1.Text = string.Format(Properties.Resources.ReplaceConfirm, name);
}

private void ReplaceBox_FormClosing(object sender, FormClosingEventArgs e)
public static bool Show(string name, out ReplaceResult result)
{
e.Cancel = true;
ReplaceBox box = new ReplaceBox();

box.label1.Text = string.Format(Properties.Resources.ReplaceConfirm, name);

box.ShowDialog();
result = box.result;

return true;
}


private void btnYes_Click(object sender, EventArgs e)
{
result = ReplaceResult.Yes;
FormClosing -= ReplaceBox_FormClosing;
Close();
}

private void btnNo_Click(object sender, EventArgs e)
{
result = ReplaceResult.No;
FormClosing -= ReplaceBox_FormClosing;

Close();
}

private void btnYestoall_Click(object sender, EventArgs e)
{
result = ReplaceResult.YesToAll;
FormClosing -= ReplaceBox_FormClosing;

Close();
}

private void btnNotoall_Click(object sender, EventArgs e)
{
result = ReplaceResult.NoToAll;
FormClosing -= ReplaceBox_FormClosing;

Close();
}
}
Expand Down

0 comments on commit 43392a4

Please sign in to comment.