1 ///////////////////////////////////////////////////////////////////////////////
2 // LameXP - Audio Encoder Front-End
3 // Copyright (C) 2004-2010 LoRd_MuldeR <MuldeR2@GMX.de>
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 2 of the License, or
8 // (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License along
16 // with this program; if not, write to the Free Software Foundation, Inc.,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 // http://www.gnu.org/licenses/gpl-2.0.txt
20 ///////////////////////////////////////////////////////////////////////////////
24 #include "Dialog_SplashScreen.h"
25 #include "Dialog_MainWindow.h"
26 #include "Thread_Initialization.h"
29 #include <QApplication>
30 #include <QMessageBox>
33 ///////////////////////////////////////////////////////////////////////////////
35 ///////////////////////////////////////////////////////////////////////////////
37 int lamexp_main(int argc
, char* argv
[])
40 lamexp_init_console(argc
, argv
);
43 qDebug("LameXP - Audio Encoder Front-End");
44 qDebug("Version %d.%02d %s, Build %d [%s], MSVC compiler v%02d.%02d", lamexp_version_major(), lamexp_version_minor(), lamexp_version_release(), lamexp_version_build(), lamexp_version_date().toString(Qt::ISODate
).toLatin1().constData(), _MSC_VER
/ 100, _MSC_VER
% 100);
45 qDebug("Copyright (C) 2004-%04d LoRd_MuldeR <MuldeR2@GMX.de>\n", max(lamexp_version_date().year(),QDate::currentDate().year()));
48 qDebug("This program is free software: you can redistribute it and/or modify");
49 qDebug("it under the terms of the GNU General Public License <http://www.gnu.org/>.");
50 qDebug("This program comes with ABSOLUTELY NO WARRANTY.\n");
52 //Print warning, if this is a "debug" build
53 LAMEXP_CHECK_DEBUG_BUILD
;
56 lamexp_init_qt(argc
, argv
);
58 //Check for expiration
59 if(lamexp_version_demo())
61 QDate expireDate
= lamexp_version_date().addDays(14);
62 qWarning(QString("Note: This demo (pre-release) version of LameXP will expire at %1.\n").arg(expireDate
.toString(Qt::ISODate
)).toLatin1().constData());
63 if(QDate::currentDate() >= expireDate
)
65 qWarning("Expired !!!");
66 QMessageBox::warning(NULL
, "LameXP - Expired", QString("This demo (pre-release) version of LameXP has expired at %1.\nLameXP is free software and release versions won't expire.").arg(expireDate
.toString()), "Exit Program");
71 //Check for multiple instances
72 if(!lamexp_check_instances()) return 0;
75 InitializationThread
*poInitializationThread
= new InitializationThread();
76 SplashScreen::showSplash(poInitializationThread
);
77 LAMEXP_DELETE(poInitializationThread
);
80 MainWindow
*poMainWindow
= new MainWindow();
82 int iResult
= QApplication::instance()->exec();
83 LAMEXP_DELETE(poMainWindow
);
86 qDebug("Shutting down, please wait...\n");
92 ///////////////////////////////////////////////////////////////////////////////
94 ///////////////////////////////////////////////////////////////////////////////
96 static void lamexp_message_handler(QtMsgType type
, const char *msg
)
98 static HANDLE hConsole
= NULL
;
102 hConsole
= CreateFile(L
"CONOUT$", GENERIC_WRITE
, FILE_SHARE_WRITE
| FILE_SHARE_READ
, NULL
, OPEN_EXISTING
, NULL
, NULL
);
105 CONSOLE_SCREEN_BUFFER_INFO bufferInfo
;
106 GetConsoleScreenBufferInfo(hConsole
, &bufferInfo
);
114 SetConsoleTextAttribute(hConsole
, FOREGROUND_RED
| FOREGROUND_INTENSITY
);
115 fprintf(stderr
, "\nCRITICAL ERROR !!!\n%s\n\n", msg
);
116 MessageBoxA(NULL
, msg
, "LameXP - CRITICAL ERROR", MB_ICONERROR
| MB_TOPMOST
| MB_TASKMODAL
);
119 SetConsoleTextAttribute(hConsole
, FOREGROUND_GREEN
| FOREGROUND_RED
| FOREGROUND_INTENSITY
);
120 fprintf(stderr
, "%s\n", msg
);
124 SetConsoleTextAttribute(hConsole
, FOREGROUND_BLUE
| FOREGROUND_GREEN
| FOREGROUND_RED
| FOREGROUND_INTENSITY
);
125 fprintf(stderr
, "%s\n", msg
);
130 SetConsoleTextAttribute(hConsole
, FOREGROUND_BLUE
| FOREGROUND_GREEN
| FOREGROUND_RED
);
132 if(type
== QtCriticalMsg
|| type
== QtFatalMsg
)
134 FatalAppExit(0, L
"The application has encountered a critical error and will exit now!");
135 TerminateProcess(GetCurrentProcess(), -1);
140 ///////////////////////////////////////////////////////////////////////////////
141 // Applicaton entry point
142 ///////////////////////////////////////////////////////////////////////////////
144 int main(int argc
, char* argv
[])
149 qInstallMsgHandler(lamexp_message_handler
);
150 LAMEXP_MEMORY_CHECK(iResult
= lamexp_main(argc
, argv
));
151 lamexp_finalization();
158 fprintf(stderr
, "\nEXCEPTION ERROR: %s\n", error
);
159 FatalAppExit(0, L
"Unhandeled exception error, application will exit!");
160 TerminateProcess(GetCurrentProcess(), -1);
166 fprintf(stderr
, "\nEXCEPTION ERROR: Error code 0x%X\n", error
);
167 FatalAppExit(0, L
"Unhandeled exception error, application will exit!");
168 TerminateProcess(GetCurrentProcess(), -1);
174 fprintf(stderr
, "\nEXCEPTION ERROR !!!\n");
175 FatalAppExit(0, L
"Unhandeled exception error, application will exit!");
176 TerminateProcess(GetCurrentProcess(), -1);