8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-29 06:43:03 +01:00
firebird-mirror/src/utilities/fbcpl/fbdialog.h

229 lines
6.0 KiB
C++

/*
* PROGRAM: Firebird 2.0 control panel applet
* MODULE: FBDialog.h
* DESCRIPTION: Main file to provide GUI based server control functions
* for Firebird 2.0
*
* The contents of this file are subject to the Initial Developer's
* 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 here:
*
* http://www.ibphoenix.com?a=ibphoenix&page=ibp_idpl.
*
* 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 Initial Developer of the Original Code is Paul Reeves.
*
* The Original Code is (C) 2003 Paul Reeves .
*
* All Rights Reserved.
*
* Contributor(s): ______________________________________.
*
*/
/////////////////////////////////////////////////////////////////////////////
// CFBDialog dialog
#if !defined(_FBDialog_)
#define _FBDialog_
//#pragma once
#define FB_COMPILER_MESSAGE_STR(x) #x
#define FB_COMPILER_MESSAGE_STR2(x) FB_COMPILER_MESSAGE_STR(x)
#define FB_COMPILER_MESSAGE(desc) message(__FILE__ "(" \
FB_COMPILER_MESSAGE_STR2(__LINE__) "):" desc)
#include "resource.h" // main symbols
#include "res/fbcontrol.rc2"
#include <winsvc.h>
#include "../install/install_nt.h"
#include "../install/servi_proto.h"
#include "../install/registry.h"
#include "../../remote/os/win32/window.h"
#include "../../iscguard/iscguard.h"
extern USHORT svc_error (SLONG, const TEXT*, SC_HANDLE);
class CFBDialog : public CDialog
{
// Construction
public:
CFBDialog(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CFBDialog)
enum { IDD = IDD_FBDIALOG };
CButton m_Server_Arch;
CButton m_Super_Server;
CButton m_Classic_Server;
CButton m_Apply;
CButton m_Use_Guardian;
CButton m_Manual_Start;
CButton m_Run_As_Application;
CButton m_Run_As_Service;
CButton m_Auto_Start;
CButton m_Run_Type;
CButton m_Button_Stop;
CStatic m_Icon;
CString m_FB_Version;
CString m_Firebird_Status;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CFBDialog)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CFBDialog)
virtual BOOL OnInitDialog();
virtual void OnOK();
afx_msg void OnButtonStop();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnDestroy();
afx_msg void OnService();
afx_msg void OnManualStart();
afx_msg void OnApplication();
afx_msg void OnAutoStart();
afx_msg void OnUseGuardian();
afx_msg void OnApply();
afx_msg void OnSuperServer();
afx_msg void OnClassicServer();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
//========= End of MSVC specific stuff
//Our Stuff
public:
CString m_SS_Server_Name;
CString m_Guardian_Name;
CString m_Root_Path;
CString m_ServerClassName;
#ifdef MANAGE_CLASSIC
CString m_ClassicClassName;
CString m_CS_Server_Name;
#endif
bool m_Reset_Display_To_Existing_Values;
bool m_Restore_old_status;
UINT m_uiTimer;
SC_HANDLE hScManager;
SERVICE_STATUS service_status;
int m_Error_Status; //This is set by the calls to SERVICES_
//and is also set by GetLastError()
//It is tested in ShowError to prevent
//the same error message being reported.
struct STATUS //This stores the current status
{
#ifdef MANAGE_CLASSIC
bool UseClassic;
#endif
bool UseGuardian;
bool ServicesAvailable; // Set via UpdateServerStatus()
int ServerStatus;
bool UseService; // This is a convenience. It is set when
// ServiceStatus is checked and saves trying
// to do the more complex evaluation of
// ServiceStatus
bool AutoStart;
bool WasRunning; // Set via UpdateServerStatus(). Allows us
// to check if server was running before we
// updated our settings.
bool SystemLogin; // Are we using LocalSystem to control the
// service
bool SufficientUserRights; // Does user have sufficient rights to change service
CString ServerName; // Initially set by call to ViewRegistryEntries
CString ServiceExecutable; // Initially set by call to ViewRegistryEntries
} fb_status;
STATUS new_settings;
bool initialised; // False on startup
//Check stuff
bool CheckServiceInstalled( LPCTSTR service );
int DatabasesConnected();
bool FirebirdInstalled();
bool FirebirdRunning();
//Get Stuff
HWND GetSuperServerHandle();
#ifdef MANAGE_CLASSIC
HWND GetClassicServerHandle();
#endif
HWND GetFirebirdHandle();
void GetFullAppPath( CFBDialog::STATUS status, char * app);
HWND GetGuardianHandle();
// bool GetGuardianUseSpecified();
bool GetPreferredArchitecture();
void GetServerName( CFBDialog::STATUS status, CString& AppName);
int GetServerStatus();
bool ServiceSupportAvailable();
void ViewRegistryEntries();
//Set stuff
bool ConfigureRegistryForApp( CFBDialog::STATUS status );
void SetAutoStart( CFBDialog::STATUS status );
#ifdef FBCPL_UPDATE_CONF
void SetGuardianUseInConf( bool UseGuardian );
#endif
#ifdef MANAGE_CLASSIC
void SetPreferredArchitectureInConf( bool UseClassic );
#endif
#ifdef FBCPL_UPDATE_CONF
bool UpdateFirebirdConf(CString option, CString value);
#endif
//Do stuff
void ApplyChanges();
bool AppInstall( CFBDialog::STATUS status );
bool AppRemove();
void CloseServiceManager();
void DisableApplyButton();
void EnableApplyButton();
void KillApp();
bool OpenServiceManager( DWORD DesiredAccess );
void ProcessMessages();
void ResetCheckBoxes( CFBDialog::STATUS status );
bool ServerStop();
bool ServerStart( CFBDialog::STATUS status );
bool ServiceInstall( CFBDialog::STATUS status );
bool ServiceRemove();
static void HandleSvcError(SLONG status, const TEXT* string);
void HandleError(bool silent, TEXT *string );
void ShowError( LPTSTR lpMsgBuf, CString error_title );
void UpdateServerStatus();
bool UserHasSufficientRights();
bool ValidateInstalledServices();
};
#endif