+
+#ifndef __STLINK_GUI_H__
+#define __STLINK_GUI_H__
+
+#include <glib-object.h>
+
+#define STLINK_TYPE_GUI (stlink_gui_get_type ())
+#define STLINK_GUI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), STLINK_TYPE_GUI, STlinkGUI))
+#define STLINK_IS_GUI(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), STLINK_TYPE_GUI))
+#define STLINK_GUI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), STLINK_TYPE_GUI, STlinkGUIClass))
+#define STLINK_IS_GUI_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), STLINK_TYPE_GUI))
+#define STLINK_GUI_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), STLINK_TYPE_GUI, STlinkGUIlass))
+#define STLINK_GUI_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), STLINK_TYPE_GUI, STlinkGUIPrivate))
+
+typedef struct _STlinkGUI STlinkGUI;
+typedef struct _STlinkGUIClass STlinkGUIClass;
+typedef struct _STlinkGUIPrivate STlinkGUIPrivate;
+
+enum stlink_gui_pages_t {
+ PAGE_DEVMEM,
+ PAGE_FILEMEM
+};
+
+enum stlink_gui_dnd_targets_t {
+ TARGET_FILENAME,
+ TARGET_ROOTWIN
+};
+
+struct progress_t {
+ GtkProgressBar *bar;
+ guint timer;
+ gboolean activity_mode;
+ gdouble fraction;
+};
+
+struct mem_t {
+ guchar *memory;
+ gsize size;
+ guint32 base;
+};
+
+struct _STlinkGUI
+{
+ GObject parent_instance;
+
+ /*< private >*/
+ GtkWindow *window;
+ GtkTreeView *devmem_treeview;
+ GtkTreeView *filemem_treeview;
+ GtkSpinner *spinner;
+ GtkStatusbar *statusbar;
+ GtkInfoBar *infobar;
+ GtkLabel *infolabel;
+ GtkNotebook *notebook;
+ GtkFrame *device_frame;
+ GtkLabel *chip_id_label;
+ GtkLabel *core_id_label;
+ GtkLabel *flash_size_label;
+ GtkLabel *ram_size_label;
+ GtkBox *devmem_box;
+ GtkEntry *devmem_jmp_entry;
+ GtkBox *filemem_box;
+ GtkEntry *filemem_jmp_entry;
+ GtkToolButton *connect_button;
+ GtkToolButton *disconnect_button;
+ GtkToolButton *flash_button;
+ GtkToolButton *open_button;
+
+ /* flash dialog */
+ GtkDialog *flash_dialog;
+ GtkButton *flash_dialog_ok;
+ GtkButton *flash_dialog_cancel;
+ GtkEntry *flash_dialog_entry;
+
+ struct progress_t progress;
+ struct mem_t flash_mem;
+ struct mem_t file_mem;
+
+ gchar *error_message;
+ gchar *filename;
+ stlink_t *sl;
+};
+
+struct _STlinkGUIClass
+{
+ GObjectClass parent_class;
+
+ /* class members */
+};
+
+GType stlink_gui_get_type (void);
+
+#endif