Exemplo n.º 1
0
 void Do(const FOCUS_EVENT_RECORD& fer, Screen& screen, const EditScheme& scheme)
 {
     if (fer.bSetFocus)
     {
         bool modeChanged = false;
         if (fileInfo.changed(modeChanged))
         {
             ModePromptYesNo mpyn(this, ms.buffer, ms.pos, L"File changed, Revert?");
             DoMode(mpyn, screen, scheme);
             WORD key = mpyn.Ret();
             me.readOnly = fileInfo.isreadonly();
             me.invalid = true;
             if (key == 'Y')
                 me.Revert(fileInfo, l);
         }
         if (modeChanged)
             me.invalid = true;
     }
 }
Exemplo n.º 2
0
void SummaryCommand :: Summarise( IOManager & io ) {
	if ( mType == Min || mType == Max ) {
		DoMinMax( io );
	}
	else if ( mType == Sum ) {
		DoSum( io );
	}
	else if ( mType == Average ) {
		DoAvg( io );
	}
	else if ( mType == Frequency ) {
		DoFreq( io );
	}
	else if ( mType == Median ) {
		DoMedian( io );
	}
	else if ( mType == Mode ) {
		DoMode( io );
	}
	else {
		CSVTHROW( "Unsupported option" );
	}
}
Exemplo n.º 3
0
static void
g_gchannote(struct Luser *lptr, int ac, char **av)

{
  int cnt,
  alen;
  char *mask;
  char *message;
  char argbuf[MAXLINE + 1],
  temp[MAXLINE + 1];
  struct Channel *cptr;

  if (!GlobalNotices)
    {
      notice(n_Global, lptr->nick,
             "Global notices are disabled");
      return;
    }

  if (ac < 2)
    {
      notice(n_Global, lptr->nick,
             "Syntax: \002GCHANNOTE [options] <message>\002");
      return;
    }

  mask = NULL;
  message = NULL;

  for (cnt = 1; cnt < ac; ++cnt)
    {
      alen = strlen(av[cnt]);

      if (!ircncmp(av[cnt], "-mask", alen))
        {
          if (++cnt >= ac)
            {
              notice(n_Global, lptr->nick,
                     "No mask specified");
              return;
            }

          mask = av[cnt];
        }
      else
        {
          message = GetString(ac - cnt, av + cnt);
          break;
        }
    }

  if (!message)
    {
      notice(n_Global, lptr->nick,
             "No message specified");
      return;
    }

  *argbuf = '\0';

  if (mask)
    ircsprintf(argbuf, "-mask %s ", mask);

  ircsprintf(temp, "%s%s", argbuf, message);

  strncpy(argbuf, temp, sizeof(argbuf) - 1);
  argbuf[sizeof(argbuf) - 1] = '\0';

  RecordCommand("%s: %s!%s@%s GCHANNOTE %s",
                n_Global,
                lptr->nick,
                lptr->username,
                lptr->hostname,
                argbuf);

  cnt = 0;
  for (cptr = ChannelList; cptr; cptr = cptr->next)
    {
      if (mask && !match(mask, cptr->name))
        continue;

      *temp = '-';
      *(temp + 1) = '\0';
      if (cptr->modes & MODE_N)
        strcat(temp, "n");
      if (cptr->modes & MODE_M)
        strcat(temp, "m");

      if (*(temp + 1))
        DoMode(cptr, temp, 0);

      notice(n_Global, cptr->name, message);
      ++cnt;

      if (*(temp + 1))
        {
          *temp = '+';
          DoMode(cptr, temp, 0);
        }
    }

  notice(n_Global, lptr->nick,
         "Channel message sent (%d match%s)",
         cnt,
         (cnt == 1) ? "" : "es");

  MyFree(message);
} /* g_gchannote() */
Exemplo n.º 4
0
    bool Do(const KEY_EVENT_RECORD& ker, Screen& screen, const EditScheme& scheme)
    {
        bool cont = true;
        if (ker.bKeyDown)
        {
            const bool readOnly = fileInfo.isreadonly();

            switch (ker.wVirtualKeyCode)
            {
            case VK_F1:
                {
                    wchar_t* pWData = nullptr;
                    {
                        HMODULE hModule = NULL;
                        Memory mem = GetResource(hModule, IDR_TEXT);
                        const char* pData = static_cast<const char*>(mem.data);

                        pWData = new wchar_t[mem.size + 1];
                        for (DWORD i = 0; i < mem.size; ++i)
                        {
                            switch (pData[i])
                            {
                            case '\r':
                                pWData[i] = L' ';
                                break;
                            case '\n':
                                pWData[i] = L'\0';
                                break;
                            default:
                                pWData[i] = pData[i];
                                break;
                            }
                        }
                        pWData[mem.size] = L'\0';
                    }

                    ModeInfoBox mmb(this, _COORD(4, 4), pWData);
                    DoMode(mmb, screen, scheme);

                    delete[] pWData;
                    me.invalid = true;
                }
                break;

            case VK_F3:
                switch (ker.dwControlKeyState & 0x1F)
                {
                case RIGHT_CTRL_PRESSED:
                case LEFT_CTRL_PRESSED:
                    if (me.Selection().empty())
                    {
                        size_t p = MoveWordBegin(me.Chars(), me.Selection().end);

                        if (iswblank(me.Chars()[p])) // TODO Use locale?
                            break;  // Don't search

                        me.MoveCursor(p, false);
                        me.MoveCursor(MoveWordEnd(me.Chars(), me.Selection().end), true);
                    }

                    if (!me.Selection().empty())
                    {
                        mf.setFind(me.GetSelectedText());
                        mf.visible = true;
                        me.invalid = true;
                    }
                    Find(true, true);
                    break;

                case 0:
                    Find(true, true);
                    break;

                case SHIFT_PRESSED:
                    Find(false, true);
                    break;
                }
                break;

            case 'F':
                switch (ker.dwControlKeyState & 0x1F)
                {
                case RIGHT_CTRL_PRESSED:
                case LEFT_CTRL_PRESSED:
                    // TODO Set focus to find window to edit search text
                    mf.visible = true;
                    DoMode(mf, screen, scheme);
                    me.invalid = true;
                    break;
                }
                break;

            case 'G':
                switch (ker.dwControlKeyState & 0x1F)
                {
                case RIGHT_CTRL_PRESSED:
                case LEFT_CTRL_PRESSED:
                    {
                        ModePromptInteger mpi(this, ms.buffer, ms.pos, L"Goto line?");
                        DoMode(mpi, screen, scheme);
                        int line = mpi.Ret();
                        if (line > 0)
                        {
                            me.MoveCursor(GetLineOffset(me.Chars(), line), false);
                        }
                        me.invalid = true;
                    }
                    break;
                }
                break;

            case 'I':
                switch (ker.dwControlKeyState & 0x1F)
                {
                case RIGHT_CTRL_PRESSED:
                case LEFT_CTRL_PRESSED:
                    mf.ToggleCaseSensitive();
                    Find(true, false);
                    break;
                }
                break;

            case 'R':
                switch (ker.dwControlKeyState & 0x1F)
                {
                case RIGHT_CTRL_PRESSED:
                case LEFT_CTRL_PRESSED:
                    me.Revert(fileInfo, l);
                    break;
                }
                break;

            case 'S':
                switch (ker.dwControlKeyState & 0x1F)
                {
                case RIGHT_CTRL_PRESSED:
                case LEFT_CTRL_PRESSED:
                    if (!readOnly)
                    {
                        try
                        {
                            me.Save(fileInfo, l);
                            ms.message = L"Saved";
                        }
                        catch (const std::exception& e)
                        {
                            ms.error = convert(e.what(), l);
                            me.invalid = true;
                        }
                    }
                    else
                        Beep();
                    break;
                }
                break;

            case 'X':
                switch (ker.dwControlKeyState & 0x1F)
                {
                case RIGHT_ALT_PRESSED:
                case LEFT_ALT_PRESSED:
                    {
                        if (me.isEdited())
                        {
                            ModePromptYesNo mpyn(this, ms.buffer, ms.pos, L"Save?");
                            DoMode(mpyn, screen, scheme);
                            WORD key = mpyn.Ret();
                            me.invalid = true;
                            if (key == L'Y')
                                me.Save(fileInfo, l);
                            if (key != 0)
                                cont = false;
                        }
                        else
                            cont = false;

                    }
                    break;
                }
                break;
            }
        }

        if (cont)
            cont = me.Do(ker, screen, scheme);

        return cont;
    }
Exemplo n.º 5
0
int wmain(int argc, const wchar_t* argv[])
{
    try
    {
        if (argc < 2)
        {
            DisplayAboutMessage(NULL);
            DisplayResource(NULL, IDR_TEXT);
            return 1;
        }

        _locale_t l = _create_locale(LC_ALL, "C");

        FileInfo fileInfo(argv[1]);
        std::vector<wchar_t> chars;
        if (fileInfo.exists)
            chars = fileInfo.load(l);

        HWND hWnd = GetConsoleWindow();
        HICON hIcon = (HICON) SendMessage(hWnd, WM_GETICON, ICON_SMALL, 0);
        SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM) LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON)));

        const Screen screenOrig;
        AutoRestoreBufferInfo arbi(screenOrig.hOut);
        AutoRestoreMode armIn(screenOrig.hIn, ENABLE_EXTENDED_FLAGS | ENABLE_MOUSE_INPUT | ENABLE_WINDOW_INPUT, 0xFFFF);
        AutoRestoreMode armOut(screenOrig.hOut, 0, ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT);

        Screen screen(screenOrig);
        screen.hOut = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, CONSOLE_TEXTMODE_BUFFER, nullptr);

        HKEY hKey = NULL;
        RegOpenKey(HKEY_CURRENT_USER, L"SOFTWARE\\RadSoft\\ConEdit", &hKey);

        CONSOLE_SCREEN_BUFFER_INFOEX csbi = arbi.get();
        csbi.dwSize = GetSize(screen.csbi.srWindow);
        EditScheme scheme(hKey, csbi);

        csbi.wAttributes = 0;
        scheme.get(EditScheme::DEFAULT).apply(csbi.wAttributes);
        SetConsoleScreenBufferInfoEx(screen.hOut, &csbi);

        AutoRestoreActiveScreenBuffer arasb(screenOrig.hOut, screen.hOut);

        ModeConEdit mce(hKey, fileInfo, GetSize(screen.csbi.srWindow), chars, l);

        RegCloseKey(hKey);
        hKey = NULL;

        DoMode(mce, screen, scheme);

        SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM) hIcon);

        _free_locale(l);

        return 0;
    }
    catch (const std::exception& e)
    {
        printf(e.what());
        printf("\n");
        return 1;
    }
}