⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 view.cs

📁 一个远程终端软件的源码
💻 CS
📖 第 1 页 / 共 5 页
字号:

      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 + -