📄 gui.cpp
字号:
// sleep for 1 second .. check every 1/10th for shutdown for(i=0; i<10; i++) { if (!thread->active) break; sys->sleep(100); } }// thread->unlock(); return 0;}// --------------------------------------------------void tryConnect(){#if 0 ClientSocket sock; char tmp[32]; char *sendStr = "GET / HTTP/1.1\n\n"; try { sock.open("taiyo",80); sock.write(sendStr,strlen(sendStr)); sock.read(tmp,32); LOG("Connected: %s",tmp); }catch(IOException &e) { LOG(e.msg); }#endif}// ---------------------------------void APICALL MyPeercastApp ::printLog(LogBuffer::TYPE t, const char *str){ ADDLOG(str,logID,true,NULL,t); if (logFile.isOpen()) { logFile.writeLine(str); logFile.flush(); }}// --------------------------------------------------static void setControls(bool fromGUI){ if (!guiWnd) return; setEditInt(IDC_EDIT1,servMgr->serverHost.port); setEditStr(IDC_EDIT3,servMgr->password); setEditStr(IDC_EDIT9,chanMgr->broadcastMsg.cstr());
setEditInt(IDC_MAXRELAYS,servMgr->maxRelays);
setButtonState(IDC_CHECK11,chanMgr->broadcastMsg[0]!=0); setButtonState(IDC_LOGDEBUG,(servMgr->showLog&(1<<LogBuffer::T_DEBUG))!=0); setButtonState(IDC_LOGERRORS,(servMgr->showLog&(1<<LogBuffer::T_ERROR))!=0); setButtonState(IDC_LOGNETWORK,(servMgr->showLog&(1<<LogBuffer::T_NETWORK))!=0); setButtonState(IDC_LOGCHANNELS,(servMgr->showLog&(1<<LogBuffer::T_CHANNEL))!=0); setButtonState(IDC_CHECK9,servMgr->pauseLog);
if (!fromGUI)
setButtonState(IDC_CHECK1,servMgr->autoServe);
}// --------------------------------------------------
void APICALL MyPeercastApp::updateSettings()
{
setControls(true);
}
// --------------------------------------------------LRESULT CALLBACK GUIProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ switch (message) { case WM_INITDIALOG: guiWnd = hwnd; shownChannels = false; logID = IDC_LIST1; // log statusID = IDC_LIST2; // status hitID = IDC_LIST4; // hit chanID = IDC_LIST3; // channels enableControl(IDC_BUTTON8,false); enableControl(IDC_BUTTON11,false); enableControl(IDC_BUTTON10,false); peercastApp->updateSettings(); if (servMgr->autoServe) setButtonState(IDC_CHECK1,true); if (servMgr->autoConnect) setButtonState(IDC_CHECK2,true); guiThread.func = showConnections; if (!sys->startThread(&guiThread)) { MessageBox(hwnd,"Unable to start GUI","PeerCast",MB_OK|MB_ICONERROR); PostMessage(hwnd,WM_DESTROY,0,0); } break; case WM_COMMAND: switch( wParam ) { case IDC_CHECK1: // start server if (getButtonState(IDC_CHECK1)) { //SendDlgItemMessage(hwnd, IDC_CHECK1,WM_SETTEXT, 0, (LPARAM)"Deactivate"); SendDlgItemMessage(hwnd, IDC_EDIT3,WM_GETTEXT, 64, (LONG)servMgr->password); servMgr->serverHost.port = (unsigned short)getEditInt(IDC_EDIT1); servMgr->setMaxRelays(getEditInt(IDC_MAXRELAYS));
enableControl(IDC_EDIT1,false); enableControl(IDC_EDIT3,false);
enableControl(IDC_MAXRELAYS,false);
enableControl(IDC_BUTTON8,true); enableControl(IDC_BUTTON11,true); enableControl(IDC_BUTTON10,true); //writeSettings(); servMgr->autoServe = true;
setEditStr(IDC_CHECK1,"Enabled");
}else{ //SendDlgItemMessage(hwnd, IDC_CHECK1,WM_SETTEXT, 0, (LPARAM)"Activate"); servMgr->autoServe = false; enableControl(IDC_EDIT1,true); enableControl(IDC_EDIT3,true);
enableControl(IDC_MAXRELAYS,true);
enableControl(IDC_BUTTON8,false); enableControl(IDC_BUTTON11,false); enableControl(IDC_BUTTON10,false);
setEditStr(IDC_CHECK1,"Disabled");
}
setControls(true);
break; case IDC_CHECK11: // DJ message if (getButtonState(IDC_CHECK11)) { enableControl(IDC_EDIT9,false); SendDlgItemMessage(hwnd, IDC_EDIT9,WM_GETTEXT, 128, (LONG)chanMgr->broadcastMsg.cstr()); }else{ enableControl(IDC_EDIT9,true); chanMgr->broadcastMsg.clear(); } break; case IDC_LOGDEBUG: // log debug servMgr->showLog = getButtonState(wParam) ? servMgr->showLog|(1<<LogBuffer::T_DEBUG) : servMgr->showLog&~(1<<LogBuffer::T_DEBUG); break; case IDC_LOGERRORS: // log errors servMgr->showLog = getButtonState(wParam) ? servMgr->showLog|(1<<LogBuffer::T_ERROR) : servMgr->showLog&~(1<<LogBuffer::T_ERROR); break; case IDC_LOGNETWORK: // log network servMgr->showLog = getButtonState(wParam) ? servMgr->showLog|(1<<LogBuffer::T_NETWORK) : servMgr->showLog&~(1<<LogBuffer::T_NETWORK); break; case IDC_LOGCHANNELS: // log channels servMgr->showLog = getButtonState(wParam) ? servMgr->showLog|(1<<LogBuffer::T_CHANNEL) : servMgr->showLog&~(1<<LogBuffer::T_CHANNEL); break; case IDC_CHECK9: // pause log servMgr->pauseLog = getButtonState(wParam); break; case IDC_CHECK2: // start outgoing if (getButtonState(IDC_CHECK2)) { SendDlgItemMessage(hwnd, IDC_COMBO1,WM_GETTEXT, 128, (LONG)servMgr->connectHost); servMgr->autoConnect = true; //SendDlgItemMessage(hwnd, IDC_CHECK2,WM_SETTEXT, 0, (LPARAM)"Disconnect"); enableControl(IDC_COMBO1,false); }else{ servMgr->autoConnect = false; //SendDlgItemMessage(hwnd, IDC_CHECK2,WM_SETTEXT, 0, (LPARAM)"Connect"); enableControl(IDC_COMBO1,true); } break; case IDC_BUTTON11: // broadcast { Host sh = servMgr->serverHost; if (sh.isValid()) { char cmd[256]; sprintf(cmd,"http://localhost:%d/admin?page=broadcast",sh.port); ShellExecute(hwnd, NULL, cmd, NULL, NULL, SW_SHOWNORMAL); }else{ MessageBox(hwnd,"Server is not currently connected.\nPlease wait until you have a connection.","PeerCast",MB_OK); } } break; case IDC_BUTTON8: // play selected { Channel *c = (Channel *)getListBoxSelData(chanID); if (c) chanMgr->playChannel(c->info); } break; case IDC_BUTTON7: // advanced sys->callLocalURL("admin?page=settings",servMgr->serverHost.port); break; case IDC_BUTTON6: // servent disconnect { Servent *s = (Servent *)getListBoxSelData(statusID); if (s) s->thread.active = false; } break; case IDC_BUTTON5: // chan disconnect { Channel *c = (Channel *)getListBoxSelData(chanID); if (c) c->thread.active = false; } break; case IDC_BUTTON3: // chan bump { Channel *c = (Channel *)getListBoxSelData(chanID); if (c) c->bump = true; } break; case IDC_BUTTON4: // get channel { ChanHitList *chl = (ChanHitList *)getListBoxSelData(hitID); if (chl) { if (!chanMgr->findChannelByID(chl->info.id)) { Channel *c = chanMgr->createChannel(chl->info,NULL); if (c) c->startGet(); } }else{ MessageBox(hwnd,"Please select a channel","PeerCast",MB_OK); } } break; case IDC_BUTTON1: // clear log SendDlgItemMessage(guiWnd, logID, LB_RESETCONTENT, 0, 0); break; case IDC_BUTTON2: // find { char str[64]; SendDlgItemMessage(hwnd, IDC_EDIT2,WM_GETTEXT, 64, (LONG)str); SendDlgItemMessage(hwnd, hitID, LB_RESETCONTENT, 0, 0); ChanInfo info; info.init(); info.name.set(str); chanMgr->startSearch(info); } break; } break; case WM_CLOSE: DestroyWindow( hwnd ); break; case WM_DESTROY: guiThread.active = false;// guiThread.lock(); guiWnd = NULL;// guiThread.unlock(); EndDialog(hwnd, LOWORD(wParam)); break; //default: // do nothing //return DefDlgProc(hwnd, message, wParam, lParam); // this recurses for ever //return DefWindowProc(hwnd, message, wParam, lParam); // this stops window messages } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -