MRESULT EXPENTRY PrintSetupProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
   PPRINTSETUP pPrintSetup = WinQueryWindowPtr(hwnd, QWL_USER);

   switch(msg)
   {
      case WM_INITDLG:
         pPrintSetup = (PPRINTSETUP) mp2;
         InitPrintSetup(pPrintSetup, anchor);
         InsertPrintSetupPages(WinWindowFromID(hwnd, IDD_PRINTSETUP+1), pPrintSetup);

         RestoreWinPos(hwnd, &pPrintSetup->DlgPos, TRUE, TRUE);
         WinSetWindowPtr(hwnd, QWL_USER, pPrintSetup);
         break;

      case WM_ADJUSTFRAMEPOS:
         SizeToClient(anchor, (PSWP) mp1, hwnd, IDD_PRINTSETUP+1);
         break;

      case WM_WINDOWPOSCHANGED:
         if (WinQueryWindowPtr(hwnd, QWL_USER))
            SaveWinPos(hwnd, (PSWP) mp1, &pPrintSetup->DlgPos, &pPrintSetup->bDirty);
         break;

      case WM_ACTIVATE:
         if (mp1)
            WinAssociateHelpInstance(hwndhelp, hwnd);
         else
            WinAssociateHelpInstance(hwndhelp, NULLHANDLE);
         break;

      default:
         break;
   }
   return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
示例#2
0
int main(int argc, char **argv){

    if(argc == 2 && strcmp(argv[1], "random") == 0){
        time_t t;
        srand((unsigned) time(&t));
        printf("%d%d %d%d", rand(), rand(), rand(), rand());
        return 0;
    }

    char line[1024];
    char *msg;
    int keep_running = 1;
    memset(line, 0, 1024);
    strcpy(NvimcomPort, "0");

    if(argc == 3 && getenv("NVIMR_PORT") && getenv("NVIMR_SECRET")){
        snprintf(line, 1023, "%scall SyncTeX_backward('%s', %s)", getenv("NVIMR_SECRET"), argv[1], argv[2]);
        SendToServer(getenv("NVIMR_PORT"), line);

        if(getenv("DEBUG_NVIMR")){
            FILE *df1 = fopen("/tmp/nclientserver_1_debug", "a");
            if(df1 != NULL){
                fprintf(df1, "%s %s %s %s\n", getenv("NVIMR_PORT"), getenv("NVIMR_SECRET"), argv[1], argv[2]);
                fclose(df1);
            }
        }
        return 0;
    }

    if(getenv("DEBUG_NVIMR")){
        df = fopen("/tmp/nclientserver_debug", "w");
        if(df){
            fprintf(df, "NVIMR_SECRET=%s\n", getenv("NVIMR_SECRET"));
            fflush(df);
        } else {
            fprintf(stderr, "Error opening \"nclientserver_debug\" for writing\n");
            fflush(stderr);
        }
    }

#ifdef WIN32
    // Set the value of NvimHwnd
    if(getenv("WINDOWID")){
#ifdef _WIN64
        NvimHwnd = (HWND)atoll(getenv("WINDOWID"));
#else
        NvimHwnd = (HWND)atol(getenv("WINDOWID"));
#endif
    } else {
        //fprintf(stderr, "$WINDOWID not defined\n");
        //fflush(stderr);
        // FIXME: Delete this code when $WINDOWID is implemented in NeovimQt
        NvimHwnd = FindWindow(NULL, "Neovim");
        if(!NvimHwnd){
            fprintf(stderr, "\"Neovim\" window not found\n");
            fflush(stderr);
        }
    }
#endif

    // Start the server
    if(!getenv("NVIMR_SECRET")){
        fprintf(stderr, "NVIMR_SECRET not found\n");
        fflush(stderr);
        exit(1);
    }
    strncpy(VimSecret, getenv("NVIMR_SECRET"), 127);
    VimSecretLen = strlen(VimSecret);

    // Finish immediately with SIGTERM
    signal(SIGTERM, HandleSigTerm);

#ifdef WIN32
    Sleep(1000);
#else
    sleep(1);
#endif

#ifdef WIN32
    Tid = _beginthread(NeovimServer, 0, NULL);
#else
    strcpy(myport, "0");
    pthread_create(&Tid, NULL, NeovimServer, NULL);
#endif

    while(fgets(line, 1023, stdin) && keep_running){
        if(df){
            msg = line;
            msg++;
            fprintf(df, "stdin: [%d] %s", (unsigned int)*line, msg);
            fflush(df);
        }

        for(unsigned int i = 0; i < strlen(line); i++)
            if(line[i] == '\n' || line[i] == '\r')
                line[i] = 0;
        msg = line;
        switch(*msg){
            case 1: // SetPort
                msg++;
#ifdef WIN32
                char *p = msg;
                while(*p != ' ')
                    p++;
                *p = 0;
                p++;
                strncpy(NvimcomPort, msg, 15);
#ifdef _WIN64
                RConsole = (HWND)atoll(p);
#else
                RConsole = (HWND)atol(p);
#endif
                if(msg[0] == '0')
                    RConsole = NULL;
#else
                strncpy(NvimcomPort, msg, 15);
#endif
                break;
            case 2: // Send message
                msg++;
                SendToServer(NvimcomPort, msg);
                break;
#ifdef WIN32
            case 3: // SendToRConsole
                msg++;
                SendToRConsole(msg);
                break;
            case 4: // SaveWinPos
                msg++;
                SaveWinPos(msg);
                break;
            case 5: // ArrangeWindows
                msg++;
                ArrangeWindows(msg);
                break;
            case 6:
                RClearConsole();
                break;
            case 7: // RaiseNvimWindow
                if(NvimHwnd)
                    SetForegroundWindow(NvimHwnd);
                break;
            case 11: // Check if R is running
                if(PostMessage(RConsole, WM_NULL, 0, 0)){
                    printf("call RWarningMsg('R was already started')\n");
                    fflush(stdout);
                } else {
                    printf("call CleanNvimAndStartR()\n");
                    fflush(stdout);
                }
                break;
#endif
            case 8: // Quit now
                keep_running = 0;
                break;
            default:
                fprintf(stderr, "Unknown command received: [%d] %s\n", line[0], msg);
                fflush(stderr);
                break;
        }
        memset(line, 0, 1024);
    }
#ifdef WIN32
    closesocket(Sfd);
    WSACleanup();
#else
    close(Sfd);
    SendToServer(myport, ">>> STOP Now <<< !!!");
    pthread_join(Tid, NULL);
#endif
    if(df)
        fclose(df);
    return 0;
}