コード例 #1
0
ファイル: con_os2.cpp プロジェクト: AaronDP/efte_adbshell
int ConGetBox(int X, int Y, int W, int H, PCell Cell) {
  int I;
  int MX, MY;
  int MouseHidden  = 0;
  USHORT WW        = (USHORT)(W << 1);
  unsigned char *p = (unsigned char *)Cell;

  if (MouseVisible) ConQueryMousePos(&MX, &MY);

  for (I = 0; I < H; I++) {
    if (MouseVisible)
      if (Y + I == MY)
        if ((MX >= X) && (MX < X + W)) {
          DrawMouse(0);
          MouseHidden = 1;
        }
          VioReadCellStr((PCH)p, &WW, (USHORT)(Y + I), (USHORT)X, 0);

    if (MouseHidden) {
          DrawMouse(1);
      MouseHidden = 0;
    }
    p += W << 1;
  }
  return 0;
}
コード例 #2
0
ファイル: con_os2.cpp プロジェクト: AaronDP/efte_adbshell
int ConScroll(int Way, int X, int Y, int W, int H, TAttr Fill, int Count) {
  int   MX, MY;
  int   MouseHidden = 0;
  TCell FillCell    = (TCell)(Fill << 8);

  if (MousePresent && MouseVisible) {
    ConQueryMousePos(&MX, &MY);

    if ((MX >= X) && (MX < X + W) && (MY >= Y) && (MY < Y + H)) {
      DrawMouse(0);
      MouseHidden = 1;
    }
  }

  switch (Way) {
  case csUp:
    VioScrollUp((USHORT)Y, (USHORT)X, (USHORT)(Y + H - 1), (USHORT)(X + W - 1),
                (USHORT)Count, (PBYTE)&FillCell, 0);
    break;

  case csDown:
    VioScrollDn((USHORT)Y, (USHORT)X, (USHORT)(Y + H - 1), (USHORT)(X + W - 1),
                (USHORT)Count, (PBYTE)&FillCell, 0);
    break;

  case csLeft:
    VioScrollLf((USHORT)Y, (USHORT)X, (USHORT)(Y + H - 1), (USHORT)(X + W - 1),
                (USHORT)Count, (PBYTE)&FillCell, 0);
    break;

  case csRight:
    VioScrollRt((USHORT)Y, (USHORT)X, (USHORT)(Y + H - 1), (USHORT)(X + W - 1),
                (USHORT)Count, (PBYTE)&FillCell, 0);
    break;
  }

  if (MouseHidden) DrawMouse(1);
  return 0;
}
コード例 #3
0
ファイル: con_os2.cpp プロジェクト: AaronDP/efte_adbshell
int ConSetBox(int X, int Y, int W, int H, TCell Cell) {
  int I;
  int MX, MY;
  int MouseHidden  = 0;
  unsigned char *p = (unsigned char *)&Cell;

  if (MouseVisible) ConQueryMousePos(&MX, &MY);

  for (I = 0; I < H; I++) {
    if (MouseVisible)
      if (Y + I == MY)
        if ((MX >= X) && (MX < X + W)) {
          DrawMouse(0);
          MouseHidden = 1;
        }
          VioWrtNCell((PCH)p, (USHORT)(W), (USHORT)(Y + I), (USHORT)X, 0);

    if (MouseHidden) {
      DrawMouse(1);
      MouseHidden = 0;
    }
  }
  return 0;
}
コード例 #4
0
ファイル: g_text.cpp プロジェクト: dmcbride/efte
void GUI::ProcessEvent() {
    TEvent E;

    E = NextEvent;
    if (E.What != evNone) {
        NextEvent.What = evNone;
    }
    if (E.What == evNone &&
            (ConGetEvent(evMouse | evCommand | evKeyboard, &E, 0, 1, 0) == -1 ||
             E.What == evNone)
       ) {
        frames->Update();
        while (ConGetEvent(evMouse | evCommand | evKeyboard, &E, -1, 1, 0) == -1 ||
                (E.What == evMouseMove && E.Mouse.Buttons == 0));
    }
    if (E.What != evNone) {
        GView *view = frames->Active;

        if (E.What & evMouse) {
            if (E.What == evMouseDown && E.Mouse.Y == 0 && ShowMenuBar &&
                    MouseCapture == 0 && FocusCapture == 0) {
                frames->Update(); // sync before menu
                if (ExecMainMenu(E, 0) == -1) {
                    if (E.What == evCommand && E.Msg.Command == cmResize) {
                        int X, Y;

                        ConQuerySize(&X, &Y);
                        frames->Resize(X, Y);
                    }
                    E.What = evNone;
                }
//                fprintf(stderr, "Command got = %d\n", E.Msg.Command);
            }
            if (E.What == evMouseDown && MouseCapture == 0 && FocusCapture == 0) {
                GView *V = frames->Active;

                while (V) {
                    if (E.Mouse.Y >= V->Peer->wY &&
                            E.Mouse.Y <  V->Peer->wY + V->Peer->wH + (ShowHScroll ? 1 : 0)) {
                        frames->SelectView(V);
                        view = V;
                        break;
                    }
                    V = V->Next;
                    if (V == frames->Active)
                        break;
                }
            }
            if (ShowVScroll && ShowHScroll && E.What == evMouseDown &&
                    MouseCapture == 0 && FocusCapture == 0 &&
                    E.Mouse.Y == view->Peer->wY + view->Peer->wH &&
                    E.Mouse.X == view->Peer->wX + view->Peer->wW) {
            } else {
                if (ShowVScroll && E.What == evMouseDown && MouseCapture == 0 && FocusCapture == 0 &&
                        E.Mouse.X == view->Peer->wX + view->Peer->wW) {
                    HandleVScroll(view, E);
                    return ;
                }
                if (ShowHScroll && E.What == evMouseDown && MouseCapture == 0 && FocusCapture == 0 &&
                        E.Mouse.Y == view->Peer->wY + view->Peer->wH) {
                    HandleHScroll(view, E);
                    return ;
                }
            }
            if (E.What & evMouse) {
                E.Mouse.Y -= view->Peer->wY;
                E.Mouse.X -= view->Peer->wX;
            }
        }
        if (E.What == evCommand) {
            switch (E.Msg.Command) {
            case cmResize: {
                int X, Y;

                ConQuerySize(&X, &Y);
                frames->Resize(X, Y);
            }
            break;
            case cmMainMenu: {
                char Sub = (char)E.Msg.Param1;

                frames->Update(); // sync before menu
                if (::ExecMainMenu(E, Sub) != 1) {
                    ;
                    if (E.What == evCommand && E.Msg.Command == cmResize) {
                        int X, Y;

                        ConQuerySize(&X, &Y);
                        frames->Resize(X, Y);
                    }
                    E.What = evNone;
                }
            }
            break;
            case cmPopupMenu: {
                int id = E.Msg.Param1;
                int Cols, Rows;

                if (id == -1) return;
                frames->ConQuerySize(&Cols, &Rows);
                int x = Cols / 2, y = Rows / 2;
                ConQueryMousePos(&x, &y);

                frames->Update(); // sync before menu
                if (::ExecVertMenu(x, y, id, E, 0) != 1) {
                    if (E.What == evCommand && E.Msg.Command == cmResize) {
                        int X, Y;

                        ConQuerySize(&X, &Y);
                        frames->Resize(X, Y);
                    }
                    E.What = evNone;
                }
            }
            break;
            }
        }
        if (E.What != evNone)
            DispatchEvent(frames, view, E);
    }
}