can right-click and delete, right-click and change color of selected items

This commit is contained in:
Tim Young 2017-06-07 09:10:02 -05:00
parent e13454b950
commit d4acde7b18
2 changed files with 92 additions and 39 deletions

View File

@ -600,6 +600,30 @@ namespace EduNetworkBuilder
if (ReleasedOn != null) LockedOut = ReleasedOn.DeviceIsLockedOutByVLANs(); if (ReleasedOn != null) LockedOut = ReleasedOn.DeviceIsLockedOutByVLANs();
pbNetworkView.ContextMenuStrip.Items.Clear(); pbNetworkView.ContextMenuStrip.Items.Clear();
if(ItemsSelected.Count > 0)
{
//We do not want to do the normal menu...
LockedOut = false;
ReleasedOn = null;
//We need to make sure the item is not critical before we delete it.
pbNetworkView.ContextMenuStrip.Items.Add(NB.Translate("_Delete"));
pbNetworkView.ContextMenuStrip.Items[index++].Click += pbNetworkView_Delete_Click;
//We can color-code multiple items
if (myNetwork.VLANsEnabled)
{
int MenuIndex = pbNetworkView.ContextMenuStrip.Items.Count;
pbNetworkView.ContextMenuStrip.Items.Add(NB.Translate("NB_ColorStr"));
(pbNetworkView.ContextMenuStrip.Items[MenuIndex] as ToolStripMenuItem).DropDownItems.Add(NB.Translate("NB_Blue"), null, pbNetworkView_Color_Click);
(pbNetworkView.ContextMenuStrip.Items[MenuIndex] as ToolStripMenuItem).DropDownItems.Add(NB.Translate("NB_Purple"), null, pbNetworkView_Color_Click);
(pbNetworkView.ContextMenuStrip.Items[MenuIndex] as ToolStripMenuItem).DropDownItems.Add(NB.Translate("NB_Yellow"), null, pbNetworkView_Color_Click);
(pbNetworkView.ContextMenuStrip.Items[MenuIndex] as ToolStripMenuItem).DropDownItems.Add(NB.Translate("NB_Green"), null, pbNetworkView_Color_Click);
(pbNetworkView.ContextMenuStrip.Items[MenuIndex] as ToolStripMenuItem).DropDownItems.Add(NB.Translate("NB_Orange"), null, pbNetworkView_Color_Click);
(pbNetworkView.ContextMenuStrip.Items[MenuIndex] as ToolStripMenuItem).DropDownItems.Add(NB.Translate("NB_Cyan"), null, pbNetworkView_Color_Click);
}
}
if (!LockedOut) if (!LockedOut)
{ {
if (ReleasedOn != null && ReleasedOn.IsNotNetDevice()) if (ReleasedOn != null && ReleasedOn.IsNotNetDevice())
@ -702,7 +726,7 @@ namespace EduNetworkBuilder
(pbNetworkView.ContextMenuStrip.Items[MenuIndex] as ToolStripMenuItem).DropDownItems.Add(NB.Translate("NB_Orange"), null, pbNetworkView_Color_Click); (pbNetworkView.ContextMenuStrip.Items[MenuIndex] as ToolStripMenuItem).DropDownItems.Add(NB.Translate("NB_Orange"), null, pbNetworkView_Color_Click);
(pbNetworkView.ContextMenuStrip.Items[MenuIndex] as ToolStripMenuItem).DropDownItems.Add(NB.Translate("NB_Cyan"), null, pbNetworkView_Color_Click); (pbNetworkView.ContextMenuStrip.Items[MenuIndex] as ToolStripMenuItem).DropDownItems.Add(NB.Translate("NB_Cyan"), null, pbNetworkView_Color_Click);
} }
if (ReleasedOn == null) if (ReleasedOn == null && ItemsSelected.Count == 0)
{ {
pbNetworkView.ContextMenuStrip.Visible = false; pbNetworkView.ContextMenuStrip.Visible = false;
} }
@ -733,25 +757,38 @@ namespace EduNetworkBuilder
} }
} }
private void ColorizeDevice(NetworkDevice Item, string Text)
{
if (ItemClickedOn != null)
{
if (Text == NB.Translate("NB_Blue"))
Item.ChangeColor(Color.Empty);
if (Text == NB.Translate("NB_Purple"))
Item.ChangeColor(Color.Purple);
if (Text == NB.Translate("NB_Yellow"))
Item.ChangeColor(Color.Yellow);
if (Text == NB.Translate("NB_Green"))
Item.ChangeColor(Color.Green);
if (Text == NB.Translate("NB_Orange"))
Item.ChangeColor(Color.Orange);
if (Text == NB.Translate("NB_Cyan"))
Item.ChangeColor(Color.Cyan);
}
}
private void pbNetworkView_Color_Click(object sender, EventArgs e) private void pbNetworkView_Color_Click(object sender, EventArgs e)
{ {
ToolStripMenuItem TSMI = (ToolStripMenuItem)sender; ToolStripMenuItem TSMI = (ToolStripMenuItem)sender;
if(ItemClickedOn != null) if(ItemsSelected.Count > 0)
{ {
if (TSMI.Text == NB.Translate("NB_Blue")) foreach(NetworkDevice nd in ItemsSelected)
ItemClickedOn.ChangeColor(Color.Empty); {
if (TSMI.Text == NB.Translate("NB_Purple")) ColorizeDevice(nd, TSMI.Text);
ItemClickedOn.ChangeColor(Color.Purple); }
if (TSMI.Text == NB.Translate("NB_Yellow"))
ItemClickedOn.ChangeColor(Color.Yellow);
if (TSMI.Text == NB.Translate("NB_Green"))
ItemClickedOn.ChangeColor(Color.Green);
if (TSMI.Text == NB.Translate("NB_Orange"))
ItemClickedOn.ChangeColor(Color.Orange);
if (TSMI.Text == NB.Translate("NB_Cyan"))
ItemClickedOn.ChangeColor(Color.Cyan);
UpdateVisuals();
} }
else
ColorizeDevice(ItemClickedOn, TSMI.Text);
UpdateVisuals();
} }
private void pbNetworkView_RemoveLink_Click(object sender, EventArgs e) private void pbNetworkView_RemoveLink_Click(object sender, EventArgs e)
@ -803,21 +840,36 @@ namespace EduNetworkBuilder
UpdateVisuals(); UpdateVisuals();
} }
private void pbNetworkView_Delete_Click(object sender, EventArgs e) private void TryDeleteOneItem(NetworkDevice Item)
{ {
//Deleting the item is easy, but we also need to delete any links to that item //Deleting the item is easy, but we also need to delete any links to that item
List<HostNicID> NicIDs = new List<HostNicID>(); List<HostNicID> NicIDs = new List<HostNicID>();
if(ItemClickedOn != null) if (Item != null)
{ {
if (myNetwork.ItemIsCritical(ItemClickedOn.hostname)) if (myNetwork.ItemIsCritical(Item.hostname))
return; //we cannot delete this return; //we cannot delete this
NicIDs = ItemClickedOn.GetHostNicIDs(); NicIDs = Item.GetHostNicIDs();
foreach (HostNicID nicID in NicIDs) foreach (HostNicID nicID in NicIDs)
{ {
myNetwork.RemoveLinksToNic(nicID); myNetwork.RemoveLinksToNic(nicID);
} }
myNetwork.RemoveComponent(ItemClickedOn); myNetwork.RemoveComponent(Item);
} }
}
private void pbNetworkView_Delete_Click(object sender, EventArgs e)
{
if(ItemsSelected.Count ==0)
TryDeleteOneItem(ItemClickedOn);
else
{
for(int i=ItemsSelected.Count -1; i>=0; i--)
{
TryDeleteOneItem(ItemsSelected[i]);
}
}
pbNetworkView.Image = null;
ItemsSelected.Clear();
UpdateLinks(); UpdateLinks();
myNetwork.TestForCompletion(true); myNetwork.TestForCompletion(true);
UpdateVisuals(); UpdateVisuals();

View File

@ -94,9 +94,9 @@ Normal Table;}}{\*\listtable{\list\listtemplateid-678110632\listhybrid{\listleve
\fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 } \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }
{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname {\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname
;}\listid1535926840}}{\*\listoverridetable{\listoverride\listid300036472\listoverridecount0\ls1}{\listoverride\listid1535926840\listoverridecount0\ls2}{\listoverride\listid569733219\listoverridecount0\ls3}{\listoverride\listid1059207521 ;}\listid1535926840}}{\*\listoverridetable{\listoverride\listid300036472\listoverridecount0\ls1}{\listoverride\listid1535926840\listoverridecount0\ls2}{\listoverride\listid569733219\listoverridecount0\ls3}{\listoverride\listid1059207521
\listoverridecount0\ls4}{\listoverride\listid159203163\listoverridecount0\ls5}{\listoverride\listid272565942\listoverridecount0\ls6}}{\*\rsidtbl \rsid12019296\rsid12727595\rsid14170698\rsid14577306\rsid15677065}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0 \listoverridecount0\ls4}{\listoverride\listid159203163\listoverridecount0\ls5}{\listoverride\listid272565942\listoverridecount0\ls6}}{\*\rsidtbl \rsid12019296\rsid12727595\rsid14170698\rsid14577306\rsid15677065\rsid16005564}{\mmathPr\mmathFont34\mbrkBin0
\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim0}{\info{\operator tim.young@lightsys.org}{\creatim\yr2017\mo3\dy14\hr9\min58}{\revtim\yr2017\mo6\dy6\hr20\min51}{\version5}{\edmins5}{\nofpages9}{\nofwords1656} \mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim0}{\info{\operator tim.young@lightsys.org}{\creatim\yr2017\mo3\dy14\hr9\min58}{\revtim\yr2017\mo6\dy7\hr9\min8}{\version6}{\edmins6}{\nofpages9}{\nofwords1674}
{\nofchars9442}{\nofcharsws11076}{\vern91}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect {\nofchars9542}{\nofcharsws11194}{\vern91}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701 \widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701
\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot14577306 \nouicompat \fet0{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1 \dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot14577306 \nouicompat \fet0{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5 \pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5
@ -108,17 +108,19 @@ Normal Table;}}{\*\listtable{\list\listtemplateid-678110632\listhybrid{\listleve
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12727595 \hich\af39\dbch\af31505\loch\f39 * Select multiple items for dragging by using a nice big drag-box.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12727595 \hich\af39\dbch\af31505\loch\f39 * Select multiple items for dragging by using a nice big drag-box.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0
\f39\lang9\langfe1033\langnp9\insrsid14170698 \f39\lang9\langfe1033\langnp9\insrsid14170698
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12727595 \hich\af39\dbch\af31505\loch\f39 * Highlight the multiple items if selecting them \par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12727595 \hich\af39\dbch\af31505\loch\f39 * Highlight the multiple items if selecting them
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid15677065 \hich\af39\dbch\af31505\loch\f39 * Allow the ESC key to clear the selected items.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid15677065 \hich\af39\dbch\af31505\loch\f39 * Allow the ESC key to clear the selected items.
\f39\lang9\langfe1033\langnp9\insrsid15677065\charrsid14170698 \par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16005564 \hich\af39\dbch\af31505\loch\f39 * Can right-click and delete\hich\af39\dbch\af31505\loch\f39 of multiple \hich\af39\dbch\af31505\loch\f39 selected
\hich\af39\dbch\af31505\loch\f39 items
\par \hich\af39\dbch\af31505\loch\f39 * Can right-click and change color of multiple\hich\af39\dbch\af31505\loch\f39 selected items}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid16005564\charrsid14170698
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid14577306 \hich\af39\dbch\af31505\loch\f39 Version 1.0.31 \par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid14577306 \hich\af39\dbch\af31505\loch\f39 Version 1.0.31
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid14577306 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid14577306\charrsid14577306 \hich\af39\dbch\af31505\loch\f39 *}{ \par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid14577306 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid14577306\charrsid14577306 \hich\af39\dbch\af31505\loch\f39 *}{
\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid14577306 \hich\af39\dbch\af31505\loch\f39 Added powering off switches, routers, and the like \rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid14577306 \hich\af39\dbch\af31505\loch\f39 Added powering off switches, routers, and the like
\par \hich\af39\dbch\af31505\loch\f39 * Added traceroute \par \hich\af39\dbch\af31505\loch\f39 * Added traceroute
\par \hich\af39\dbch\af31505\loch\f39 * Added a few puzzles for those \par \hich\af39\dbch\af31505\loch\f39 * Added a few puzzles for those
\par \hich\af39\dbch\af31505\loch\f39 * Moved to a new git repository \par \hich\af39\dbch\af31505\loch\f39 * Moved to a new git repository
\par \hich\af39\dbch\af31505\loch\f39 * Changed the default location of popups. They worked very strange in a multi-window environment.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid14577306\charrsid14577306 \par \hich\af39\dbch\af31505\loch\f39 * Changed the default location of popups. They worked v\hich\af39\dbch\af31505\loch\f39 ery strange in a multi-window environment.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 Versio\hich\af39\dbch\af31505\loch\f39 \f39\lang9\langfe1033\langnp9\insrsid14577306\charrsid14577306
n 1.0.30 \par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 Version 1.0.30
\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 * Another downloadable (zip only, stable) version.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 * Another downloadable (zip only, stable) version.}{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296
\par \hich\af39\dbch\af31505\loch\f39 Version 1.0.29 \par \hich\af39\dbch\af31505\loch\f39 Version 1.0.29
\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 * Lots of VLAN butfixes \par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 * Lots of VLAN butfixes
@ -126,10 +128,9 @@ n 1.0.30
\par \hich\af39\dbch\af31505\loch\f39 * Lots more VLAN puzzles \par \hich\af39\dbch\af31505\loch\f39 * Lots more VLAN puzzles
\par \hich\af39\dbch\af31505\loch\f39 * Update VLAN documentation \par \hich\af39\dbch\af31505\loch\f39 * Update VLAN documentation
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 Version 1.0.28 \par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 Version 1.0.28
\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 * Initial VLAN release \par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 * Initial VLAN re\hich\af39\dbch\af31505\loch\f39 lease
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 Version 1.0.27 \par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 Version 1.0.27
\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 * Made distribution easier b\hich\af39\dbch\af31505\loch\f39 \par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 * Made distribution easier by CD (does updates from web, but we also have a downloadable zip you can install from)
y CD (does updates from web, but we also have a downloadable zip you can install from)
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 Version 1.0.26 \par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 Version 1.0.26
\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 * Major graphics overhaul \par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 * Major graphics overhaul
\par \hich\af39\dbch\af31505\loch\f39 - Packets move on timer \par \hich\af39\dbch\af31505\loch\f39 - Packets move on timer
@ -253,27 +254,27 @@ akes it go just a tiny bit slower and various things would fail. When the first
\par \hich\af39\dbch\af31505\loch\f39 * Del key now deletes the last item we had clicked on \par \hich\af39\dbch\af31505\loch\f39 * Del key now deletes the last item we had clicked on
\par \hich\af39\dbch\af31505\loch\f39 * Can add NICs (on some devices) \par \hich\af39\dbch\af31505\loch\f39 * Can add NICs (on some devices)
\par \hich\af39\dbch\af31505\loch\f39 * Can delete NICs \par \hich\af39\dbch\af31505\loch\f39 * Can delete NICs
\par \hich\af39\dbch\af31505\loch\f39 * Fixed minor bug with broadcast pinging solving ping test for individual computers \par \hich\af39\dbch\af31505\loch\f39 * \hich\af39\dbch\af31505\loch\f39 Fixed minor bug with broadcast pinging solving ping test for individual computers
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 Version 1.0.10 06/13/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296 \par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 Version 1.0.10 06/13/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296
\par \hich\af39\dbch\af31505\loch\f39 * Renamed puzzles to manage them easier \par \hich\af39\dbch\af31505\loch\f39 * Renamed puzzles to manage them easier
\par \hich\af39\dbch\af31505\loch\f39 * Deal with duplicate IPs, and what happens when a packet returns to a computer that did not send it. \par \hich\af39\dbch\af31505\loch\f39 * Deal with duplicate IPs, and what happens when a packet returns to a computer that did not send it.
\par \hich\af39\dbch\af31505\loch\f39 * \hich\af39\dbch\af31505\loch\f39 Change to the help window so you can keep the window open while working with the puzzle. \par \hich\af39\dbch\af31505\loch\f39 * Ch\hich\af39\dbch\af31505\loch\f39 ange to the help window so you can keep the window open while working with the puzzle.
\par \hich\af39\dbch\af31505\loch\f39 * Change to the donation link. Not that it will ever be used, but it makes me feel better having a few places for people to donate to if they wish. \par \hich\af39\dbch\af31505\loch\f39 * Change to the donation link. Not that it will ever be used, but it makes me feel better having a few places for people to donate to if they wish.
\par \hich\af39\dbch\af31505\loch\f39 * Minor change for\hich\af39\dbch\af31505\loch\f39 how broadcast packets work, specifically dealing with duplicate IP addresses. \par \hich\af39\dbch\af31505\loch\f39 * Minor change for h\hich\af39\dbch\af31505\loch\f39 ow broadcast packets work, specifically dealing with duplicate IP addresses.
\par \hich\af39\dbch\af31505\loch\f39 * Added a "firewall" device & WAN port with masquerade \par \hich\af39\dbch\af31505\loch\f39 * Added a "firewall" device & WAN port with masquerade
\par \hich\af39\dbch\af31505\loch\f39 * Added a FailedPing test so we can ping things that must fail (show the firewall works) \par \hich\af39\dbch\af31505\loch\f39 * Added a FailedPing test so we can ping things that must fail (show the firewall works)
\par \hich\af39\dbch\af31505\loch\f39 * added more to the help \par \hich\af39\dbch\af31505\loch\f39 * added more to the help
\par \hich\af39\dbch\af31505\loch\f39 * added \hich\af39\dbch\af31505\loch\f39 more puzzles \par \hich\af39\dbch\af31505\loch\f39 * added mo\hich\af39\dbch\af31505\loch\f39 re puzzles
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 Version 1.0.0.9 05/29/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296 \par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 Version 1.0.0.9 05/29/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296
\par \hich\af39\dbch\af31505\loch\f39 * Add a grid to the network map. It makes things easier to straighten up \par \hich\af39\dbch\af31505\loch\f39 * Add a grid to the network map. It makes things easier to straighten up
\par \hich\af39\dbch\af31505\loch\f39 * Sorted and organized the puzzles \par \hich\af39\dbch\af31505\loch\f39 * Sorted and organized the puzzles
\par \hich\af39\dbch\af31505\loch\f39 * Made a level for each puzzle. \par \hich\af39\dbch\af31505\loch\f39 * Made a level for each puzzle.
\par \hich\af39\dbch\af31505\loch\f39 * Tracked the puzzles which have been completed \par \hich\af39\dbch\af31505\loch\f39 * Tracked the puzzles which have been completed
\par \hich\af39\dbch\af31505\loch\f39 * When we open the puzzle\hich\af39\dbch\af31505\loch\f39 list, we now show the first level of puzzles that have an uncompleted puzzle. \par \hich\af39\dbch\af31505\loch\f39 * When we open the puzzle l\hich\af39\dbch\af31505\loch\f39 ist, we now show the first level of puzzles that have an uncompleted puzzle.
\par \hich\af39\dbch\af31505\loch\f39 * Added more "tests", viewing help, pinging, arp, and dhcp. \par \hich\af39\dbch\af31505\loch\f39 * Added more "tests", viewing help, pinging, arp, and dhcp.
\par \hich\af39\dbch\af31505\loch\f39 * Reset buttons when we load a new network. \par \hich\af39\dbch\af31505\loch\f39 * Reset buttons when we load a new network.
\par \hich\af39\dbch\af31505\loch\f39 * Added a bunch more puzzles \par \hich\af39\dbch\af31505\loch\f39 * Added a bunch more puzzles
\par \hich\af39\dbch\af31505\loch\f39 * Sometimes the remembered IP gets annoying \hich\af39\dbch\af31505\loch\f39 when it remembers odd gateways and numbers we cannot change. Fixed that in many cases. \par \hich\af39\dbch\af31505\loch\f39 * Sometimes the remembered IP gets annoying wh\hich\af39\dbch\af31505\loch\f39 en it remembers odd gateways and numbers we cannot change. Fixed that in many cases.
\par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 Version 1.0.0.8 05/25/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296 \par }{\rtlch\fcs1 \ab\af39 \ltrch\fcs0 \b\f39\lang9\langfe1033\langnp9\insrsid12019296 \hich\af39\dbch\af31505\loch\f39 Version 1.0.0.8 05/25/2015}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid12019296
\par \hich\af39\dbch\af31505\loch\f39 * Always Start with level0 puzzles for now \par \hich\af39\dbch\af31505\loch\f39 * Always Start with level0 puzzles for now
\par \hich\af39\dbch\af31505\loch\f39 * Fixed the icon when program running \par \hich\af39\dbch\af31505\loch\f39 * Fixed the icon when program running
@ -457,8 +458,8 @@ fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000005023 ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e500000000000000000000000020c2
b5a230dfd201feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 d68797dfd201feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000105000000000000}} 0000000000000000000000000000000000000000000000000105000000000000}}