/////////////////////////////////////////////////////////////////////////////
// Name:        remhelp.h
// Purpose:     Remote help controller class
// Author:      Eric Dowty
// Modified by:	
// Created:     2002-11-18
// RCS-ID:      $Id: remhelp.h,v 1.1.2.1 2002/11/18 14:46:49 JS Exp $
// Copyright:   (c) Julian Smart
// Licence:     wxWindows licence
/////////////////////////////////////////////////////////////////////////////

#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface remhelp.h
#endif

#ifndef _WX_REMHELP_H_
#define _WX_REMHELP_H_

#include <wx/helpbase.h>
#include <wx/ipc.h>
#include <wx/html/helpctrl.h>

class WXDLLEXPORT wxConfigBase;

class rhhcConnection : public wxConnection
{
public:
    rhhcConnection(bool *isconn_a);
    ~rhhcConnection();

    bool OnAdvise(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format);
    bool OnDisconnect();
		bool *isconn_3;

};

class rhhcClient: public wxClient
{
public:
		rhhcClient(bool *isconn_a);
		//~rhhcClient( );
    wxConnectionBase *OnMakeConnection();
		bool *isconn_2;
};

class wxRemoteHtmlHelpController : public wxHelpControllerBase
{
	DECLARE_CLASS(wxRemoteHtmlHelpController)
public:
	wxRemoteHtmlHelpController(int style = wxHF_DEFAULT_STYLE);
	~wxRemoteHtmlHelpController();
	void OnQuit(void);

	void SetService(wxString& a_service);
	void SetServer(wxString& a_appname); //could be wxHelpController::SetViewer

	//standard wxHtmlHelpController functions
	bool AddBook(const wxString& book, bool show_wait_msg = FALSE);
	void Display(const wxString& x);
	void Display(const int id);
	bool DisplayContents();
	void DisplayIndex();
	bool KeywordSearch(const wxString& keyword);
	void SetTempDir(const wxString& path);
	void SetTitleFormat(const wxString& format);

	//dummies - config is in server
	void UseConfig(wxConfigBase* config, const wxString& rootpath = wxEmptyString) {};
	void ReadCustomization(wxConfigBase* cfg, wxString path = wxEmptyString) {};
	void WriteCustomization(wxConfigBase* cfg, wxString path = wxEmptyString) {};

	//virtuals from wxHelpControllerBase - not in wxHtmlHelpController
	//won't compile without these
	bool LoadFile(const class wxString &); //dummy
	bool DisplaySection(int);
	bool DisplayBlock(long);
	bool Quit(void);

private:
	void OnExit(wxCommandEvent& event);
	bool DoConnection();

	rhhcConnection *m_connection;
	rhhcClient *m_client;
	wxProcess *m_process;

	int m_pid;
	int m_style;
	wxString m_appname;
	wxString m_service;
	wxString m_windowname;
	wxString m_book;
	bool isconn_1;
};

#endif
	// _WX_REMHELP_H_
