gfio: start of splitting up the source a bit

Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/gfio.h b/gfio.h
new file mode 100644
index 0000000..3b57204
--- /dev/null
+++ b/gfio.h
@@ -0,0 +1,152 @@
+#ifndef GFIO_H
+#define GFIO_H
+
+#include <gtk/gtk.h>
+
+struct probe_widget {
+	GtkWidget *hostname;
+	GtkWidget *os;
+	GtkWidget *arch;
+	GtkWidget *fio_ver;
+};
+
+struct multitext_widget {
+	GtkWidget *entry;
+	char **text;
+	unsigned int cur_text;
+	unsigned int max_text;
+};
+
+struct eta_widget {
+	GtkWidget *names;
+	struct multitext_widget iotype;
+	struct multitext_widget bs;
+	struct multitext_widget ioengine;
+	struct multitext_widget iodepth;
+	GtkWidget *jobs;
+	GtkWidget *files;
+	GtkWidget *read_bw;
+	GtkWidget *read_iops;
+	GtkWidget *cr_bw;
+	GtkWidget *cr_iops;
+	GtkWidget *write_bw;
+	GtkWidget *write_iops;
+	GtkWidget *cw_bw;
+	GtkWidget *cw_iops;
+};
+
+struct gfio_graphs {
+#define DRAWING_AREA_XDIM 1000
+#define DRAWING_AREA_YDIM 400
+	GtkWidget *drawing_area;
+	struct graph *iops_graph;
+	struct graph *bandwidth_graph;
+};
+
+/*
+ * Main window widgets and data
+ */
+struct gui {
+	GtkUIManager *uimanager;
+	GtkRecentManager *recentmanager;
+	GtkActionGroup *actiongroup;
+	guint recent_ui_id;
+	GtkWidget *menu;
+	GtkWidget *window;
+	GtkWidget *vbox;
+	GtkWidget *thread_status_pb;
+	GtkWidget *buttonbox;
+	GtkWidget *notebook;
+	GtkWidget *error_info_bar;
+	GtkWidget *error_label;
+	GtkListStore *log_model;
+	GtkWidget *log_tree;
+	GtkWidget *log_view;
+	struct gfio_graphs graphs;
+	struct probe_widget probe;
+	struct eta_widget eta;
+	pthread_t server_t;
+
+	pthread_t t;
+	int handler_running;
+
+	struct flist_head list;
+} main_ui;
+
+enum {
+	GE_STATE_NEW = 1,
+	GE_STATE_CONNECTED,
+	GE_STATE_JOB_SENT,
+	GE_STATE_JOB_STARTED,
+	GE_STATE_JOB_RUNNING,
+	GE_STATE_JOB_DONE,
+};
+
+enum {
+	GFIO_BUTTON_CONNECT = 0,
+	GFIO_BUTTON_SEND,
+	GFIO_BUTTON_START,
+	GFIO_BUTTON_NR,
+};
+
+/*
+ * Notebook entry
+ */
+struct gui_entry {
+	struct flist_head list;
+	struct gui *ui;
+
+	GtkWidget *vbox;
+	GtkWidget *job_notebook;
+	GtkWidget *thread_status_pb;
+	GtkWidget *buttonbox;
+	GtkWidget *button[GFIO_BUTTON_NR];
+	GtkWidget *notebook;
+	GtkWidget *error_info_bar;
+	GtkWidget *error_label;
+	GtkWidget *results_window;
+	GtkWidget *results_notebook;
+	GtkUIManager *results_uimanager;
+	GtkWidget *results_menu;
+	GtkWidget *disk_util_vbox;
+	GtkListStore *log_model;
+	GtkWidget *log_tree;
+	GtkWidget *log_view;
+	struct gfio_graphs graphs;
+	struct probe_widget probe;
+	struct eta_widget eta;
+	GtkWidget *page_label;
+	gint page_num;
+	unsigned int state;
+
+	struct graph *clat_graph;
+	struct graph *lat_bucket_graph;
+
+	struct gfio_client *client;
+	int nr_job_files;
+	char **job_files;
+};
+
+struct end_results {
+	struct group_run_stats gs;
+	struct thread_stat ts;
+};
+
+struct gfio_client {
+	struct gui_entry *ge;
+	struct fio_client *client;
+	GtkWidget *err_entry;
+	struct thread_options o;
+
+	struct end_results *results;
+	unsigned int nr_results;
+
+	struct cmd_du_pdu *du;
+	unsigned int nr_du;
+};
+
+#define ARRAYSIZE(x) (sizeof((x)) / (sizeof((x)[0])))
+
+#define GFIO_MIME	"text/fio"
+
+#endif