1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <assert.h>
#include <gtk/gtk.h>
#include <experiment-reader.h>
#include "gtk-experiment-navigator.h"
static void gtk_experiment_navigator_class_init(GtkExperimentNavigatorClass *klass);
static void gtk_experiment_navigator_init(GtkExperimentNavigator *klass);
static inline void select_time(GtkExperimentNavigator *navi, gint64 selected_time);
enum {
TIME_SELECTED_SIGNAL,
LAST_SIGNAL
};
static guint gtk_experiment_navigator_signals[LAST_SIGNAL] = {0};
enum {
COL_SECTION_NAME,
COL_TIME,
NUM_COLS
};
GType
gtk_experiment_navigator_get_type(void)
{
static GType type = 0;
if (!type) {
/* FIXME: destructor needed */
const GTypeInfo info = {
sizeof(GtkExperimentNavigatorClass),
NULL, /* base_init */
NULL, /* base_finalize */
(GClassInitFunc)gtk_experiment_navigator_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof(GtkExperimentNavigator),
0, /* n_preallocs */
(GInstanceInitFunc)gtk_experiment_navigator_init,
};
type = g_type_register_static(GTK_TYPE_TREE_VIEW,
"GtkExperimentNavigator", &info, 0);
}
return type;
}
static void
gtk_experiment_navigator_class_init(GtkExperimentNavigatorClass *klass)
{
gtk_experiment_navigator_signals[TIME_SELECTED_SIGNAL] =
g_signal_new("time-selected",
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET(GtkExperimentNavigatorClass, time_selected),
NULL, NULL,
g_cclosure_marshal_VOID__LONG, G_TYPE_NONE,
1, G_TYPE_INT64);
}
static void
gtk_experiment_navigator_init(GtkExperimentNavigator *klass)
{
GtkTreeView *view = GTK_TREE_VIEW(klass);
/* TODO */
}
static inline void
select_time(GtkExperimentNavigator *navi, gint64 selected_time)
{
g_signal_emit(navi, gtk_experiment_navigator_signals[TIME_SELECTED_SIGNAL], 0,
selected_time);
}
/*
* API
*/
GtkWidget *
gtk_experiment_navigator_new(void)
{
return GTK_WIDGET(g_object_new(GTK_TYPE_EXPERIMENT_NAVIGATOR, NULL));
}
gboolean
gtk_experiment_navigator_load(GtkExperimentNavigator *navi,
ExperimentReader *exp)
{
/* TODO */
return TRUE;
}
gboolean
gtk_experiment_navigator_load_filename(GtkExperimentNavigator *navi,
const gchar *exp)
{
/* TODO */
return TRUE;
}
|