office-gobmx/crashrep/source/unx/interface.hxx
Jens-Heiner Rechtien a2c065779c INTEGRATION: CWS crashreport01 (1.3.8); FILE MERGED
2004/03/17 13:19:22 hro 1.3.8.1: #110526# Enable UI less crash reporting
2004-05-10 10:05:10 +00:00

207 lines
6.1 KiB
C++
Executable file

/*************************************************************************
*
* $RCSfile: interface.hxx,v $
*
* $Revision: 1.4 $
*
* last change: $Author: hr $ $Date: 2004-05-10 11:05:10 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <gdk/gdkx.h>
#include <X11/Xlib.h>
#include <hash_map>
#include <vector>
#include <string>
class WizardDialog;
// returns success, on true application will quit
bool save_crash_report( const std::string& rFileName, const std::hash_map< std::string, std::string >& rSettings );
// returns success, on true application will quit
bool send_crash_report( WizardDialog *pDialog, const std::hash_map< std::string, std::string >& rSettings );
// must return a valid UTF8 string containing the message that will be sent
std::string crash_get_details( const std::hash_map< std::string, std::string >& rSettings );
class StringResource
{
public:
static void init( int argc, char** argv );
static const char* get( const char* pKey );
};
class WizardPage
{
protected:
std::string m_aWizardTitle;
GtkWidget* m_pPageContents;
WizardDialog* m_pDialog;
public:
WizardPage( WizardDialog* pDialog ) : m_pDialog( pDialog ) {}
virtual ~WizardPage();
const char* getTitle() const { return m_aWizardTitle.c_str(); }
GtkWidget* getContents() const { return m_pPageContents; }
virtual void update() = 0;
};
class WizardDialog
{
std::vector< WizardPage* > m_aPages;
int m_nCurrentPage;
GtkWidget* m_pTopLevel;
GtkWidget* m_pVBox;
GtkWidget* m_pViewPort;
GtkWidget* m_pWizardTitle;
GtkWidget* m_pPageArea;
GtkWidget* m_pSeparator;
GtkWidget* m_pButtonBox;
GtkWidget* m_pBackButton;
GtkWidget* m_pNextButton;
GtkWidget* m_pSendButton;
GtkWidget* m_pCancelButton;
GtkWidget* m_pStatusDialog;
std::hash_map< std::string, std::string > m_aSettings;
static gint button_clicked( GtkWidget* pButton, WizardDialog* pThis );
void nextPage();
void lastPage();
public:
WizardDialog();
~WizardDialog();
// takes ownership of page
void insertPage( WizardPage* pPage );
void show( bool bShow = true );
void show_messagebox( const std::string& rMessage );
gint show_sendingstatus( bool bInProgress );
void hide_sendingstatus();
std::hash_map< std::string, std::string >& getSettings() { return m_aSettings; }
GtkWindow* getTopLevel() const { return GTK_WINDOW(m_pTopLevel); }
};
class MainPage : public WizardPage
{
GtkWidget* m_pInfo;
GtkWidget* m_pEditLabel;
GtkWidget* m_pEdit;
GtkWidget* m_pEntryLabel;
GtkWidget* m_pEntryVBox;
GtkWidget* m_pScrolledEntry;
GtkWidget* m_pEntry;
GtkWidget* m_pHBox;
GtkWidget* m_pRightColumn;
GtkWidget* m_pLeftColumn;
GtkWidget* m_pDetails;
GtkWidget* m_pSave;
GtkWidget* m_pCheck;
GtkWidget* m_pOptions;
GtkWidget* m_pAddressLabel;
GtkWidget* m_pAddress;
static gint button_clicked( GtkWidget* pButton, MainPage* pThis );
static gint button_toggled( GtkWidget* pButton, MainPage* pThis );
public:
MainPage( WizardDialog* );
virtual ~MainPage();
virtual void update();
};
class WelcomePage : public WizardPage
{
public:
WelcomePage( WizardDialog* );
virtual ~WelcomePage();
virtual void update();
};
class OptionsDialog
{
GtkWidget* m_pDialog;
GtkWidget* m_pPage;
GtkWidget* m_pLeftColumn;
GtkWidget* m_pFrame;
GtkWidget* m_pDirect;
GtkWidget* m_pManual;
GtkWidget* m_pServerLabel;
GtkWidget* m_pServer;
GtkWidget* m_pColon;
GtkWidget* m_pPortLabel;
GtkWidget* m_pPort;
GtkWidget* m_pNote;
GtkWidget* m_pOkButton;
GtkWidget* m_pCancelButton;
GtkWidget* m_pButtonBox;
GtkWidget* m_pVBox;
GtkWidget* m_pHBox;
GtkWidget* m_pVBoxServer;
GtkWidget* m_pVBoxPort;
static gint button_toggled( GtkWidget* pButton, OptionsDialog* pThis );
public:
OptionsDialog( GtkWindow* pParent,
std::hash_map< std::string, std::string >& rSettings );
virtual ~OptionsDialog();
std::string getUseProxy();
std::string getServer();
std::string getPort();
};