1
0
mirror of https://gitlab.xiph.org/xiph/icecast-server.git synced 2025-02-02 15:07:36 -05:00

removed tab for editing configuration file, opted for a much simpler approach (spwan a notepad session)

fixed the "Make this stat the window title" logic
Added menu to the dialog

svn path=/trunk/icecast/; revision=3884
This commit is contained in:
oddsock 2002-08-28 20:37:44 +00:00
parent 08061569bd
commit e38af3f13c
12 changed files with 2609 additions and 2677 deletions

View File

@ -12,11 +12,11 @@ Class1=CIcecast2winApp
Class2=CIcecast2winDlg
Class3=CAboutDlg
ResourceCount=9
Resource1=IDR_MENU3
ResourceCount=10
Resource1=IDD_ABOUTBOX
Resource2=IDR_MAINFRAME
Resource3=IDD_ABOUTBOX
Resource4=IDD_STATSDIALOG
Resource3=IDR_MENU3
Resource4=IDR_TRAY
Class4=CStatus
Resource5=IDR_MENU2
Class5=CConfigTab
@ -24,7 +24,8 @@ Class6=CStatsTab
Resource6=IDD_SSTATUS
Resource7=IDD_CONFIGDIALOG
Resource8=IDD_ICECAST2WIN_DIALOG
Resource9=IDR_TRAY
Resource9=IDD_STATSDIALOG
Resource10=IDR_MENU4
[CLS:CIcecast2winApp]
Type=0
@ -37,7 +38,7 @@ Type=0
HeaderFile=Icecast2winDlg.h
ImplementationFile=Icecast2winDlg.cpp
Filter=C
LastObject=IDC_HIDESYSTRAY
LastObject=ID_ABOUT_HELP
BaseClass=CResizableDialog
VirtualFilter=dWC
@ -140,3 +141,12 @@ Class=CIcecast2winDlg
Command1=ID_BLANK_RESTORE
CommandCount=1
[MNU:IDR_MENU4]
Type=1
Class=CIcecast2winDlg
Command1=ID_FILE_EXIT
Command2=ID_FILE_EDITCONFIGURATION
Command3=ID_ABOUT_HELP
Command4=ID_ABOUT_CREDITS
CommandCount=4

View File

@ -23,6 +23,7 @@ class CIcecast2winApp : public CWinApp
{
public:
char m_configFile[1024];
HICON m_pIconList[2];
CIcecast2winApp();
// Overrides
@ -47,4 +48,5 @@ public:
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
extern CIcecast2winApp theApp;
#endif // !defined(AFX_ICECAST2WIN_H__76A528C9_A424_4417_BFDF_0E556A9EE4F1__INCLUDED_)

View File

@ -79,6 +79,7 @@ STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION |
WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
CAPTION "icecast2"
MENU IDR_MENU4
FONT 8, "MS Sans Serif"
BEGIN
CONTROL "Tab1",IDC_MAINTAB,"SysTabControl32",0x0,0,48,318,201
@ -102,7 +103,7 @@ BEGIN
LTEXT "",IDC_FILLER2,0,199,319,11
CONTROL "List1",IDC_GLOBALSTAT_LIST,"SysListView32",LVS_REPORT |
WS_BORDER | WS_TABSTOP,9,34,300,147
CTEXT "Global Statistics",IDC_STATIC_GS,9,9,300,21
CTEXT "Global Statistics",IDC_STATIC_GS,9,6,300,10
LTEXT "Server Has Been Running For ",IDC_STATIC_RUN,46,184,100,
8
LTEXT "",IDC_RUNNINGFOR,149,184,156,8
@ -125,7 +126,7 @@ BEGIN
CONTROL "List2",IDC_SOURCELIST,"SysListView32",LVS_REPORT |
WS_BORDER | WS_TABSTOP,9,34,111,159
LTEXT "",IDC_FILLER1,0,199,320,11
CTEXT "Source Level Statistics",IDC_STATIC_SLS,9,7,300,15
CTEXT "Source Level Statistics",IDC_STATIC_SLS,9,7,300,10
LTEXT "Click source to view statistics",IDC_STATIC,18,25,111,8
END
@ -243,6 +244,23 @@ BEGIN
END
END
IDR_MENU4 MENU DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
MENUITEM "E&xit", ID_FILE_EXIT
END
POPUP "C&onfiguration"
BEGIN
MENUITEM "&Edit Configuration", ID_FILE_EDITCONFIGURATION
END
POPUP "&About"
BEGIN
MENUITEM "H&elp", ID_ABOUT_HELP
MENUITEM "Cr&edits", ID_ABOUT_CREDITS
END
END
/////////////////////////////////////////////////////////////////////////////
//

View File

@ -63,7 +63,6 @@ typedef struct tagElementAdditional {
typedef struct tagMainElement {
// char source[1024];
CString source;
long numStats;
Element stats[MAXSTATSPERSOURCE];
@ -125,6 +124,8 @@ void AddToTitleAdditionalGlobalStats(CString source, CString name) {
if ((gAdditionalGlobalStats.stats[i].source == source) && (gAdditionalGlobalStats.stats[i].name == name)) {
ClearTitleAdditionalGlobalStats(source, name);
gAdditionalGlobalStats.stats[i].titleFlag = 1;
strcpy(gTitleSource, source);
strcpy(gTitleName, name);
foundit = 1;
break;
}
@ -135,6 +136,8 @@ void AddToTitleAdditionalGlobalStats(CString source, CString name) {
if ((gStats[i].source == source) && (gStats[i].stats[j].name == name)) {
ClearTitleAdditionalGlobalStats(source, name);
gStats[i].stats[j].titleFlag = 1;
strcpy(gTitleSource, source);
strcpy(gTitleName, name);
foundit = 1;
break;
}
@ -255,6 +258,8 @@ BEGIN_MESSAGE_MAP(CIcecast2winDlg, CResizableDialog)
ON_COMMAND(ID_BLANK_RESTORE, OnBlankRestore)
ON_MESSAGE(WM_TRAY_NOTIFY, OnTrayNotify)
ON_WM_DESTROY()
ON_COMMAND(ID_FILE_EDITCONFIGURATION, OnFileEditconfiguration)
ON_COMMAND(ID_ABOUT_HELP, OnAboutHelp)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
@ -287,7 +292,6 @@ BOOL CIcecast2winDlg::OnInitDialog()
g_mainDialog = this;
// statsTab.SetDialogBkColor(BGCOLOR,TEXTCOLOR);
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
@ -295,7 +299,6 @@ BOOL CIcecast2winDlg::OnInitDialog()
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
config_read();
statsTab.m_colSource0Width = m_colSource0Width;
@ -305,18 +308,13 @@ BOOL CIcecast2winDlg::OnInitDialog()
statusTab.m_colStats1Width = m_colGStats1Width;
statusTab.m_colStats2Width = m_colGStats2Width;
configTab.Create(IDD_CONFIGDIALOG, this);
statsTab.Create(IDD_STATSDIALOG, this);
statusTab.Create(IDD_SSTATUS, this);
int nPageID = 0;
m_MainTab.AddSSLPage (_T("Server Status"), nPageID, (CTabPageSSL *)&statusTab);
nPageID++;
m_MainTab.AddSSLPage (_T("Configuration"), nPageID, (CTabPageSSL *)&configTab);
nPageID++;
m_MainTab.AddSSLPage (_T("Stats"), nPageID, (CTabPageSSL *)&statsTab);
m_MainTab.AddSSLPage (_T("Source Level Stats"), nPageID, (CTabPageSSL *)&statsTab);
nPageID++;
@ -324,7 +322,6 @@ BOOL CIcecast2winDlg::OnInitDialog()
runningBitmap.LoadBitmap(IDB_BITMAP6);
stoppedBitmap.LoadBitmap(IDB_BITMAP5);
//m_SS.SetFont(&labelFont, TRUE);
UpdateData(FALSE);
@ -335,7 +332,7 @@ BOOL CIcecast2winDlg::OnInitDialog()
EnableSaveRestore("icecast2win", "positions");
m_pTray = NULL;
if (m_Autostart) {
OnStart();
@ -397,76 +394,6 @@ void CIcecast2winDlg::OnSelchangeMaintab(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
/*
if (m_MainTab.GetCurSel() == 0) {
EnableControl(IDC_NUMBER_CLIENTS);
EnableControl(IDC_SERVERSTATUS);
EnableControl(IDC_SOURCES_CONNECTED);
m_ConfigEditCtrl.ShowWindow(SW_HIDE);
m_StatsEditCtrl.ShowWindow(SW_HIDE);
}
if (m_MainTab.GetCurSel() == 99) {
DisableControl(IDC_NUMBER_CLIENTS);
DisableControl(IDC_SERVERSTATUS);
DisableControl(IDC_SOURCES_CONNECTED);
m_ConfigEditCtrl.ShowWindow(SW_HIDE);
m_StatsEditCtrl.ShowWindow(SW_HIDE);
}
if (m_MainTab.GetCurSel() == 99) {
DisableControl(IDC_NUMBER_CLIENTS);
DisableControl(IDC_SERVERSTATUS);
DisableControl(IDC_SOURCES_CONNECTED);
m_ConfigEditCtrl.ShowWindow(SW_HIDE);
m_StatsEditCtrl.ShowWindow(SW_HIDE);
}
if (m_MainTab.GetCurSel() == 1) {
DisableControl(IDC_NUMBER_CLIENTS);
DisableControl(IDC_SERVERSTATUS);
DisableControl(IDC_SOURCES_CONNECTED);
m_ConfigEditCtrl.ShowWindow(SW_SHOW);
m_StatsEditCtrl.ShowWindow(SW_HIDE);
LoadConfig();
ParseConfig();
}
if (m_MainTab.GetCurSel() == 2) {
DisableControl(IDC_NUMBER_CLIENTS);
DisableControl(IDC_SERVERSTATUS);
DisableControl(IDC_SOURCES_CONNECTED);
m_ConfigEditCtrl.ShowWindow(SW_HIDE);
m_StatsEditCtrl.ShowWindow(SW_SHOW);
if (global.running == ICE_RUNNING) {
CString statData;
for (int i=0;i<numMainStats;i++) {
if (!strcmp(gStats[i].source, "")) {
statData += "\r\nBase Server Data\r\n-------------------------\r\n";
for (int j=0;j<gStats[i].numStats;j++) {
statData += gStats[i].stats[j].name;
statData += " = ";
statData += gStats[i].stats[j].value;
statData += "\r\n";
}
}
else {
statData += "\r\nData For Source ";
statData += gStats[i].source;
statData += "\r\n-------------------------\r\n";
for (int j=0;j<gStats[i].numStats;j++) {
statData += gStats[i].stats[j].name;
statData += " = ";
statData += gStats[i].stats[j].value;
statData += "\r\n";
}
}
}
m_StatsEdit = statData;
UpdateData(FALSE);
}
else {
MessageBox("Server not running, cannot get stats", "Message", MB_OK);
}
}
*/
*pResult = 0;
}
@ -479,59 +406,11 @@ void CIcecast2winDlg::LoadConfig()
configTab.m_Config = "";
filep = fopen(myApp->m_configFile, "r");
if (filep) {
while (!feof(filep)) {
memset(buffer, '\000', sizeof(buffer));
fgets(buffer, sizeof(buffer), filep);
if (strlen(buffer) > 0) {
char *p1 = strstr(buffer, "\r\n");
if (p1) {
*p1 = '\000';
}
else {
buffer[strlen(buffer)-1] = '\000';
}
configTab.m_Config = configTab.m_Config + buffer;
configTab.m_Config += "\r\n";
}
}
fclose(filep);
}
else {
configTab.m_Config = " \
<icecast>\r\n \
<location>Here and There</location>\r\n\
<admin>nobody@me.org</admin>\r\n\
<limits>\r\n\
<clients>100</clients>\r\n\
<sources>2</sources>\r\n\
<threadpool>5</threadpool>\r\n\
<client-timeout>30</client-timeout>\r\n\
<header-timeout>15</header-timeout>\r\n\
<source-timeout>10</source-timeout>\r\n\
</limits>\r\n\
<source-password>changeme</source-password>\r\n\
<directory>\r\n\
<touch-freq>5</touch-freq>\r\n\
<server>\r\n\
<host>yp.icecast.org</host>\r\n\
<touch-freq>15</touch-freq>\r\n\
</server>\r\n\
</directory>\r\n\
<bind-address>0.0.0.0</bind-address>\r\n\
<port>8000</port>\r\n\
<paths>\r\n\
<basedir>./</basedir>\r\n\
<logdir>./</logdir>\r\n\
<webroot>./webroot</webroot>\r\n\
</paths>\r\n\
<logging>\r\n\
<accesslog>access.log</accesslog>\r\n\
<errorlog>error.log</errorlog>\r\n\
</logging>\r\n\
</icecast>\r\n\
";
MessageBox("Unable to load config file (" + CString(myApp->m_configFile) + ") unable to start", NULL, MB_OK);
}
gConfigurationSave = configTab.m_Config;
configTab.UpdateData(FALSE);
}
@ -539,32 +418,10 @@ void CIcecast2winDlg::LoadConfig()
void CIcecast2winDlg::OnFileExit()
{
// TODO: Add your command handler code here
DestroyWindow();
}
void CIcecast2winDlg::ParseConfig()
{
char access[2046] = "";
char error[2046] = "";
char logdir[2046] = "";
memset(access, '\000', sizeof(access));
memset(error, '\000', sizeof(error));
memset(logdir, '\000', sizeof(logdir));
getTag(m_ConfigEdit.GetBuffer(0), "logdir", logdir);
getTag(m_ConfigEdit.GetBuffer(0), "accesslog", access);
getTag(m_ConfigEdit.GetBuffer(0), "errorlog", error);
m_AccessLog = logdir;
m_AccessLog += access;
m_ErrorLog = logdir;
m_ErrorLog += error;
}
void CIcecast2winDlg::getTag(char *pbuf, char *ptag, char *dest)
{
@ -611,14 +468,10 @@ void CollectStats(stats_event_t *event)
tempElement.name = "";
tempElement.value = "";
// memset(&tempElement, '\000', sizeof(tempElement));
if (event->name != NULL) {
//strcpy(tempElement.name, event->name);
tempElement.name = event->name;
}
if (event->value != NULL) {
//strcpy(tempElement.value, event->value);
tempElement.value = event->value;
}
if (event->source != NULL) {
@ -639,7 +492,6 @@ void CollectStats(stats_event_t *event)
}
}
if (!foundit2) {
// memcpy(&gStats[i].stats[gStats[i].numStats], &tempElement, sizeof(tempElement));
gStats[i].stats[j].name = tempElement.name;
gStats[i].stats[j].value = tempElement.value;
gStats[i].numStats++;
@ -649,7 +501,6 @@ void CollectStats(stats_event_t *event)
}
if (!foundit) {
// strcpy(gStats[numMainStats].source, tempSource);
if (strlen(tempSource) == 0) {
strcpy(tempSource, "Global Stat");
}
@ -658,7 +509,6 @@ void CollectStats(stats_event_t *event)
gStats[numMainStats].stats[0].value = tempElement.value;
gStats[numMainStats].populated = 1;
// memcpy(&gStats[numMainStats].stats[0], &tempElement, sizeof(tempElement));
gStats[numMainStats].numStats++;
numMainStats++;
}
@ -690,7 +540,6 @@ void StartStats(void *dummy)
}
while (global.running == ICE_RUNNING) {
if (global.running == ICE_RUNNING) {
// memset(&gStats, '\000', sizeof(gStats));
for (int j=0;j<MAXSOURCES;j++) {
gStats[j].numStats = 0;
}
@ -731,7 +580,6 @@ void CIcecast2winDlg::OnTimer(UINT nIDEvent)
m_StartButton.SetWindowText("Stop Server");
m_StartButton.SetState(0);
}
//UpdateData(FALSE);
time_t currentTime;
time(&currentTime);
time_t runningTime = currentTime - serverStart;
@ -751,12 +599,9 @@ void CIcecast2winDlg::OnTimer(UINT nIDEvent)
m_ServerStatusBitmap.SetBitmap(HBITMAP(stoppedBitmap));
m_StartButton.SetWindowText("Start Server");
m_StartButton.SetState(0);
configTab.m_ConfigCtrl.SetReadOnly(FALSE);
UpdateData(FALSE);
statusTab.m_RunningFor = "Not running";
statusTab.UpdateData(FALSE);
//UpdateData(FALSE);
}
}
@ -765,8 +610,6 @@ void CIcecast2winDlg::OnTimer(UINT nIDEvent)
char g_configFile[1024] = "";
char g_progName[255] = "icecast2";
//int __argc = 2;
//char* __argv[2];
void StartServer(void *configfile)
{
@ -779,8 +622,10 @@ void StartServer(void *configfile)
argv[1] = "-c";
argv[2] = g_configFile;
time(&(g_mainDialog->serverStart));
main(argc, (char **)argv);
// g_mainDialog->StopServer();
int ret = main(argc, (char **)argv);
if (ret) {
MessageBox(NULL, "Unable to start server", NULL, MB_OK);
}
global.running = ICE_HALTING;
_endthread();
@ -801,12 +646,8 @@ void CIcecast2winDlg::OnFileStartserver()
else {
m_ConfigEditCtrl.SetReadOnly(TRUE);
LoadConfig();
ParseConfig();
SetTimer(0, 500, NULL);
_beginthread(StartServer, 0, (void *)(LPCSTR)myApp->m_configFile);
// _beginthread(StartTailAccessLog, 0, (void *)0);
// _beginthread(StartTailErrorLog, 0, (void *)0);
// EDZ
_beginthread(StartStats, 0, (void *)CollectStats);
}
}
@ -822,7 +663,6 @@ bool infocus = false;
void CIcecast2winDlg::StopServer()
{
KillTimer(0);
configTab.m_ConfigCtrl.SetReadOnly(FALSE);
global.running = ICE_HALTING;
m_StartButton.SetWindowText("Start Server");
m_StartButton.SetState(0);
@ -844,11 +684,8 @@ void CIcecast2winDlg::OnStart()
StopServer();
}
else {
configTab.m_ConfigCtrl.SetReadOnly(TRUE);
ParseConfig();
SetTimer(0, 500, NULL);
_beginthread(StartServer, 0, (void *)(LPCSTR)myApp->m_configFile);
// EDZ
_beginthread(StartStats, 0, (void *)CollectStats);
}
@ -957,6 +794,7 @@ void CIcecast2winDlg::UpdateStatsLists()
if (!inthere2) {
LVITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem = statusTab.m_GlobalStatList.GetItemCount();
lvi.iSubItem = 0;
@ -968,15 +806,20 @@ void CIcecast2winDlg::UpdateStatsLists()
lvi.iSubItem = 2;
lvi.pszText = (LPTSTR)(LPCTSTR)gAdditionalGlobalStats.stats[l].value;
statusTab.m_GlobalStatList.SetItem(&lvi);
}
if ((!strcmp(gAdditionalGlobalStats.stats[l].source, gTitleSource)) &&
(!strcmp(gAdditionalGlobalStats.stats[l].name, gTitleName))) {
gAdditionalGlobalStats.stats[l].titleFlag = 1;
if ((!strcmp(gTitleSource, gAdditionalGlobalStats.stats[l].source)) &&
(!strcmp(gTitleName, gAdditionalGlobalStats.stats[l].name))) {
gAdditionalGlobalStats.stats[l].titleFlag = 1;
}
}
if (gAdditionalGlobalStats.stats[l].titleFlag) {
CString windowTitle = gAdditionalGlobalStats.stats[l].source + " - " + gAdditionalGlobalStats.stats[l].name + " - " + gAdditionalGlobalStats.stats[l].value;
SetWindowText(windowTitle);
if (m_pTray) {
m_pTray->SetTIP((LPSTR)(LPCSTR)windowTitle);
}
}
}
}
@ -1006,6 +849,11 @@ void CIcecast2winDlg::UpdateStatsLists()
lvi.iSubItem = 2;
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].stats[k].value;
statusTab.m_GlobalStatList.SetItem(&lvi);
if ((!strcmp(gTitleSource, gStats[i].source)) &&
(!strcmp(gTitleName, gStats[i].stats[k].name))) {
gStats[i].stats[k].titleFlag = 1;
}
}
else {
LVITEM lvi;
@ -1016,13 +864,13 @@ void CIcecast2winDlg::UpdateStatsLists()
lvi.pszText = (LPTSTR)(LPCTSTR)gStats[i].stats[k].value;
statusTab.m_GlobalStatList.SetItem(&lvi);
}
if ((!strcmp(gStats[i].source, gTitleSource)) &&
(!strcmp(gStats[i].stats[k].name, gTitleName))) {
gStats[i].stats[k].titleFlag = 1;
}
if (gStats[i].stats[k].titleFlag) {
CString windowTitle = gStats[i].source + " - " + gStats[i].stats[k].name + " - " + gStats[i].stats[k].value;
SetWindowText(windowTitle);
if (m_pTray) {
m_pTray->SetTIP((LPSTR)(LPCSTR)windowTitle);
}
}
}
}
@ -1079,7 +927,6 @@ void CIcecast2winDlg::config_write()
memset(buf, '\000', sizeof(buf));
sprintf(buf2, "AdditionalStatsName%d", i);
WritePrivateProfileString(gAppName, buf2, gAdditionalGlobalStats.stats[i].name, gConfigFile);
gAdditionalGlobalStats.stats[i].name = buf;
if (gAdditionalGlobalStats.stats[i].titleFlag) {
sprintf(buf2, "%s|%s", gAdditionalGlobalStats.stats[i].source, gAdditionalGlobalStats.stats[i].name);
@ -1132,7 +979,6 @@ void CIcecast2winDlg::config_read()
}
GetPrivateProfileString(gAppName, "TitleName", "", buf, sizeof(buf), gConfigFile);
/*
if (strlen(buf) > 0) {
char *p1 = strchr(buf, '|');
if (p1) {
@ -1151,7 +997,6 @@ void CIcecast2winDlg::config_read()
strcpy(gTitleName, tmpName);
}
}
*/
}
@ -1174,7 +1019,6 @@ void CIcecast2winDlg::OnSize(UINT nType, int cx, int cy)
GetClientRect (&rect);
m_MainTab.ResizeDialog(0, rect.Width()-border1, rect.Height()-border2);
m_MainTab.ResizeDialog(1, rect.Width()-border1, rect.Height()-border2);
m_MainTab.ResizeDialog(2, rect.Width()-border1, rect.Height()-border2);
}
}
@ -1226,7 +1070,9 @@ void CIcecast2winDlg::OnHidesystray()
void CIcecast2winDlg::OnHide()
{
// TODO: Add your control notification handler code here
m_pTray = new CTrayNot (this,WM_TRAY_NOTIFY, NULL,theApp.m_pIconList);
if (m_pTray == NULL) {
m_pTray = new CTrayNot (this,WM_TRAY_NOTIFY, NULL,theApp.m_pIconList);
}
m_pTray->SetState(0);
m_bHidden = TRUE;
@ -1252,3 +1098,52 @@ void CIcecast2winDlg::OnDestroy()
// TODO: Add your message handler code here
}
void CIcecast2winDlg::OnFileEditconfiguration()
{
// TODO: Add your command handler code here
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
int ok = 1;
if (global.running == ICE_RUNNING) {
MessageBox("I'm sorry, but you cannot edit the configuration file while the server is running", NULL, MB_OK);
}
else {
// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line).
"notepad icecast.xml", // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
ok = 0;
}
// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
}
void CIcecast2winDlg::OnAboutHelp()
{
// TODO: Add your command handler code here
ShellExecute(NULL, "open", "doc\\icecast2.chm", NULL, NULL, SW_SHOWNORMAL);
}

View File

@ -111,6 +111,8 @@ protected:
afx_msg void OnBlankRestore();
afx_msg LONG OnTrayNotify ( WPARAM wParam, LPARAM lParam );
afx_msg void OnDestroy();
afx_msg void OnFileEditconfiguration();
afx_msg void OnAboutHelp();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

View File

@ -13,7 +13,7 @@ AllowNoIcons=yes
LicenseFile=..\COPYING
InfoAfterFile=..\README
OutputDir=.
OutputBaseFilename=Icecast2_win32_09222002_setup
OutputBaseFilename=Icecast2_win32_08282002_setup
WizardImageFile=icecast2logo2.bmp
; uncomment the following line if you want your installation to run on NT 3.51 too.
; MinVersion=4,3.51
@ -23,6 +23,7 @@ Name: "desktopicon"; Description: "Create a &desktop icon"; GroupDescription: "A
[Files]
Source: "Release\Icecast2.exe"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "..\doc\icecast2.chm"; DestDir: "{app}\doc"; CopyMode: alwaysoverwrite
Source: "..\web\status.xsl"; DestDir: "{app}\web"; CopyMode: alwaysoverwrite
Source: "..\web\status2.xsl"; DestDir: "{app}\web"; CopyMode: alwaysoverwrite
Source: "..\..\pthreads\pthreadVSE.dll"; DestDir: "{app}"; CopyMode: alwaysoverwrite

View File

@ -27,6 +27,7 @@
#define IDC_CURSOR2 156
#define IDB_BITMAP7 159
#define IDR_TRAY 160
#define IDR_MENU4 161
#define IDC_MAINTAB 1000
#define IDC_ERROR_EDIT 1003
#define IDC_ACCESS_EDIT 1004
@ -59,13 +60,16 @@
#define ID__DELETEFROMGLOBALSTATS 32777
#define ID__MAKETHISSTATTHEWINDOWTITLE 32779
#define ID_BLANK_RESTORE 32780
#define ID_ABOUT_HELP 32781
#define ID_FILE_EDITCONFIGURATION 32782
#define ID_ABOUT_CREDITS 32784
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 161
#define _APS_NEXT_COMMAND_VALUE 32781
#define _APS_NEXT_RESOURCE_VALUE 162
#define _APS_NEXT_COMMAND_VALUE 32785
#define _APS_NEXT_CONTROL_VALUE 1037
#define _APS_NEXT_SYMED_VALUE 101
#endif