[cairo-commit] roadster/src databasewindow.h, NONE, 1.1 datasetwindow.h, NONE, 1.1 db.h, NONE, 1.1 geometryset.h, NONE, 1.1 gotowindow.h, NONE, 1.1 gpsclient.h, NONE, 1.1 gui.h, NONE, 1.1 import.h, NONE, 1.1 import_tiger.h, NONE, 1.1 importwindow.h, NONE, 1.1 layers.h, NONE, 1.1 locationset.h, NONE, 1.1 mainwindow.h, NONE, 1.1 map.c, 1.8, 1.9 map.h, NONE, 1.1 scenemanager.h, NONE, 1.1 search.h, NONE, 1.1 search_location.h, NONE, 1.1 search_road.h, NONE, 1.1 searchwindow.h, NONE, 1.1 util.h, NONE, 1.1 welcomewindow.h, NONE, 1.1

Ian McIntosh commit at pdx.freedesktop.org
Wed Feb 23 09:43:52 PST 2005


Committed by: ian

Update of /cvs/cairo/roadster/src
In directory gabe:/tmp/cvs-serv27910/src

Modified Files:
	map.c 
Added Files:
	databasewindow.h datasetwindow.h db.h geometryset.h 
	gotowindow.h gpsclient.h gui.h import.h import_tiger.h 
	importwindow.h layers.h locationset.h mainwindow.h map.h 
	scenemanager.h search.h search_location.h search_road.h 
	searchwindow.h util.h welcomewindow.h 
Log Message:


--- NEW FILE: databasewindow.h ---
/***************************************************************************
 *            databasewindow.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
#ifndef _DATABASEWINDOW_H
#define _DATABASEWINDOW_H

#ifdef __cplusplus
extern "C"
{
#endif

void databasewindow_init(GladeXML* pGladeXML);
gboolean databasewindow_connect(void);

/* Funky, auto-lookup glade signal handlers.

   XXX: Better would be to hook these up manually, remove these
   declarations, and make the functions static.
*/
void databasewindow_on_connectbutton_clicked(void);

#ifdef __cplusplus
}
#endif

#endif /* _DATABASEWINDOW_H */

--- NEW FILE: datasetwindow.h ---
/***************************************************************************
 *            datasetwindow.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

#ifndef _DATASETWINDOW_H
#define _DATASETWINDOW_H

#include <glade/glade.h>

#ifdef __cplusplus
extern "C"
{
#endif

void datasetwindow_init(GladeXML* pGladeXML);
void datasetwindow_show(void);

/* Funky, auto-lookup glade signal handlers.

   XXX: Better would be to hook these up manually, remove these
   declarations, and make the functions static.
*/
void datasetwindow_on_datasetdeletebutton_clicked(GtkWidget *widget, gpointer user_data);
void datasetwindow_on_datasetimportbutton_clicked(GtkWidget *widget, gpointer user_data);

#ifdef __cplusplus
}
#endif

#endif /* _DATASETWINDOW_H */

--- NEW FILE: db.h ---
/***************************************************************************
 *            db.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

#ifndef _DB_H_
#define _DB_H_

#include <mysql.h>

typedef struct db_connection {
	MYSQL *m_pMySQLConnection;
	gchar* m_pzHost;
	gchar* m_pzUserName;
	gchar* m_pzPassword;
	gchar* m_pzDatabase;
} db_connection_t;

typedef MYSQL_RES db_resultset_t;
typedef MYSQL_ROW db_row_t;

#define DB_ROADS_TABLENAME 		("Road")
#define DB_FEATURES_TABLENAME	("Feature")

#include "map.h"
#include "layers.h"

void db_create_tables(void);

void db_init(void);
void db_deinit(void);

// connect
gboolean db_connect(const gchar* pzHost, const gchar* pzUserName, const gchar* pzPassword, const gchar* pzDatabase);
const gchar* db_get_connection_info(void);

// utility
gboolean db_is_empty(void);

gboolean db_insert_road(gint nLayerType, gint nAddressLeftStart, gint nAddressLeftEnd, gint nAddressRightStart, gint nAddressRightEnd, GPtrArray* pPointsArray, gint* pReturnID);

gboolean db_insert_roadname(gint nRoadID, const gchar* pszName, gint nSuffixID);

//~ gboolean db_create_points_db(const gchar* name);

//~ // insert
//~ gboolean db_road_insert(db_connection_t* pConnection, gint nLayerType, GPtrArray* pPoints, gint* pReturnID);
//~ gboolean db_point_insert(db_connection_t* pConnection, gint nPointSetID, mappoint_t* pPoint, gint* pReturnID);

//~ // load
//~ gboolean db_load_geometry(db_connection_t* pConnection, maprect_t* pRect, layer_t* pLayer, gint nNumLayers); //, geometryset_t* pGeometrySet);
//~ gboolean db_pointset_get_list(db_connection_t* pConnection, GPtrArray* pPointSet);

gboolean db_query(const gchar* pszSQL, db_resultset_t** ppResultSet);
db_row_t db_fetch_row(db_resultset_t* pResultSet);
void db_free_result(db_resultset_t* pResultSet);
gint db_get_last_insert_id(void);

gchar* db_make_escaped_string(const gchar* pszString);
void db_free_escaped_string(gchar* pszString);

void db_parse_point(const gchar* pszText, mappoint_t* pPoint);
void db_parse_pointstring(const gchar* pszText, pointstring_t* pPointString, gboolean (*callback_get_point)(mappoint_t**));

void db_enable_keys(void);
void db_disable_keys(void);

#endif

--- NEW FILE: geometryset.h ---
/***************************************************************************
 *            geometryset.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

#ifndef __GEOMETRYSET_H__
#define __GEOMETRYSET_H__

// a geometry set holds all the geometry for a layer
typedef struct geometryset {
	GPtrArray* m_pPointStringsArray;
} geometryset_t;

// holds points that form a road or polygon (park, etc.)
typedef struct {
	gchar* m_pszName;
	GPtrArray* m_pPointsArray;
} pointstring_t;

#include "map.h"

void geometryset_init(void);
void geometryset_free(geometryset_t* pGeometrySet);
void geometryset_clear(geometryset_t* pGeometrySet);

gboolean geometryset_new(geometryset_t** ppGeometrySet);

gboolean geometryset_util_new_point(mappoint_t** ppPoint);
gboolean geometryset_util_new_pointstring(pointstring_t** ppPointString);
void geometryset_util_free_pointstring(pointstring_t* pPointString);

gboolean geometryset_load_geometry(maprect_t* pRect);

void geometryset_debug_print(geometryset_t* pGeometrySet);

#endif

--- NEW FILE: gotowindow.h ---
/***************************************************************************
 *            gotowindow.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

#include <glade/glade.h>
 
void gotowindow_init(GladeXML* pGladeXML);
void gotowindow_show(void);
void gotowindow_hide(void);

/* Funky, auto-lookup glade signal handlers.

   XXX: Better would be to hook these up manually, remove these
   declarations, and make the functions static.
*/
void gotowindow_on_knownlocationtreeview_row_activated(GtkTreeView *treeview, GtkTreePath *arg1, GtkTreeViewColumn *arg2, gpointer user_data);
void gotowindow_on_gobutton_clicked(GtkButton *button, gpointer user_data);


--- NEW FILE: gpsclient.h ---
/***************************************************************************
 *            gpsclient.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
#ifndef _GPSCLIENT_H
#define _GPSCLIENT_H

#ifdef __cplusplus
extern "C"
{
#endif

#include "map.h"

typedef enum {
	GPS_STATUS_NO_GPSD = 0,		// daemon is absent :(		(0 should be default state)
	GPS_STATUS_NO_DEVICE = 1,	// no physical GPS device :(
	GPS_STATUS_NO_SIGNAL = 2,	// can't get a signal :(
	GPS_STATUS_LIVE = 3,		// :) everything groovy
} EGPSClientStatus;

typedef enum {
	GPS_SIGNALQUALITY_1_TERRIBLE = 0,		// (0 should be default state)
	GPS_SIGNALQUALITY_2_POOR = 1,
	GPS_SIGNALQUALITY_3_FAIR = 2,
	GPS_SIGNALQUALITY_4_GOOD = 3,
	GPS_SIGNALQUALITY_5_EXCELLENT = 4,
} EGPSClientSignalQuality;

// PDOP (positional dilution of precision) values. PDOP combines HDOP and VDOP.
// lower is better.  these numbers are semi-arbitrary, and depend on the use
// (in our case, navigating a car, where a few feet here and there isn't important).
#define PDOP_EXCELLENT 	(2.0)
#define PDOP_GOOD		(3.0)
#define PDOP_FAIR		(4.0)
#define PDOP_POOR		(5.0)

// public gpsdata
typedef struct gpsdata {
	EGPSClientStatus m_eStatus;
	mappoint_t m_ptPosition;
	gdouble m_fSignalQuality;
	gdouble m_fSpeedInKilometersPerHour;
	gdouble m_fSpeedInMilesPerHour;
} gpsdata_t;

void gpsclient_init(void);
gpsdata_t* gpsclient_getdata(void);

#ifdef __cplusplus
}
#endif

#endif /* _GPSCLIENT_H */

--- NEW FILE: gui.h ---
/***************************************************************************
 *            gui.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
#ifndef _GUI_H_
#define _GUI_H_

#include <gtk/gtk.h>

extern GtkWidget *g_pApplicationWidget;
extern GtkWidget *g_pDisplaySettingsWidget;

struct gui_state_t {
	float m_fCenterX;
	float m_fCenterY;

	guint8 m_nZoomLevel;
};

//
// prototypes
//
void gui_init(void);
void gui_run(void);
extern gboolean gui_redraw_map_if_needed(void);
extern void gui_set_tool_label(gchar* pMessage);
extern void gui_exit(void);
extern GtkWidget* gui_get_top_window(void);

//~ void gui_show_goto_window();
//~ void gui_hide_goto_window();

//~ void gui_show_colors_window();
//~ void gui_hide_colors_window();

//~ void gui_show_about_dialog();
//~ void gui_hide_about_window();

//~ void gui_show_preferences_window();
//~ void gui_hide_preferences_window();

void cursor_init(void);
//~ void gui_statusbar_update_zoomscale();
//~ void gui_statusbar_update_position();
//~ void gui_statusbar_set_position(gchar* pMessage);
//~ void gui_statusbar_set_zoomscale(gchar* pMessage);

//~ gboolean gui_get_toolbar_visible();
//~ void gui_set_toolbar_visible(gboolean bVisible);

//~ void gui_toggle_fullscreen();

//~ void gui_zoomin();
//~ void gui_zoomout();
#endif

--- NEW FILE: import.h ---
/***************************************************************************
 *            import.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

#ifndef _IMPORT_H
#define _IMPORT_H

#ifdef __cplusplus
extern "C"
{
#endif

gboolean import_from_uri(const gchar* pszURI);

#ifdef __cplusplus
}
#endif

#endif /* _IMPORT_H */

--- NEW FILE: import_tiger.h ---
/***************************************************************************
 *            import_tiger.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
#ifndef _IMPORT_TIGER_H
#define _IMPORT_TIGER_H

#ifdef __cplusplus
extern "C"
{
#endif

#include <gtk/gtk.h>
#include "db.h"

gboolean import_tiger_from_uri(const gchar* pszURI, gint nTigerSetNumber);

#ifdef __cplusplus
}
#endif

#endif /* _IMPORT_TIGER_H */

--- NEW FILE: importwindow.h ---
/***************************************************************************
 *            importwindow.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
#ifndef _IMPORTWINDOW_H
#define _IMPORTWINDOW_H

#include <glade/glade.h>

#ifdef __cplusplus
extern "C"
{
#endif

void importwindow_init(GladeXML* pGladeXML);
void importwindow_show(void);

void importwindow_begin(GSList* pSelectedFileList);
void importwindow_log_append(const gchar* pszText, ...);
void importwindow_progress_pulse(void);

// void importwindow_progress_callback(gdouble fPercent, gpointer pData);
	
#ifdef __cplusplus
}
#endif

#endif /* _IMPORTWINDOW_H */

--- NEW FILE: layers.h ---
/***************************************************************************
 *            layers.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

#ifndef _LAYERS_H
#define _LAYERS_H

#include <gtk/gtk.h>
#include "geometryset.h"

#ifdef __cplusplus
extern "C"
{
#endif

#define LAYER_NONE				(0)

#define LAYER_MINORSTREET		(1)
#define LAYER_MAJORSTREET		(2)
#define LAYER_MINORHIGHWAY		(3)
#define LAYER_MINORHIGHWAY_RAMP	(4)
#define LAYER_MAJORHIGHWAY		(5)	// used?
#define LAYER_MAJORHIGHWAY_RAMP	(6)	// used?
#define LAYER_RAILROAD			(7)
#define LAYER_PARK				(8)
#define LAYER_RIVER				(9)
#define LAYER_LAKE				(10)
#define LAYER_MISC_AREA			(11)

#define NUM_LAYERS 				(11)
	
#define LAYER_FIRST				(1)
#define LAYER_LAST				(11)

typedef struct color {
	gfloat m_fRed;
	gfloat m_fGreen;
	gfloat m_fBlue;
	gfloat m_fAlpha;
} color_t;

#define NUM_DASH_STYLES (2)

typedef struct dashstyle {
	gdouble* m_pfList;
	gint m_nCount;
} dashstyle_t;
dashstyle_t g_aDashStyles[NUM_DASH_STYLES];

typedef struct sublayerstyle {
	gdouble m_afLineWidths[MAX_ZOOM_LEVEL];
	color_t m_clrColor;
	gint m_nDashStyle;
	gint m_nJoinStyle;
	gint m_nCapStyle;
} sublayerstyle_t;

	//~ gint m_nMinZoomLevel;
	//~ gdouble m_fTopLineWidthPercent;
	//~ gdouble m_afLineWidths[10];
	//~ color_t m_clrLowDetail;
	//~ color_t m_clrFill;
	//~ color_t m_clrOutline;
	//~ gint m_nDashStyle;	// index into dashes table

typedef struct textlabelstyle {
	gdouble m_afFontSizeAtZoomLevel[MAX_ZOOM_LEVEL];
	gint m_abBoldAtZoomLevel[MAX_ZOOM_LEVEL];	// 0s or 1s
	gint m_abHaloAtZoomLevel[MAX_ZOOM_LEVEL];	// 0s or 1s
	color_t m_clrColor;
	// font family...
	// font style...
} textlabelstyle_t;

// defines the look of a layer
typedef struct layerstyle {
	sublayerstyle_t m_aSubLayers[2];
} layerstyle_t;

typedef struct layer {
	gint nLayerIndex;
	gchar* m_pszName;
	layerstyle_t m_Style;
	textlabelstyle_t m_TextLabelStyle;	
	geometryset_t* m_pGeometrySet;
} layer_t;

extern layer_t g_aLayers[NUM_LAYERS+1];

void layers_init(void);
void layers_clear(void);

#ifdef __cplusplus
}
#endif

#endif /* _LAYERS_H */

--- NEW FILE: locationset.h ---
/***************************************************************************
 *            locationset.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
#ifndef _LOCATIONSET_H
#define _LOCATIONSET_H

#ifdef __cplusplus
extern "C"
{
#endif

#include "map.h"
	
typedef struct locationsetstyle {
	// icon?
	int a;
} locationsetstyle_t;

// a single location (eg. "Someday Cafe")
typedef struct location {
	gint m_nID;
	gchar* m_pszName;
	mappoint_t m_Coordinates;
} location_t;

// a set of locations (eg. "Coffee Shops")
typedef struct locationset {
	gint m_nID;
	gchar* m_pszName;

	locationsetstyle_t m_Style;

	GPtrArray* m_pLocationsArray;
} locationset_t;

void locationset_init(void);
void locationset_load_locationsets(void);
gboolean locationset_load_locations(maprect_t* pRect);
gboolean locationset_add_location(gint nLocationSetID, mappoint_t* pPoint, gint* pReturnID);
const GPtrArray* locationset_get_set_array(void);

#ifdef __cplusplus
}
#endif

#endif /* _LOCATIONSET_H */

--- NEW FILE: mainwindow.h ---
/***************************************************************************
 *            mainwindow.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
#ifndef _MAINWINDOW_H
#define _MAINWINDOW_H

#include <glade/glade.h>

#ifdef __cplusplus
extern "C"
{
#endif
	
void mainwindow_init(GladeXML* pGladeXML);
void mainwindow_draw_map(void);

void mainwindow_show(void);
void mainwindow_show_on_startup(void);
void mainwindow_hide(void);

void mainwindow_set_sensitive(gboolean bSensitive);

void mainwindow_toggle_fullscreen(void);

void mainwindow_set_toolbar_visible(gboolean);
gboolean mainwindow_get_toolbar_visible(void);

void mainwindow_set_statusbar_visible(gboolean);
gboolean mainwindow_get_statusbar_visible(void);

void mainwindow_set_sidebox_visible(gboolean);
gboolean mainwindow_get_sidebox_visible(void);

GtkWidget* mainwindow_get_window(void);

void mainwindow_statusbar_update_zoomscale(void);
void mainwindow_statusbar_update_position(void);

void mainwindow_statusbar_progressbar_set_text(const gchar* pszText);
void mainwindow_statusbar_progressbar_pulse(void);
void mainwindow_statusbar_progressbar_clear(void);

void mainwindow_begin_import_geography_data(void);

void* mainwindow_set_busy(void);
void mainwindow_set_not_busy(void** pCursor);

/* Funky, auto-lookup glade signal handlers.

   XXX: Better would be to hook these up manually, remove these
   declarations, and make the functions static.
*/
void on_import_maps_activate(GtkWidget *widget, gpointer user_data);
void on_quitmenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
gboolean on_application_delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_data);
void on_zoomscale_value_changed(GtkRange *range, gpointer user_data);
void on_aboutmenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_toolbarmenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_statusbarmenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_sidebarmenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_zoomin_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_zoomout_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_fullscreenmenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
void mainwindow_on_gotomenuitem_activate(GtkMenuItem     *menuitem, gpointer user_data);
void on_importmenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_gotobutton_clicked(GtkToolButton *toolbutton,  gpointer user_data);
void on_toolbutton_clicked(GtkToolButton *toolbutton, gpointer user_data);
void mainwindow_on_addpointmenuitem_activate(GtkWidget *_unused, gpointer* __unused);
void mainwindow_on_datasetmenuitem_activate(GtkWidget *pWidget, gpointer* p);

#ifdef __cplusplus
}
#endif

#endif /* _MAINWINDOW_H */

Index: map.c
===================================================================
RCS file: /cvs/cairo/roadster/src/map.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- map.c	23 Feb 2005 17:22:07 -0000	1.8
+++ map.c	23 Feb 2005 17:43:50 -0000	1.9
@@ -84,6 +84,22 @@
 	{"Run", "Run"},
 	{"Pass", "Pass"},
 	
+	{"Freeway", "Fwy"},
+	{"Alley", "Aly"},
+	{"Crescent", "Cres"},
+	{"Tunnel", "Tunl"},
+	{"Walk", "Walk"},
+	{"Terrace", "Trce"},
+	{"Branch", "Br"},
+	{"Cove", "Cv"},
+	{"Bypass", "Byp"},
+	{"Loop", "Loop"},
+	{"Spur", "Spur"},
+	{"Ramp", "Ramp"},
+	{"Pike", "Pike"},
+	{"Grade", "Grd"},
+	{"Route", "Rte"},
+	{"Arc", "Arc"},
 };
 
 struct {
@@ -158,6 +174,47 @@
 	{"Run", ROAD_SUFFIX_RUN},
 
 	{"Pass", ROAD_SUFFIX_PASS},
+
+	{"Freeway", ROAD_SUFFIX_FREEWAY},
+	{"Fwy", ROAD_SUFFIX_FREEWAY},
+	
+	{"Alley", ROAD_SUFFIX_ALLEY},
+	{"Aly", ROAD_SUFFIX_ALLEY},
+	
+	{"Crescent", ROAD_SUFFIX_CRESCENT},
+	{"Cres", ROAD_SUFFIX_CRESCENT},
+	
+	{"Tunnel", ROAD_SUFFIX_TUNNEL},
+	{"Tunl", ROAD_SUFFIX_TUNNEL},
+	
+	{"Walk", ROAD_SUFFIX_WALK},
+	{"Walk", ROAD_SUFFIX_WALK},
+	
+	{"Branch", ROAD_SUFFIX_BRANCE},
+	{"Br", ROAD_SUFFIX_BRANCE},
+	
+	{"Cove", ROAD_SUFFIX_COVE},
+	{"Cv", ROAD_SUFFIX_COVE},
+	
+	{"Bypass", ROAD_SUFFIX_BYPASS},
+	{"Byp", ROAD_SUFFIX_BYPASS},
+	
+	{"Loop", ROAD_SUFFIX_LOOP},
+	
+	{"Spur", ROAD_SUFFIX_SPUR},
+	
+	{"Ramp", ROAD_SUFFIX_RAMP},
+	
+	{"Pike", ROAD_SUFFIX_PIKE},
+	
+	{"Grade", ROAD_SUFFIX_GRADE},
+	{"Grd", ROAD_SUFFIX_GRADE},
+	
+	{"Route", ROAD_SUFFIX_ROUTE},
+	{"Rte", ROAD_SUFFIX_ROUTE},
+	
+	{"Arc", ROAD_SUFFIX_ARC},
+
 };
 
 #define SCALE_X(p, x)  ((((x) - (p)->m_rWorldBoundingBox.m_A.m_fLongitude) / (p)->m_fScreenLongitude) * (p)->m_nWindowWidth)

--- NEW FILE: map.h ---
/***************************************************************************
 *            map.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

#ifndef _MAP_H_
#define _MAP_H_

#include <cairo.h>

struct GtkWidget;

#define MIN_ZOOM_LEVEL	1
#define MAX_ZOOM_LEVEL	10

// World space
typedef struct mappoint {
	gdouble m_fLatitude;
	gdouble m_fLongitude;
} mappoint_t;

typedef struct maprect {
	mappoint_t m_A;
	mappoint_t m_B;
} maprect_t;

// Screen space
typedef struct screenpoint {
	gint16 m_nX;
	gint16 m_nY;
} screenpoint_t;

typedef struct screenrect {
	screenpoint_t m_A;
	screenpoint_t m_B;
} screenrect_t;

// Window space (0,0 being upper left of the draw area)
typedef struct windowdimensions {
	guint16 m_uWidth;
	guint16 m_uHeight;
} windowdimensions_t;

typedef struct zoomlevel {
	guint32 m_uScale;		// ex. 10000 for 1:10000 scale
	gchar* m_szName;
} zoomlevel_t;

extern zoomlevel_t g_sZoomLevels[];


typedef enum {
	UNIT_FIRST=0,	
		UNIT_FEET=0,
		UNIT_MILES=1,
		UNIT_METERS=2,
		UNIT_KILOMETERS=3,
	UNIT_LAST=3,
} EDistanceUnits;

#define DEFAULT_UNIT	(UNIT_MILES)

extern gchar* g_aDistanceUnitNames[];

enum ERoadNameSuffix {			// these can't change once stored in DB
	ROAD_SUFFIX_FIRST = 0,
	ROAD_SUFFIX_NONE = 0,

	ROAD_SUFFIX_ROAD = 1,
	ROAD_SUFFIX_STREET,
	ROAD_SUFFIX_DRIVE,
	ROAD_SUFFIX_BOULEVARD,	// blvd
	ROAD_SUFFIX_AVENUE,
	ROAD_SUFFIX_CIRCLE,
	ROAD_SUFFIX_SQUARE,
	ROAD_SUFFIX_PATH,
	ROAD_SUFFIX_WAY,
	ROAD_SUFFIX_PLAZA,
	ROAD_SUFFIX_TRAIL,
	ROAD_SUFFIX_LANE,
	ROAD_SUFFIX_CROSSING,
	ROAD_SUFFIX_PLACE,
	ROAD_SUFFIX_COURT,
	ROAD_SUFFIX_TURNPIKE,
	ROAD_SUFFIX_TERRACE,
	ROAD_SUFFIX_ROW,
	ROAD_SUFFIX_PARKWAY,

	ROAD_SUFFIX_BRIDGE,
	ROAD_SUFFIX_HIGHWAY,
	ROAD_SUFFIX_RUN,
	ROAD_SUFFIX_PASS,
	
	ROAD_SUFFIX_FREEWAY,
	ROAD_SUFFIX_ALLEY,
	ROAD_SUFFIX_CRESCENT,
	ROAD_SUFFIX_TUNNEL,
	ROAD_SUFFIX_WALK,
	ROAD_SUFFIX_BRANCE,
	ROAD_SUFFIX_COVE,
	ROAD_SUFFIX_BYPASS,
	ROAD_SUFFIX_LOOP,
	ROAD_SUFFIX_SPUR,
	ROAD_SUFFIX_RAMP,
	ROAD_SUFFIX_PIKE,
	ROAD_SUFFIX_GRADE,
	ROAD_SUFFIX_ROUTE,
	ROAD_SUFFIX_ARC,

	ROAD_SUFFIX_LAST = ROAD_SUFFIX_ARC
};

//~ type 'Ctr' couldn't be looked up
//~ type 'Walk' couldn't be looked up
//~ type 'Ramp' couldn't be looked up
//~ type 'Cv' couldn't be looked up
//~ type 'Byp' couldn't be looked up
//~ type 'Ramp' couldn't be looked up
//~ type 'Br' couldn't be looked up
//~ type 'Trce' couldn't be looked up

typedef struct rendermetrics {
	gint m_nZoomLevel;
	gdouble m_fScreenLatitude;
	gdouble m_fScreenLongitude;
	maprect_t m_rWorldBoundingBox;
	gint m_nWindowWidth;
	gint m_nWindowHeight;
} rendermetrics_t;

// SuffixTypes
#define SUFFIX_TYPE_SHORT	(0)
#define SUFFIX_TYPE_LONG		(1)

const gchar* map_road_suffix_itoa(gint nSuffixID, gint nSuffixType);
gboolean map_road_suffix_atoi(const gchar* pszSuffix, gint* pReturnSuffixID);

#include "db.h"

GtkWidget* map_create_canvas(void);

void map_set_zoomlevel(guint16 uZoomLevel);
guint16 map_get_zoomlevel(void);
guint32 map_get_zoomlevel_scale(void);

void map_set_redraw_needed(gboolean bNeeded);
gboolean map_is_redraw_needed(void);
guint32 map_get_scale(void);
//void map_draw(void* pDBConnection, cairo_t * cr);

void map_get_world_coordinates(float* pLongitude, float* pLatitude);
void map_get_world_coordinate_point(mappoint_t* pPoint);

void map_center_on_worldpoint(double fX, double fY);
void map_center_on_windowpoint(guint16 uX, guint16 uY);
void map_set_window_dimensions(guint16 uWidth, guint16 uHeight);

gboolean map_redraw_if_needed(void);

void map_set_view_dimensions(guint16 uWidth, guint16 uHeight);
void map_windowpoint_to_mappoint(screenpoint_t* pScreenPoint, mappoint_t* pMapPoint);


void map_draw(cairo_t *cr);

void map_get_render_metrics(rendermetrics_t* pMetrics);

gdouble map_distance_in_units_to_degrees(gdouble fDistance, gint nDistanceUnit);

#endif

--- NEW FILE: scenemanager.h ---
/***************************************************************************
 *            scenemanager.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

void scenemanager_init(void);
gboolean scenemanager_can_draw_label(const gchar* pszLabel);
void scenemanager_label_drawn(const gchar* pszLabel);
void scenemanager_clear(void);


--- NEW FILE: search.h ---
/***************************************************************************
 *            search.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
#ifndef _SEARCH_H
#define _SEARCH_H

#ifdef __cplusplus
extern "C"
{
#endif

void search_clean_string(gchar* p);

gboolean search_address_number_atoi(const gchar* pszText, gint* pnReturn);

#ifdef __cplusplus
}
#endif

#endif /* _SEARCH_H */

--- NEW FILE: search_location.h ---
/***************************************************************************
 *            search_location.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
#ifndef _SEARCH_LOCATION_H
#define _SEARCH_LOCATION_H

#ifdef __cplusplus
extern "C"
{
#endif

void search_location_execute(const gchar* pszSearch, gint nLocationSetID, gfloat fDistance, gint nDistanceUnit);

#ifdef __cplusplus
}
#endif

#endif /* _SEARCH_LOCATION_H */

--- NEW FILE: search_road.h ---
/***************************************************************************
 *            search_road.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
#ifndef _SEARCH_ROAD_H
#define _SEARCH_ROAD_H

#ifdef __cplusplus
extern "C"
{
#endif

void search_road_execute(const gchar* pszSentence);
	
#ifdef __cplusplus
}
#endif

#endif /* _SEARCH_ROAD_H */

--- NEW FILE: searchwindow.h ---
/***************************************************************************
 *            searchwindow.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
#ifndef _SEARCHWINDOW_H
#define _SEARCHWINDOW_H

#ifdef __cplusplus
extern "C"
{
#endif

#include <glade/glade.h>
#include "gpsclient.h"
	
void searchwindow_init(GladeXML* pGladeXML);

void searchwindow_add_result(gint nRoadID, const gchar* pszText, mappoint_t* pPoint);

void searchwindow_go_to_selected_result(void);

void searchwindow_clear_results(void);

/* Funky, auto-lookup glade signal handlers.

   XXX: Better would be to hook these up manually, remove these
   declarations, and make the functions static.
*/
void searchwindow_on_findbutton_clicked(GtkWidget *pWidget, gpointer* p);
void searchwindow_on_searchtypecombo_changed(GtkWidget *pWidget, gpointer* p);
void searchwindow_on_addressresultstreeview_row_activated(GtkWidget *pWidget, gpointer* p);
void searchwindow_on_gobutton_clicked(GtkWidget *pWidget, gpointer* p);

#ifdef __cplusplus
}
#endif

#endif /* _SEARCHWINDOW_H */

--- NEW FILE: util.h ---
/***************************************************************************
 *            util.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

#ifndef _UTIL_H_
#define _UTIL_H_

#include <gtk/gtk.h>

#define NUM_ELEMS(a) (sizeof(a) / sizeof(a[0]))

void util_random_color(void* pColor);

#if 0
#define TIMER_BEGIN(name, str)	GTimer* name = g_timer_new(); g_print("\n%s (%f)\n", str, g_timer_elapsed(name, NULL))
#define TIMER_SHOW(name, str)	g_print(" %s (%f)\n", str, g_timer_elapsed(name, NULL))
#define TIMER_END(name, str)	g_print("%s (%f)\n", str, g_timer_elapsed(name, NULL)); g_timer_destroy(name); name = NULL
#else
#define TIMER_BEGIN(name, str)
#define TIMER_SHOW(name, str)
#define TIMER_END(name, str)
#endif

#define	min(x,y)		((x)<(y)?(x):(y))
#define	max(x,y)		((x)>(y)?(x):(y))

#define is_even(x)		(((x) & 1) == 0)
#define is_odd(x)		(((x) & 1) == 1)

/* Funky, auto-lookup glade signal handlers.

   XXX: Better would be to hook these up manually, remove these
   declarations, and make the functions static.
*/
void util_close_parent_window(GtkWidget* pWidget, gpointer data);

#endif

--- NEW FILE: welcomewindow.h ---
/***************************************************************************
 *            welcomewindow.h
 *
 *  Copyright  2005  Ian McIntosh
 *  ian_mcintosh at linuxadvocate.org
 ****************************************************************************/

/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
#ifndef _WELCOMEWINDOW_H
#define _WELCOMEWINDOW_H

#ifdef __cplusplus
extern "C"
{
#endif

void welcomewindow_init(GladeXML* pGladeXML);
void welcomewindow_show(void);

/* Funky, auto-lookup glade signal handlers.

   XXX: Better would be to hook these up manually, remove these
   declarations, and make the functions static.
*/
void welcomewindow_on_url_clicked(GtkWidget* pButton, gpointer data);
void welcomewindow_on_okbutton_clicked(GtkWidget* pButton, gpointer data);

#ifdef __cplusplus
}
#endif

#endif /* _WELCOMEWINDOW_H */




More information about the cairo-commit mailing list