subsurface/display-gtk.h
Dirk Hohndel 671f6544ac Split reading/writing preferences into OS specific files
This adds tested code for Linux and Mac OS, implementing the api that
Linus suggested.

The Windows code was moved into its own file, but hasn't even been compile
tested, yet.

In order to have just one interface to set or get a preference value we
encode TRUE as (void *) 1 and FALSE as NULL. This works consistently on
all platforms and regardless of whether we have 32 or 64 bit.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2011-11-24 10:12:40 -08:00

63 lines
1.7 KiB
C

#ifndef DISPLAY_GTK_H
#define DISPLAY_GTK_H
#include <gtk/gtk.h>
#include <gdk/gdk.h>
extern GtkWidget *main_window;
/* we want a progress bar as part of the device_data_t - let's abstract this out */
typedef struct {
GtkWidget *bar;
} progressbar_t;
typedef struct {
gboolean cylinder;
gboolean temperature;
gboolean nitrox;
gboolean sac;
gboolean otu;
} visible_cols_t;
typedef enum {
PREF_BOOL,
PREF_STRING
} pref_type_t;
#define BOOL_TO_PTR(_cond) ((_cond) ? (void *)1 : NULL)
#define PTR_TO_BOOL(_ptr) ((_ptr) != NULL)
extern void subsurface_open_conf(void);
extern void subsurface_set_conf(char *name, pref_type_t type, const void *value);
extern const void *subsurface_get_conf(char *name, pref_type_t type);
extern void subsurface_close_conf(void);
extern visible_cols_t visible_cols;
extern const char *divelist_font;
extern void set_divelist_font(const char *);
extern void import_dialog(GtkWidget *, gpointer);
extern void report_error(GError* error);
extern int process_ui_events(void);
extern void update_progressbar(progressbar_t *progress, double value);
extern GtkWidget *dive_profile_widget(void);
extern GtkWidget *dive_info_frame(void);
extern GtkWidget *extended_dive_info_widget(void);
extern GtkWidget *equipment_widget(void);
extern GtkWidget *stats_widget(void);
extern GtkWidget *cylinder_list_widget(void);
extern GtkWidget *dive_list_create(void);
typedef void (*data_func_t)(GtkTreeViewColumn *col,
GtkCellRenderer *renderer,
GtkTreeModel *model,
GtkTreeIter *iter,
gpointer data);
extern GtkTreeViewColumn *tree_view_column(GtkWidget *tree_view, int index, const char *title,
data_func_t data_func, PangoAlignment align, gboolean visible);
#endif