Adding upstream version 0.8.0.
[debian/lxpanel.git] / plugins / weather / weatherwidget.c
index 44328a9..3205bdd 100644 (file)
@@ -34,6 +34,8 @@
 #include <errno.h>
 #include <string.h>
 
+#include "gtk-compat.h"
+
 /* Private structure, property and signal definitions. */
 #define GTK_WEATHER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
                                       GTK_WEATHER_TYPE, GtkWeatherPrivate))
@@ -63,6 +65,7 @@ enum
   MAX_COLUMNS
 };
 
+#ifdef USE_STANDALONE
 struct _PopupMenuData
 {
   GtkWidget * menu;
@@ -70,6 +73,7 @@ struct _PopupMenuData
   GtkWidget * preferences_item;
   GtkWidget * quit_item;
 };
+#endif
 
 struct _PreferencesDialogData
 {
@@ -100,16 +104,15 @@ struct _ForecastThreadData
 
 struct _GtkWeatherPrivate
 {
-  /* Whether or not this widget is being used by itself */
-  gboolean standalone;
-
   /* Main Widget Box layout */
   GtkWidget * hbox;
   GtkWidget * image;
   GtkWidget * label;
 
   /* Menus and dialogs */
+#ifdef USE_STANDALONE
   PopupMenuData menu_data;
+#endif
   PreferencesDialogData preferences_data;
   GtkWidget * conditions_dialog;
 
@@ -161,7 +164,9 @@ static gboolean gtk_weather_change_location (GtkWidget * widget, GdkEventButton
 
 static void gtk_weather_auto_update_toggled (GtkWidget * widget);
 
+#ifdef USE_STANDALONE
 static void gtk_weather_create_popup_menu            (GtkWeather * weather);
+#endif
 static void gtk_weather_set_window_icon              (GtkWindow * window, gchar * icon_id);
 static void gtk_weather_show_location_progress_bar   (GtkWeather * weather);
 static void gtk_weather_show_location_list           (GtkWeather * weather, GList * list);
@@ -235,14 +240,10 @@ gtk_weather_get_type(void)
  * @return A new instance of this widget type.
  */
 GtkWidget *
-gtk_weather_new(gboolean standalone)
+gtk_weather_new(void)
 {
   GObject * object = g_object_new(gtk_weather_get_type(), NULL);
 
-  GtkWeatherPrivate * priv = GTK_WEATHER_GET_PRIVATE(GTK_WEATHER(object));
-
-  priv->standalone = standalone;
-
   return GTK_WIDGET(object);
 }
 
@@ -340,7 +341,9 @@ gtk_weather_init(GtkWeather * weather)
   gtk_container_set_border_width(GTK_CONTAINER(weather), 2);
 
   /* Popup menu */
+#ifdef USE_STANDALONE
   gtk_weather_create_popup_menu(weather);
+#endif
 
   priv->forecast_data.timerid = 0;
 
@@ -375,10 +378,12 @@ gtk_weather_destroy(GObject * object)
   freeLocation(priv->location);
   freeForecast(priv->forecast);
 
+#ifdef USE_STANDALONE
   if (priv->menu_data.menu && GTK_IS_WIDGET(priv->menu_data.menu))
     {
       gtk_widget_destroy(priv->menu_data.menu);
     }
+#endif
 
   if (priv->hbox && GTK_IS_WIDGET(priv->hbox))
     {
@@ -430,11 +435,7 @@ gtk_weather_size_allocate(GtkWidget * widget, GtkAllocation * allocation)
 
   gboolean weather_has_window = gtk_widget_get_has_window(widget);
 
-#if GTK_CHECK_VERSION(2, 20, 0)
   if (gtk_widget_get_realized(widget) && weather_has_window)
-#else
-  if (GTK_WIDGET_REALIZED(widget) && weather_has_window)
-#endif
     {
       gdk_window_move_resize(gtk_widget_get_window(widget),
                              allocation->x, 
@@ -511,7 +512,7 @@ gtk_weather_render(GtkWeather * weather)
                                             forecast->iTemperature_,
                                             forecast->units_.pcTemperature_);
 
-      gtk_label_set_text(GTK_LABEL(priv->label), temperature);
+      weather_set_label_text(GTK_WIDGET(weather), priv->label, temperature);
 
       //gtk_widget_show_all(priv->hbox);
 
@@ -532,9 +533,9 @@ gtk_weather_render(GtkWeather * weather)
                                    GTK_STOCK_DIALOG_ERROR, 
                                    GTK_ICON_SIZE_BUTTON);
         }
-      
-      gtk_label_set_text(GTK_LABEL(priv->label), 
-                         GTK_WEATHER_NOT_AVAILABLE_LABEL);
+
+      weather_set_label_text(GTK_WIDGET(weather), priv->label,
+                             GTK_WEATHER_NOT_AVAILABLE_LABEL);
     }
 
   /* update tooltip with proper data... */
@@ -719,21 +720,16 @@ gtk_weather_button_pressed(GtkWidget * widget, GdkEventButton * event)
 
   GtkWeatherPrivate * priv = GTK_WEATHER_GET_PRIVATE(GTK_WEATHER(widget));
 
+#ifdef USE_STANDALONE
   /* If right-clicked, show popup */
   if (event->button == 3 && (event->type == GDK_BUTTON_PRESS))
     {
-      if (priv->standalone)
-        {
-          gtk_weather_run_popup_menu(widget);
+      gtk_weather_run_popup_menu(widget);
 
-          return TRUE;
-        }
-      else
-        {
-          return FALSE;
-        }
+      return TRUE;
     }
-  else if (event->button == 1 && (event->type == GDK_BUTTON_PRESS))
+#endif
+  if (event->button == 1 && (event->type == GDK_BUTTON_PRESS))
     {
       if (priv->conditions_dialog)
         gtk_dialog_response(GTK_DIALOG(priv->conditions_dialog), GTK_RESPONSE_ACCEPT);
@@ -1046,6 +1042,7 @@ gtk_weather_run_error_dialog(GtkWindow * parent, gchar * error_msg)
     }
 }
 
+#ifdef USE_STANDALONE
 /**
  * Creates a pop-up menu.
  *
@@ -1108,6 +1105,7 @@ gtk_weather_create_popup_menu(GtkWeather * weather)
 
   gtk_widget_show_all(priv->menu_data.menu);
 }
+#endif
 
 /**
  * Callback for the preferences menu response.
@@ -1177,6 +1175,7 @@ gtk_weather_preferences_dialog_response(GtkDialog *dialog, gint response, gpoint
   priv->preferences_data.shown = FALSE;
 }
 
+#ifdef USE_STANDALONE
 /**
  * Shows the popup menu used for configuration.
  *
@@ -1187,16 +1186,9 @@ gtk_weather_run_popup_menu(GtkWidget * widget)
 {
   GtkWeatherPrivate * priv = GTK_WEATHER_GET_PRIVATE(GTK_WEATHER(widget));
 
-  LXW_LOG(LXW_DEBUG, "GtkWeather::popup_menu(%d)", priv->standalone);
+  LXW_LOG(LXW_DEBUG, "GtkWeather::popup_menu()");
 
-  if (priv->standalone)
-    {
-      gtk_widget_show(GTK_WIDGET(priv->menu_data.quit_item));
-    }
-  else
-    {
-      gtk_widget_hide(GTK_WIDGET(priv->menu_data.quit_item));
-    }
+  gtk_widget_show(GTK_WIDGET(priv->menu_data.quit_item));
 
   /* grey-out refresh, if no location is set */
   if (!priv->location)
@@ -1214,6 +1206,7 @@ gtk_weather_run_popup_menu(GtkWidget * widget)
                  gtk_get_current_event_time());
   
 }
+#endif
 
 /**
  * Creates the preferences dialog.
@@ -1418,6 +1411,7 @@ gtk_weather_create_preferences_dialog(GtkWidget * widget)
   return priv->preferences_data.dialog;
 }
 
+#ifdef USE_STANDALONE
 /**
  * Creates and shows the preferences dialog.
  *
@@ -1445,6 +1439,7 @@ gtk_weather_run_preferences_dialog(GtkWidget * widget)
 
   priv->preferences_data.shown = TRUE;
 }
+#endif
 
 /**
  * Creates and shows the preferences dialog window