@@ -1025,7 +1025,7 @@ private void ShowSignalState(Graphics g, PointF scaledItem, SignalWidget sw)
10251025 {
10261026 if ( ! showSignalStateCheckbox . Checked )
10271027 return ;
1028-
1028+
10291029 var item = sw . Item as SignalItem ;
10301030 var trainNumber = sw . Signal ? . enabledTrain ? . Train ? . Number ;
10311031 var trainString = ( trainNumber == null ) ? "" : $ " train: { trainNumber } ";
@@ -1041,7 +1041,7 @@ private void ShowSignalState(Graphics g, PointF scaledItem, SignalWidget sw)
10411041 if ( scaledItem . Y >= 0f ) // -1 indicates no free slot to draw label
10421042 g . DrawString ( text , SignalFont , SignalBrush , scaledItem ) ;
10431043 }
1044-
1044+
10451045 }
10461046
10471047 private void ShowSidingLabels ( Graphics g )
@@ -1674,7 +1674,7 @@ private void mapCanvas_MouseUp(object sender, MouseEventArgs e)
16741674
16751675 private void UnHandleItemPick ( )
16761676 {
1677- //boxSetSignal .Visible = false;
1677+ setSignalMenu . Visible = false ;
16781678 setSwitchMenu . Visible = false ;
16791679 }
16801680
@@ -1684,33 +1684,24 @@ private void HandlePickedSignal()
16841684 return ;
16851685 setSwitchMenu . Visible = false ;
16861686 if ( signalPickedItem == null ) return ;
1687- var y = LastCursorPosition . Y ;
1688- if ( LastCursorPosition . Y < 100 ) y = 100 ;
1689- if ( LastCursorPosition . Y > mapCanvas . Size . Height - 100 ) y = mapCanvas . Size . Height - 100 ;
16901687
1691- /*if (boxSetSignal.Items.Count == 5)
1692- boxSetSignal.Items.RemoveAt(4);
1693-
1694- if (signalPickedItem.Signal.enabledTrain != null && signalPickedItem.Signal.CallOnEnabled)
1695- {
1696- if (!signalPickedItem.Signal.CallOnManuallyAllowed)
1697- boxSetSignal.Items.Add("Allow call on");
1698- }
1688+ allowCallOnToolStripMenuItem . Enabled = false ;
1689+ if ( signalPickedItem . Signal . enabledTrain != null && signalPickedItem . Signal . CallOnEnabled && ! signalPickedItem . Signal . CallOnManuallyAllowed )
1690+ allowCallOnToolStripMenuItem . Enabled = true ;
16991691
1700- boxSetSignal.Location = new System.Drawing.Point(LastCursorPosition.X + 2, y);
1701- boxSetSignal.Enabled = true;
1702- boxSetSignal.Focus();
1703- boxSetSignal.SelectedIndex = -1;
1704- boxSetSignal.Visible = true;
1705- return;*/
1692+ setSignalMenu . Show ( Cursor . Position ) ;
1693+ setSignalMenu . Enabled = true ;
1694+ setSignalMenu . Focus ( ) ;
1695+ setSignalMenu . Visible = true ;
1696+ return ;
17061697 }
17071698
17081699 private void HandlePickedSwitch ( )
17091700 {
17101701 if ( MPManager . IsClient ( ) && ! MPManager . Instance ( ) . AmAider )
17111702 return ; //normal client not server
17121703
1713- //boxSetSignal .Visible = false;
1704+ setSignalMenu . Visible = false ;
17141705 if ( switchPickedItem == null ) return ;
17151706 setSwitchMenu . Show ( Cursor . Position ) ;
17161707 setSwitchMenu . Enabled = true ;
@@ -1719,6 +1710,99 @@ private void HandlePickedSwitch()
17191710 return ;
17201711 }
17211712
1713+ private void setSignalMenu_ItemClicked ( object sender , ToolStripItemClickedEventArgs e )
1714+ {
1715+ if ( signalPickedItem == null )
1716+ {
1717+ UnHandleItemPick ( ) ;
1718+ return ;
1719+ }
1720+
1721+ var signal = signalPickedItem . Signal ;
1722+ var type = e . ClickedItem . Tag . ToString ( ) ;
1723+
1724+ string [ ] signalAspects = { "system" , "stop" , "approach" , "proceed" } ;
1725+ int numericSignalAspect = Array . IndexOf ( signalAspects , "stop" ) ;
1726+
1727+ if ( MPManager . Instance ( ) . AmAider )
1728+ {
1729+ MPManager . Notify ( new MSGSignalChange ( signal , numericSignalAspect ) . ToString ( ) ) ;
1730+ UnHandleItemPick ( ) ;
1731+ return ;
1732+ }
1733+
1734+ switch ( type )
1735+ {
1736+ case "system" :
1737+ signal . ClearHoldSignalDispatcher ( ) ;
1738+ break ;
1739+
1740+ case "stop" :
1741+ signal . RequestHoldSignalDispatcher ( true ) ;
1742+ break ;
1743+
1744+ case "approach" :
1745+ signal . RequestApproachAspect ( ) ;
1746+ break ;
1747+
1748+ case "proceed" :
1749+ signal . RequestLeastRestrictiveAspect ( ) ;
1750+ break ;
1751+
1752+ case "callOn" :
1753+ signal . SetManualCallOn ( true ) ;
1754+ break ;
1755+ }
1756+
1757+ UnHandleItemPick ( ) ;
1758+ }
1759+
1760+ private void setSwitchMenu_ItemClicked ( object sender , ToolStripItemClickedEventArgs e )
1761+ {
1762+ if ( switchPickedItem == null )
1763+ {
1764+ UnHandleItemPick ( ) ; return ;
1765+ }
1766+ var sw = switchPickedItem . Item . TrJunctionNode ;
1767+ var type = e . ClickedItem . Tag . ToString ( ) ;
1768+
1769+ // Aider can send message to the server for a switch
1770+ if ( MPManager . IsMultiPlayer ( ) && MPManager . Instance ( ) . AmAider )
1771+ {
1772+ var nextSwitchTrack = sw ;
1773+ var Selected = 0 ;
1774+ switch ( type )
1775+ {
1776+ case "mainRoute" :
1777+ Selected = ( int ) switchPickedItem . main ;
1778+ break ;
1779+ case "sideRoute" :
1780+ Selected = 1 - ( int ) switchPickedItem . main ;
1781+ break ;
1782+ }
1783+ // Aider selects and throws the switch, but need to confirm by the dispatcher
1784+ MPManager . Notify ( new MSGSwitch ( MPManager . GetUserName ( ) ,
1785+ nextSwitchTrack . TN . UiD . WorldTileX , nextSwitchTrack . TN . UiD . WorldTileZ , nextSwitchTrack . TN . UiD . WorldId , Selected , true ) . ToString ( ) ) ;
1786+ Program . Simulator . Confirmer . Information ( Viewer . Catalog . GetString ( "Switching Request Sent to the Server" ) ) ;
1787+
1788+ }
1789+ else // Server throws the switch immediately
1790+ {
1791+ switch ( type )
1792+ {
1793+ case "mainRoute" :
1794+ Program . Simulator . Signals . RequestSetSwitch ( sw . TN , ( int ) switchPickedItem . main ) ;
1795+ //sw.SelectedRoute = (int)switchPickedItem.main;
1796+ break ;
1797+ case "sideRoute" :
1798+ Program . Simulator . Signals . RequestSetSwitch ( sw . TN , 1 - ( int ) switchPickedItem . main ) ;
1799+ //sw.SelectedRoute = 1 - (int)switchPickedItem.main;
1800+ break ;
1801+ }
1802+ }
1803+ UnHandleItemPick ( ) ;
1804+ }
1805+
17221806 private ItemWidget findItemFromMouse ( int x , int y , int range )
17231807 {
17241808 if ( range < 5 ) range = 5 ;
@@ -1909,51 +1993,6 @@ private void penaltyCheckbox_CheckedChanged(object sender, EventArgs e)
19091993 }
19101994
19111995
1912- private void setSwitchMenu_ItemClicked ( object sender , ToolStripItemClickedEventArgs e )
1913- {
1914- if ( switchPickedItem == null )
1915- {
1916- UnHandleItemPick ( ) ; return ;
1917- }
1918- var sw = switchPickedItem . Item . TrJunctionNode ;
1919- var type = e . ClickedItem . Tag . ToString ( ) ;
1920-
1921- // Aider can send message to the server for a switch
1922- if ( MPManager . IsMultiPlayer ( ) && MPManager . Instance ( ) . AmAider )
1923- {
1924- var nextSwitchTrack = sw ;
1925- var Selected = 0 ;
1926- switch ( type )
1927- {
1928- case "mainRoute" :
1929- Selected = ( int ) switchPickedItem . main ;
1930- break ;
1931- case "sideRoute" :
1932- Selected = 1 - ( int ) switchPickedItem . main ;
1933- break ;
1934- }
1935- // Aider selects and throws the switch, but need to confirm by the dispatcher
1936- MPManager . Notify ( new MSGSwitch ( MPManager . GetUserName ( ) ,
1937- nextSwitchTrack . TN . UiD . WorldTileX , nextSwitchTrack . TN . UiD . WorldTileZ , nextSwitchTrack . TN . UiD . WorldId , Selected , true ) . ToString ( ) ) ;
1938- Program . Simulator . Confirmer . Information ( Viewer . Catalog . GetString ( "Switching Request Sent to the Server" ) ) ;
1939-
1940- }
1941- else // Server throws the switch immediately
1942- {
1943- switch ( type )
1944- {
1945- case "mainRoute" :
1946- Program . Simulator . Signals . RequestSetSwitch ( sw . TN , ( int ) switchPickedItem . main ) ;
1947- //sw.SelectedRoute = (int)switchPickedItem.main;
1948- break ;
1949- case "sideRoute" :
1950- Program . Simulator . Signals . RequestSetSwitch ( sw . TN , 1 - ( int ) switchPickedItem . main ) ;
1951- //sw.SelectedRoute = 1 - (int)switchPickedItem.main;
1952- break ;
1953- }
1954- }
1955- UnHandleItemPick ( ) ;
1956- }
19571996
19581997 private void DispatchViewerBeta_FormClosing ( object sender , FormClosingEventArgs e )
19591998 {
0 commit comments