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); }
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; }