📄 main.cxx
字号:
/* * main.cxx * * PWLib application source file for $$PRODUCT_NAME$$ * * Main program entry point. * * Copyright (c) $$YEAR$$ $$COPYRIGHT_HOLDER$$ * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log$ */#include "precompile.h"#include "main.h"$$IF(IS_GUI)#include "resources.h"$$ENDIF$$IF(HAS_HTTP)#include "custom.h"$$ELSE#include "version.h"$$ENDIFPCREATE_PROCESS($$APP_CLASS_NAME$$);$$IF(HAS_HTTP)const WORD DefaultHTTPPort = 6666;static const char UsernameKey[] = "Username";static const char PasswordKey[] = "Password";static const char LogLevelKey[] = "Log Level";static const char HttpPortKey[] = "HTTP Port";$$ENDIF$$APP_CLASS_NAME$$::$$APP_CLASS_NAME$$()$$IF(HAS_HTTP) : $$PARENT_APP_CLASS$$(ProductInfo)$$ELSE : $$PARENT_APP_CLASS$$("$$MANUFACTURER$$", "$$PRODUCT_NAME$$", MAJOR_VERSION, MINOR_VERSION, BUILD_TYPE, BUILD_NUMBER)$$ENDIF{}$$IF(IS_SERVICE)BOOL $$APP_CLASS_NAME$$::OnStart(){ // change to the default directory to the one containing the executable PDirectory exeDir = GetFile().GetDirectory();#if defined(_WIN32) && defined(_DEBUG) // Special check to aid in using DevStudio for debugging. if (exeDir.Find("\\Debug\\") != P_MAX_INDEX) exeDir = exeDir.GetParent();#endif exeDir.Change();$$IF(HAS_HTTP) httpNameSpace.AddResource(new PHTTPDirectory("data", "data")); httpNameSpace.AddResource(new PServiceHTTPDirectory("html", "html")); return $$PARENT_APP_CLASS$$::OnStart();$$ELSE return TRUE;$$ENDIF}void $$APP_CLASS_NAME$$::OnStop(){ $$PARENT_APP_CLASS$$::OnStop();}void $$APP_CLASS_NAME$$::OnControl(){}$$IF(HAS_HTTP)void $$APP_CLASS_NAME$$::OnConfigChanged(){}$$IF(HAS_SIGNATURE)void $$APP_CLASS_NAME$$::AddUnregisteredText(PHTML &){}$$ENDIFBOOL $$APP_CLASS_NAME$$::Initialise(const char * initMsg){ PConfig cfg("Parameters"); // Sert log level as early as possible SetLogLevel((PSystemLog::Level)cfg.GetInteger(LogLevelKey, GetLogLevel()));#if PTRACING if (GetLogLevel() >= PSystemLog::Warning) PTrace::SetLevel(GetLogLevel()-PSystemLog::Warning); else PTrace::SetLevel(0); PTrace::ClearOptions(PTrace::Timestamp); PTrace::SetOptions(PTrace::DateAndTime);#endif // Get the HTTP basic authentication info PString username = cfg.GetString(UsernameKey); PString password = PHTTPPasswordField::Decrypt(cfg.GetString(PasswordKey)); PHTTPSimpleAuth authority(GetName(), username, password); // Create the parameters URL page, and start adding fields to it PConfigPage * rsrc = new PConfigPage(*this, "Parameters", "Parameters", authority); // HTTP authentication username/password rsrc->Add(new PHTTPStringField(UsernameKey, 25, username)); rsrc->Add(new PHTTPPasswordField(PasswordKey, 25, password)); // Log level for messages rsrc->Add(new PHTTPIntegerField(LogLevelKey, PSystemLog::Fatal, PSystemLog::NumLogLevels-1, GetLogLevel(), "1=Fatal only, 2=Errors, 3=Warnings, 4=Info, 5=Debug")); // HTTP Port number to use. WORD httpPort = (WORD)cfg.GetInteger(HttpPortKey, DefaultHTTPPort); rsrc->Add(new PHTTPIntegerField(HttpPortKey, 1, 32767, httpPort)); // Finished the resource to add, generate HTML for it and add to name space PServiceHTML html("System Parameters"); rsrc->BuildHTML(html); httpNameSpace.AddResource(rsrc, PHTTPSpace::Overwrite); // Create the home page static const char welcomeHtml[] = "welcome.html"; if (PFile::Exists(welcomeHtml)) httpNameSpace.AddResource(new PServiceHTTPFile(welcomeHtml, TRUE), PHTTPSpace::Overwrite); else { PHTML html; html << PHTML::Title("Welcome to " + GetName()) << PHTML::Body() << GetPageGraphic() << PHTML::Paragraph() << "<center>" << PHTML::HotLink("Parameters") << "Parameters" << PHTML::HotLink() << PHTML::Paragraph(); if (!systemLogFileName && systemLogFileName != "-") html << PHTML::HotLink("logfile.txt") << "Full Log File" << PHTML::HotLink() << PHTML::BreakLine() << PHTML::HotLink("tail_logfile") << "Tail Log File" << PHTML::HotLink() << PHTML::Paragraph(); html << PHTML::HRule() << GetCopyrightText() << PHTML::Body(); httpNameSpace.AddResource(new PServiceHTTPString("welcome.html", html), PHTTPSpace::Overwrite); } // set up the HTTP port for listening & start the first HTTP thread if (ListenForHTTP(httpPort)) PSYSTEMLOG(Info, "Opened master socket for HTTP: " << httpListeningSocket->GetPort()); else { PSYSTEMLOG(Fatal, "Cannot run without HTTP port: " << httpListeningSocket->GetErrorText()); return FALSE; } PSYSTEMLOG(Info, "Service " << GetName() << ' ' << initMsg); return TRUE;}$$ENDIF$$ENDIFvoid $$APP_CLASS_NAME$$::Main(){$$IF(HAS_HTTP) Suspend();$$ELSE$$IF(IS_GUI) SetAboutDialogID(IDD_ABOUT); PNEW MainWindow(GetArguments()); PApplication::Main();$$ELSE PArgList & args = GetArguments();$$ENDIF$$ENDIF}$$IF(IS_GUI)MainWindow::MainWindow(PArgList & /*args*/){ SetTitle(PResourceString(IDS_TITLE)); SetIcon(PIcon(IDI_MAIN_WINDOW)); SetMenu(new MainMenu(this)); UpdateCommandSources(); ShowAll();}void MainWindow::NewCmd(PMenuItem &, INT){ // New document}void MainWindow::OpenCmd(PMenuItem &, INT){ POpenFileDialog dlg(this); if (dlg.RunModal()) { // Open existing document }}void MainWindow::CloseCmd(PMenuItem &, INT){ // Close document}void MainWindow::SaveCmd(PMenuItem &, INT){ // Save current document}void MainWindow::SaveAsCmd(PMenuItem &, INT){ PSaveFileDialog dlg(this); if (dlg.RunModal()) { // Save document to new name }}void MainWindow::PrintCmd(PMenuItem &, INT){ PPrintJobDialog dlg(this, printInfo); if (dlg.RunModal()) { printInfo = dlg.GetPrintInfo(); PPrintCanvas canvas("$$PRODUCT_NAME$$", printInfo); // Add printing code here }}void MainWindow::PrinterSetupCmd(PMenuItem &, INT){ PPrinterSetupDialog dlg(this, printInfo); if (dlg.RunModal()) printInfo = dlg.GetPrintInfo();}void MainWindow::ExitCmd(PMenuItem &, INT) // The Exit menu ... well ... exits.{ owner->Terminate();}void MainWindow::CopyCmd(){ PClipboard clip(this); // Do something with the clipboard}BOOL MainWindow::CanCopy(){ // If want copy menu enabled return TRUE;}void MainWindow::PasteCmd(){ PClipboard clip(this); // Do something with the clipboard}BOOL MainWindow::CanPaste(){ // If want paste menu enabled, ie clipboard has right format return TRUE;}$$ENDIF// End of File ///////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -