event->keyval, event->state);
GObject *action = aweather_gui_get_object(self, "fullscreen");
gboolean full = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action));
- if (event->keyval == GDK_q)
+ if (event->keyval == GDK_KEY_q)
gtk_widget_destroy(GTK_WIDGET(self));
- else if (event->keyval == GDK_F11 ||
- (event->keyval == GDK_Escape && full))
+ else if (event->keyval == GDK_KEY_F11 ||
+ (event->keyval == GDK_KEY_Escape && full))
gtk_action_activate(GTK_ACTION(action));
- else if (event->keyval == GDK_r && event->state & GDK_CONTROL_MASK)
+ else if (event->keyval == GDK_KEY_r && event->state & GDK_CONTROL_MASK)
grits_viewer_refresh(self->viewer);
- else if (event->keyval == GDK_Tab || event->keyval == GDK_ISO_Left_Tab) {
+ else if (event->keyval == GDK_KEY_Tab || event->keyval == GDK_KEY_ISO_Left_Tab) {
GtkNotebook *tabs = GTK_NOTEBOOK(aweather_gui_get_widget(self, "main_tabs"));
gint num_tabs = gtk_notebook_get_n_pages(tabs);
gint cur_tab = gtk_notebook_get_current_page(tabs);
/* Init */
GError *error = NULL;
- gdk_threads_init();
+ //gdk_threads_init();
if (!gtk_init_with_args(&argc, &argv, "aweather", entries, NULL, &error)) {
g_print("%s\n", error->message);
g_error_free(error);
}
/* Use external handler for link buttons */
- gtk_link_button_set_uri_hook((GtkLinkButtonUriFunc)xdg_open, NULL, NULL);
- gtk_about_dialog_set_url_hook((GtkAboutDialogActivateLinkFunc)xdg_open, NULL, NULL);
- gtk_about_dialog_set_email_hook((GtkAboutDialogActivateLinkFunc)xdg_open, NULL, NULL);
+ //gtk_link_button_set_uri_hook((GtkLinkButtonUriFunc)xdg_open, NULL, NULL);
+ //gtk_about_dialog_set_url_hook((GtkAboutDialogActivateLinkFunc)xdg_open, NULL, NULL);
+ //gtk_about_dialog_set_email_hook((GtkAboutDialogActivateLinkFunc)xdg_open, NULL, NULL);
+ (void)xdg_open;
/* Setup debug level for aweather_gui_new */
g_log_set_handler(NULL, G_LOG_LEVEL_MASK, log_func, NULL);
log_levels = int2log(opt_debug >= 0 ? opt_debug : debug);
/* Set up AWeather */
- gdk_threads_enter();
+ //gdk_threads_enter();
/* Pre-load some types for gtkbuilder */
GRITS_TYPE_OPENGL;
AWEATHER_TYPE_GUI;
set_toggle_action(gui, "fullscreen", fullscreen); // Resest widget hiding
setup_mac(gui); // done after show_all
gtk_main();
- gdk_threads_leave();
- gdk_display_close(gdk_display_get_default());
+ //gdk_threads_leave();
+ //gdk_display_close(gdk_display_get_default());
return 0;
}
g_free(alert_str);
GtkWidget *align = gtk_alignment_new(0, 0, 1, 1);
- GtkWidget *box = gtk_vbox_new(FALSE, 10);
+ GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10);
gtk_alignment_set_padding(GTK_ALIGNMENT(align), 10, 10, 10, 10);
gtk_container_add(GTK_CONTAINER(align), box);
gtk_box_pack_start(GTK_BOX(box), title, FALSE, FALSE, 0);
/* Init helpers */
static GtkWidget *_make_config(GritsPluginAlert *alert)
{
- GtkWidget *config = gtk_vbox_new(FALSE, 0);
+ GtkWidget *config = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
/* Setup tools area */
- GtkWidget *tools = gtk_hbox_new(FALSE, 10);
+ GtkWidget *tools = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10);
GtkWidget *updated = gtk_label_new(" Loading...");
GtkWidget *storm_based = gtk_toggle_button_new_with_label("Storm based");
GtkWidget *county_based = gtk_toggle_button_new_with_label("County based");
gchar *labels[] = {"<b>Warnings</b>", "<b>Watches</b>",
"<b>Advisories</b>", "<b>Other</b>"};
gchar *keys[] = {"warning", "watch", "advisory", "other"};
- GtkWidget *alerts = gtk_hbox_new(FALSE, 10);
+ GtkWidget *alerts = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10);
for (int i = 0; i < G_N_ELEMENTS(labels); i++) {
GtkWidget *frame = gtk_frame_new(labels[i]);
GtkWidget *table = gtk_table_new(1, 1, TRUE);
return TRUE;
}
-static gboolean _set_details_uri(GtkWidget *notebook, GtkNotebookPage *_,
+static gboolean _set_details_uri(GtkWidget *notebook, GtkWidget *page,
guint num, GtkWidget *button)
{
g_debug("_set_details_uri");
- GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), num);
AlertMsg *msg = g_object_get_data(G_OBJECT(page), "msg");
gtk_link_button_set_uri(GTK_LINK_BUTTON(button), msg->link);
return FALSE;
gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
gtk_frame_set_shadow_type(GTK_FRAME(gps_control_frame),
GTK_SHADOW_NONE);
- GtkWidget *cbox = gtk_vbox_new(FALSE, 2);
+ GtkWidget *cbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 2);
gtk_container_add(GTK_CONTAINER(gps_control_frame), cbox);
gtk_box_pack_start(GTK_BOX(gbox), gps_control_frame, FALSE, FALSE, 0);
GtkWidget *label = gtk_frame_get_label_widget(GTK_FRAME(gps_log_frame));
gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
gtk_frame_set_shadow_type(GTK_FRAME(gps_log_frame), GTK_SHADOW_NONE);
- GtkWidget *lbox = gtk_vbox_new(FALSE, 2);
+ GtkWidget *lbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 2);
gtk_container_add(GTK_CONTAINER(gps_log_frame), lbox);
gtk_box_pack_start(GTK_BOX(gbox), gps_log_frame,
FALSE, FALSE, 0);
FALSE, FALSE, 0);
/* Set up filename entry box */
- GtkWidget *fbox = gtk_hbox_new(FALSE, 2);
+ GtkWidget *fbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 2);
GtkWidget *filename_label = gtk_label_new("Filename:");
gtk_box_pack_start(GTK_BOX(fbox), filename_label, FALSE, FALSE, 0);
gps->ui.gps_log_filename_entry = gtk_entry_new();
gtk_box_pack_start(GTK_BOX(lbox), fbox, FALSE, FALSE, 0);
/* set up gps log interval slider */
- GtkWidget *ubox = gtk_hbox_new(FALSE, 4);
+ GtkWidget *ubox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 4);
GtkWidget *interval_label = gtk_label_new("Update Interval:");
gtk_box_pack_start(GTK_BOX(ubox), interval_label, FALSE, FALSE, 0);
gps->ui.gps_log_interval_slider =
- gtk_hscale_new_with_range(1.0, 600.0, 30.0);
+ gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 1.0, 600.0, 30.0);
gtk_range_set_value(GTK_RANGE(gps->ui.gps_log_interval_slider),
GPS_LOG_DEFAULT_UPDATE_INTERVAL);
g_signal_connect(G_OBJECT(gps->ui.gps_log_interval_slider),
gtk_range_set_increments(
GTK_RANGE(gps->ui.gps_log_interval_slider),
10.0 /* step */, 30.0 /* page up/down */);
- gtk_range_set_update_policy(
- GTK_RANGE(gps->ui.gps_log_interval_slider),
- GTK_UPDATE_DELAYED);
+ //gtk_range_set_update_policy(
+ // GTK_RANGE(gps->ui.gps_log_interval_slider),
+ // GTK_UPDATE_DELAYED);
gtk_box_pack_start(GTK_BOX(ubox), gps->ui.gps_log_interval_slider,
TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(lbox), ubox, FALSE, FALSE, 0);
* GPSD interfaces *
*******************/
-static void process_gps(gpointer data, gint source, GdkInputCondition condition)
+static gboolean process_gps(GIOChannel *source, GIOCondition condition, gpointer data)
{
struct gps_data_t *gps_data = (struct gps_data_t *)data;
} else {
g_warning("GritsPluginGps: process_gps - gps_data == NULL.");
}
+ return TRUE;
}
static gint initialize_gpsd(char *server, gchar *port, struct gps_data_t *gps_data)
(void)gps_stream(gps_data, WATCH_ENABLE|WATCH_JSON, NULL);
g_debug("GritsPluginGps: initialize_gpsd - gpsd fd %u.", gps_data->gps_fd);
- return gdk_input_add(gps_data->gps_fd, GDK_INPUT_READ, process_gps, gps_data);
+ GIOChannel *channel = g_io_channel_unix_new(gps_data->gps_fd);
+ gint input_tag = g_io_add_watch(channel, G_IO_IN, process_gps, gps_data);
+ g_io_channel_unref(channel);
+ return input_tag;
}
{
g_debug("GritsPluginGps: gps_init");
- gps->config = gtk_hbox_new(FALSE, 15);
+ gps->config = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 15);
}
static void grits_plugin_gps_dispose(GObject *gobject)
gps->ui.gps_log_timeout_id = 0;
}
if (gps->input_tag) {
- gdk_input_remove(gps->input_tag);
+ g_source_remove(gps->input_tag);
gps->input_tag = 0;
}
if (gps->viewer) {
cols-1,cols, 0,1, GTK_FILL,GTK_FILL, 0,0);
}
- elev_box = gtk_hbox_new(TRUE, 0);
+ elev_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
+ gtk_box_set_homogeneous(GTK_BOX(elev_box), TRUE);
gtk_table_attach(GTK_TABLE(table), elev_box,
cols-1,cols, rows-1,rows, GTK_FILL,GTK_FILL, 0,0);
}
gtk_misc_set_alignment(GTK_MISC(row_label), 1, 0.5);
gtk_table_attach(GTK_TABLE(table), row_label,
0,1, rows,rows+1, GTK_FILL,GTK_FILL, 5,0);
- GtkWidget *scale = gtk_hscale_new_with_range(ISO_MIN, ISO_MAX, 0.5);
+ GtkWidget *scale = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, ISO_MIN, ISO_MAX, 0.5);
gtk_widget_set_size_request(scale, -1, 26);
gtk_scale_set_value_pos(GTK_SCALE(scale), GTK_POS_LEFT);
gtk_range_set_inverted(GTK_RANGE(scale), TRUE);
#include "level2.h"
#include "../aweather-location.h"
-static void _gtk_bin_set_child(GtkBin *bin, GtkWidget *new)
+static void aweather_bin_set_child(GtkBin *bin, GtkWidget *new)
{
GtkWidget *old = gtk_bin_get_child(bin);
if (old)
g_warning("RadarSite: update_end - %s", site->message);
const char *fmt = "http://forecast.weather.gov/product.php?site=NWS&product=FTM&format=TXT&issuedby=%s";
char *uri = g_strdup_printf(fmt, site->city->code+1);
- GtkWidget *box = gtk_vbox_new(TRUE, 0);
+ GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
GtkWidget *msg = gtk_label_new(site->message);
GtkWidget *btn = gtk_link_button_new_with_label(uri, "View Radar Status");
+ gtk_box_set_homogeneous(GTK_BOX(box), TRUE);
gtk_box_pack_start(GTK_BOX(box), msg, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(box), btn, TRUE, TRUE, 0);
- _gtk_bin_set_child(GTK_BIN(site->config), box);
+ aweather_bin_set_child(GTK_BIN(site->config), box);
g_free(uri);
} else {
- _gtk_bin_set_child(GTK_BIN(site->config),
+ aweather_bin_set_child(GTK_BIN(site->config),
aweather_level2_get_config(site->level2));
}
site->status = STATUS_LOADED;
/* Add a progress bar */
GtkWidget *progress = gtk_progress_bar_new();
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), "Loading...");
- _gtk_bin_set_child(GTK_BIN(site->config), progress);
+ aweather_bin_set_child(GTK_BIN(site->config), progress);
/* Remove old volume */
g_debug("RadarSite: update - remove - %s", site->city->code);
/* Check error status */
if (conus->message) {
g_warning("Conus: update_end - %s", conus->message);
- _gtk_bin_set_child(GTK_BIN(conus->config), gtk_label_new(conus->message));
+ aweather_bin_set_child(GTK_BIN(conus->config), gtk_label_new(conus->message));
goto out;
}
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(conus->path, &error);
if (!pixbuf || error) {
g_warning("Conus: update_end - error loading pixbuf: %s", conus->path);
- _gtk_bin_set_child(GTK_BIN(conus->config), gtk_label_new("Error loading pixbuf"));
+ aweather_bin_set_child(GTK_BIN(conus->config), gtk_label_new("Error loading pixbuf"));
g_remove(conus->path);
goto out;
}
/* Update GUI */
gchar *label = g_path_get_basename(conus->path);
- _gtk_bin_set_child(GTK_BIN(conus->config), gtk_label_new(label));
+ aweather_bin_set_child(GTK_BIN(conus->config), gtk_label_new(label));
grits_viewer_queue_draw(conus->viewer);
g_free(label);
/* Add a progress bar */
GtkWidget *progress = gtk_progress_bar_new();
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), "Loading...");
- _gtk_bin_set_child(GTK_BIN(conus->config), progress);
+ aweather_bin_set_child(GTK_BIN(conus->config), progress);
g_thread_new("conus-update-thread", _conus_update_thread, conus);
}
}
static void _update_hidden(GtkNotebook *notebook,
- GtkNotebookPage *page, guint page_num, gpointer viewer)
+ GtkWidget *page, guint page_num, gpointer viewer)
{
g_debug("GritsPluginRadar: _update_hidden - 0..%d = %d",
gtk_notebook_get_n_pages(notebook), page_num);