📄 view.cs
字号:
SetScaledDims();
ResizeCore();
HScrlBarVal = (UInt16)(oldHScrlBarVal * scaledFBWidth / oldScaledFBWidth);
VScrlBarVal = (UInt16)(oldVScrlBarVal * scaledFBHeight / oldScaledFBHeight);
CheckCliScaling();
}
private void ServScalingClicked(object sender, EventArgs e)
{
MenuItem item = (MenuItem)sender;
if(item.Text == App.GetStr("None"))
connOpts.ViewOpts.ServScaling = ServScaling.None;
else if(item.Text == App.GetStr("1/2"))
connOpts.ViewOpts.ServScaling = ServScaling.OneHalf;
else if(item.Text == App.GetStr("1/3"))
connOpts.ViewOpts.ServScaling = ServScaling.OneThird;
else if(item.Text == App.GetStr("1/4"))
connOpts.ViewOpts.ServScaling = ServScaling.OneFourth;
else if(item.Text == App.GetStr("1/5"))
connOpts.ViewOpts.ServScaling = ServScaling.OneFifth;
else if(item.Text == App.GetStr("1/6"))
connOpts.ViewOpts.ServScaling = ServScaling.OneSixth;
else if(item.Text == App.GetStr("1/7"))
connOpts.ViewOpts.ServScaling = ServScaling.OneSeventh;
else if(item.Text == App.GetStr("1/8"))
connOpts.ViewOpts.ServScaling = ServScaling.OneEighth;
else if(item.Text == App.GetStr("1/9"))
connOpts.ViewOpts.ServScaling = ServScaling.OneNinth;
try
{
conn.SendSetScale((byte)connOpts.ViewOpts.ServScaling);
}
catch(IOException)
{
Close();
}
CheckServScaling();
}
protected virtual void CheckCliScaling()
{
CheckCliScaling(cliScalingMenu);
}
protected virtual void CheckServScaling()
{
CheckServScaling(servScalingMenu);
}
protected void CheckCliScaling(Menu menu)
{
MenuItem noneItem = null;
MenuItem autoItem = null;
MenuItem oneHalfItem = null;
MenuItem oneThirdItem = null;
MenuItem oneFourthItem = null;
MenuItem oneFifthItem = null;
MenuItem doubleItem = null;
MenuItem customItem = null;
for(int i = 0; i < menu.MenuItems.Count; i++)
{
MenuItem item = menu.MenuItems[i];
if(item.Text == App.GetStr("None"))
noneItem = item;
else if(item.Text == App.GetStr("Auto"))
autoItem = item;
else if(item.Text == App.GetStr("1/2 of server"))
oneHalfItem = item;
else if(item.Text == App.GetStr("1/3 of server"))
oneThirdItem = item;
else if(item.Text == App.GetStr("1/4 of server"))
oneFourthItem = item;
else if(item.Text == App.GetStr("1/5 of server"))
oneFifthItem = item;
else if(item.Text == App.GetStr("2 of server"))
doubleItem = item;
else if(item.Text == App.GetStr("Custom..."))
customItem = item;
}
noneItem.Checked = false;
autoItem.Checked = false;
oneHalfItem.Checked = false;
oneThirdItem.Checked = false;
oneFourthItem.Checked = false;
oneFifthItem.Checked = false;
doubleItem.Checked = false;
customItem.Checked = false;
switch(connOpts.ViewOpts.CliScaling)
{
case CliScaling.Auto:
autoItem.Checked = true;
break;
case CliScaling.OneHalf:
oneHalfItem.Checked = true;
break;
case CliScaling.OneThird:
oneThirdItem.Checked = true;
break;
case CliScaling.OneFourth:
oneFourthItem.Checked = true;
break;
case CliScaling.OneFifth:
oneFifthItem.Checked = true;
break;
case CliScaling.Double:
doubleItem.Checked = true;
break;
case CliScaling.Custom:
customItem.Checked = true;
break;
default:
noneItem.Checked = true;
break;
}
}
protected void CheckServScaling(Menu menu)
{
MenuItem noneItem = null;
MenuItem oneHalfItem = null;
MenuItem oneThirdItem = null;
MenuItem oneFourthItem = null;
MenuItem oneFifthItem = null;
MenuItem oneSixthItem = null;
MenuItem oneSeventhItem = null;
MenuItem oneEighthItem = null;
MenuItem oneNinthItem = null;
for(int i = 0; i < menu.MenuItems.Count; i++)
{
MenuItem item = menu.MenuItems[i];
if(item.Text == App.GetStr("None"))
noneItem = item;
else if(item.Text == App.GetStr("1/2"))
oneHalfItem = item;
else if(item.Text == App.GetStr("1/3"))
oneThirdItem = item;
else if(item.Text == App.GetStr("1/4"))
oneFourthItem = item;
else if(item.Text == App.GetStr("1/5"))
oneFifthItem = item;
else if(item.Text == App.GetStr("1/6"))
oneSixthItem = item;
else if(item.Text == App.GetStr("1/7"))
oneSeventhItem = item;
else if(item.Text == App.GetStr("1/8"))
oneEighthItem = item;
else if(item.Text == App.GetStr("1/9"))
oneNinthItem = item;
}
noneItem.Checked = false;
oneHalfItem.Checked = false;
oneThirdItem.Checked = false;
oneFourthItem.Checked = false;
oneFifthItem.Checked = false;
oneSixthItem.Checked = false;
oneSeventhItem.Checked = false;
oneEighthItem.Checked = false;
oneNinthItem.Checked = false;
switch(connOpts.ViewOpts.ServScaling)
{
case ServScaling.None:
noneItem.Checked = true;
break;
case ServScaling.OneHalf:
oneHalfItem.Checked = true;
break;
case ServScaling.OneThird:
oneThirdItem.Checked = true;
break;
case ServScaling.OneFourth:
oneFourthItem.Checked = true;
break;
case ServScaling.OneFifth:
oneFifthItem.Checked = true;
break;
case ServScaling.OneSixth:
oneSixthItem.Checked = true;
break;
case ServScaling.OneSeventh:
oneSeventhItem.Checked = true;
break;
case ServScaling.OneEighth:
oneEighthItem.Checked = true;
break;
case ServScaling.OneNinth:
oneNinthItem.Checked = true;
break;
}
}
private void ResizeFrameBuf(object sender, EventArgs e)
{
UInt16 oldScaledFBWidth = scaledFBWidth;
UInt16 oldScaledFBHeight = scaledFBHeight;
UInt16 oldHScrlBarVal = HScrlBarVal;
UInt16 oldVScrlBarVal = VScrlBarVal;
ResizeFrameBufCore(connOpts.ViewOpts.Orientation, newWidth, newHeight);
SetScaledDims();
try
{
conn.SendUpdReq(false);
}
catch(IOException)
{
Close();
}
ResizeCore();
if(isFBResized)
{
HScrlBarVal = (UInt16)(oldHScrlBarVal * scaledFBWidth / oldScaledFBWidth);
VScrlBarVal = (UInt16)(oldVScrlBarVal * scaledFBHeight / oldScaledFBHeight);
}
else
{
HScrlBarVal = 0;
VScrlBarVal = 0;
}
}
private void ResizeFrameBufCore(Orientation orientation, UInt16 width, UInt16 height)
{
UInt16 newRawFBWidth;
UInt16 newRawFBHeight;
switch(orientation)
{
case Orientation.Landscape90:
case Orientation.Landscape270:
newRawFBWidth = height;
newRawFBHeight = width;
break;
default:
newRawFBWidth = width;
newRawFBHeight = height;
break;
}
Bitmap newFrameBuf = new Bitmap(newRawFBWidth, newRawFBHeight);
Graphics newFrameBufGraphics = Graphics.FromImage(newFrameBuf);
LockFrameBuf();
frameBufGraphics.Dispose();
frameBuf.Dispose();
frameBuf = newFrameBuf;
frameBufGraphics = newFrameBufGraphics;
connOpts.ViewOpts.Orientation = orientation;
rawFBWidth = newRawFBWidth;
rawFBHeight = newRawFBHeight;
UnlockFrameBuf();
}
private void NewConnClicked(object sender, EventArgs e)
{
App.NewConn();
}
private void ViewOnlyClicked(object sender, EventArgs e)
{
connOpts.ViewOpts.ViewOnly = !connOpts.ViewOpts.ViewOnly;
for(int i = 0; i < optionsMenu.MenuItems.Count; i++)
{
MenuItem item = optionsMenu.MenuItems[i];
if(item.Text == App.GetStr("View only"))
item.Checked = connOpts.ViewOpts.ViewOnly;
}
}
private void ScrnUpdAlgoClicked(object sender, EventArgs e)
{
connOpts.ViewOpts.ScrnUpdAlgo = (connOpts.ViewOpts.ScrnUpdAlgo == ScrnUpdAlgo.Asap)? ScrnUpdAlgo.Batch : ScrnUpdAlgo.Asap;
for(int i = 0; i < optionsMenu.MenuItems.Count; i++)
{
MenuItem item = optionsMenu.MenuItems[i];
if(item.Text == App.GetStr("Update screen ASAP"))
item.Checked = connOpts.ViewOpts.ScrnUpdAlgo == ScrnUpdAlgo.Asap;
}
}
private void RefreshClicked(object sender, EventArgs e)
{
try
{
conn.SendUpdReq(false);
}
catch(IOException)
{
Close();
}
}
private void PixelSizeClicked(object sender, EventArgs e)
{
MenuItem item = (MenuItem)sender;
if(item.Text == App.GetStr("Server decides") && connOpts.ViewOpts.PixelSize != PixelSize.Unspec)
{
connOpts.ViewOpts.PixelSize = PixelSize.Unspec;
conn.IsFmtChgPending = true;
}
else if(item.Text == App.GetStr("Force 8-bit") && connOpts.ViewOpts.PixelSize != PixelSize.Force8Bit)
{
connOpts.ViewOpts.PixelSize = PixelSize.Force8Bit;
conn.IsFmtChgPending = true;
}
else if(item.Text == App.GetStr("Force 16-bit") && connOpts.ViewOpts.PixelSize != PixelSize.Force16Bit)
{
connOpts.ViewOpts.PixelSize = PixelSize.Force16Bit;
conn.IsFmtChgPending = true;
}
CheckPixelSize();
}
protected virtual void CheckPixelSize()
{
CheckPixelSize(pixelSizeMenu);
}
protected void CheckPixelSize(Menu menu)
{
MenuItem serverDecides = null;
MenuItem force8Bit = null;
MenuItem force16Bit = null;
for(int i = 0; i < menu.MenuItems.Count; i++)
{
MenuItem item = menu.MenuItems[i];
if(item.Text == App.GetStr("Server decides"))
serverDecides = item;
else if(item.Text == App.GetStr("Force 8-bit"))
force8Bit = item;
else if(item.Text == App.GetStr("Force 16-bit"))
force16Bit = item;
}
serverDecides.Checked = false;
force8Bit.Checked = false;
force16Bit.Checked = false;
switch(connOpts.ViewOpts.PixelSize)
{
case PixelSize.Force8Bit:
force8Bit.Checked = true;
break;
case PixelSize.Force16Bit:
force16Bit.Checked = true;
break;
case PixelSize.Unspec:
serverDecides.Checked = true;
break;
}
}
private void KeysClicked(object sender, EventArgs e)
{
if(connOpts.ViewOpts.ViewOnly)
return;
MenuItem item = (MenuItem)sender;
try
{
if(item.Text == App.GetStr("Shift down"))
{
OnKeyEvent(ShiftKey, true);
}
else if(item.Text == App.GetStr("Shift up"))
{
OnKeyEvent(ShiftKey, false);
SpecKeyUp();
}
else if(item.Text == App.GetStr("Esc"))
{
OnKeyEvent(EscKey, true);
OnKeyEvent(EscKey, false);
SpecKeyUp();
}
else if(item.Text == App.GetStr("Tab"))
{
OnKeyEvent(Keys.Tab, true);
OnKeyEvent(Keys.Tab, false);
SpecKeyUp();
}
else if(item.Text == App.GetStr("Ctrl-"))
{
OnKeyEvent(CtrlKey, true);
toKeyUpCtrl = true;
}
else if(item.Text == App.GetStr("Alt-"))
{
OnKeyEvent(AltKey, true);
toKeyUpAlt = true;
}
else if(item.Text == App.GetStr("Ctrl-Alt-"))
{
OnKeyEvent(CtrlKey, true);
toKeyUpCtrl = true;
OnKeyEvent(AltKey, true);
toKeyUpAlt = true;
}
else if(item.Text == App.GetStr("Ctrl-Alt-Del"))
{
OnKeyEvent(CtrlKey, true);
OnKeyEvent(AltKey, true);
OnKeyEvent(DelKey, true);
OnKeyEvent(DelKey, false);
OnKeyEvent(AltKey, false);
OnKeyEvent(CtrlKey, false);
toKeyUpCtrl = false;
toKeyUpAlt = false;
}
else if(item.Text == App.GetStr("Ctrl-Esc (Start Menu)"))
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -