~ubuntu-branches/ubuntu/natty/xfce4-weather-plugin/natty-proposed

« back to all changes in this revision

Viewing changes to panel-plugin/weather-config.c

  • Committer: Bazaar Package Importer
  • Author(s): Yves-Alexis Perez
  • Date: 2009-06-24 08:37:55 UTC
  • mfrom: (0.2.1 upstream) (2.1.15 karmic)
  • Revision ID: james.westby@ubuntu.com-20090624083755-b8dhv7muoebp7au9
Tags: 0.7.0-1
* New upstream release.
* debian/control:
  - update standards version to 3.8.2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*  $Id: weather-config.c 2366 2007-01-15 19:10:23Z nick $
 
1
/*  $Id: weather-config.c 7609 2009-06-18 17:29:09Z colin $
2
2
 *
3
3
 *  Copyright (c) 2003-2007 Xfce Development Team
4
4
 * 
30
30
 
31
31
#include "weather-config.h"
32
32
#include "weather-search.h"
 
33
#include "weather-scrollbox.h"
33
34
 
34
35
#define OPTIONS_N 11
35
36
#define BORDER    8
176
177
  if (data->location_code)
177
178
    g_free (data->location_code);
178
179
 
 
180
  if (data->location_name)
 
181
    g_free (data->location_name);
 
182
 
179
183
  data->location_code =
180
184
    g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->txt_loc_code)));
181
185
 
 
186
  data->location_name =
 
187
    g_strdup (gtk_label_get_text (GTK_LABEL (dialog->txt_loc_name)));
 
188
 
182
189
  /* call labels_clear() here */
183
190
  if (data->labels && data->labels->len > 0)
184
191
    g_array_free (data->labels, TRUE);
205
212
      data->proxy_host = NULL;
206
213
    }
207
214
 
 
215
  data->animation_transitions = gtk_toggle_button_get_active(
 
216
        GTK_TOGGLE_BUTTON(dialog->chk_animate_transition));
 
217
 
 
218
  gtk_scrollbox_set_animate(GTK_SCROLLBOX(data->scrollbox), data->animation_transitions);
 
219
  
208
220
  if (!gtk_toggle_button_get_active
209
221
      (GTK_TOGGLE_BUTTON (dialog->chk_proxy_use)))
210
222
    data->proxy_fromenv = FALSE;
261
273
  return -1;
262
274
}
263
275
 
 
276
static void auto_locate_cb(const gchar *loc_name, const gchar *loc_code, gpointer user_data)
 
277
{
 
278
  xfceweather_dialog *dialog = (xfceweather_dialog *) user_data;
 
279
  
 
280
  if (loc_code && loc_name) {
 
281
    gtk_entry_set_text (GTK_ENTRY (dialog->txt_loc_code), loc_code);
 
282
    gtk_label_set_text (GTK_LABEL (dialog->txt_loc_name), loc_name);
 
283
    gtk_widget_set_sensitive(dialog->txt_loc_name, TRUE);
 
284
#if GTK_CHECK_VERSION(2,12,0)
 
285
    gtk_widget_set_tooltip_text(dialog->txt_loc_name,loc_name);
 
286
#endif
 
287
  } else {
 
288
    gtk_entry_set_text (GTK_ENTRY (dialog->txt_loc_code), "");
 
289
    gtk_label_set_text (GTK_LABEL (dialog->txt_loc_name), _("Unset"));
 
290
    gtk_widget_set_sensitive(dialog->txt_loc_name, TRUE);
 
291
  }
 
292
}
264
293
 
 
294
static void start_auto_locate(xfceweather_dialog *dialog)
 
295
{
 
296
  gtk_widget_set_sensitive(dialog->txt_loc_name, FALSE);
 
297
  gtk_label_set_text (GTK_LABEL (dialog->txt_loc_name), _("Detecting..."));
 
298
  weather_search_by_ip(dialog->wd->proxy_host, dialog->wd->proxy_port,
 
299
        auto_locate_cb, dialog);
 
300
}
265
301
 
266
302
static gboolean
267
303
cb_findlocation (GtkButton *button,
274
310
                                  dialog->wd->proxy_host,
275
311
                                  dialog->wd->proxy_port);
276
312
 
277
 
  if (run_search_dialog (sdialog))
 
313
  if (run_search_dialog (sdialog)) {
278
314
    gtk_entry_set_text (GTK_ENTRY (dialog->txt_loc_code), sdialog->result);
279
 
 
 
315
    gtk_label_set_text (GTK_LABEL (dialog->txt_loc_name), sdialog->result_name);
 
316
    gtk_widget_set_sensitive(dialog->txt_loc_name, TRUE);
 
317
#if GTK_CHECK_VERSION(2,12,0)
 
318
    gtk_widget_set_tooltip_text(dialog->txt_loc_name,sdialog->result_name);
 
319
#endif
 
320
  }
280
321
  free_search_dialog (sdialog);
281
322
 
282
323
  return FALSE;
329
370
  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
330
371
 
331
372
 
332
 
  label = gtk_label_new (_("Location code:"));
 
373
  label = gtk_label_new (_("Location:"));
333
374
  dialog->txt_loc_code = gtk_entry_new ();
 
375
  dialog->txt_loc_name = gtk_label_new ("");
334
376
 
335
377
  gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
336
 
 
 
378
  gtk_misc_set_alignment (GTK_MISC (dialog->txt_loc_name), 0, 0.5);
 
379
  
 
380
#if GTK_CHECK_VERSION(2,12,0)
 
381
  gtk_label_set_ellipsize (GTK_LABEL(dialog->txt_loc_name), PANGO_ELLIPSIZE_END);
 
382
#endif  
337
383
  if (dialog->wd->location_code != NULL)
338
384
    gtk_entry_set_text (GTK_ENTRY (dialog->txt_loc_code),
339
385
                        dialog->wd->location_code);
 
386
 
 
387
  if (dialog->wd->location_name != NULL)
 
388
    gtk_label_set_text (GTK_LABEL (dialog->txt_loc_name),
 
389
                        dialog->wd->location_name);
 
390
  else if (dialog->wd->weatherdata && 
 
391
           get_data (dialog->wd->weatherdata, DNAM) != NULL &&
 
392
           strlen (get_data (dialog->wd->weatherdata, DNAM)) > 1)  
 
393
    gtk_label_set_text (GTK_LABEL (dialog->txt_loc_name),
 
394
                        get_data (dialog->wd->weatherdata, DNAM));
 
395
  else
 
396
    gtk_label_set_text (GTK_LABEL (dialog->txt_loc_name),
 
397
                        dialog->wd->location_code);
 
398
 
 
399
#if GTK_CHECK_VERSION(2,12,0)
 
400
  gtk_widget_set_tooltip_text(dialog->txt_loc_name,
 
401
        gtk_label_get_text(GTK_LABEL(dialog->txt_loc_name)));
 
402
#endif
 
403
 
 
404
  if (dialog->wd->location_code == NULL) {
 
405
    start_auto_locate(dialog);
 
406
  }
340
407
  gtk_size_group_add_widget (sg, label);
341
408
 
342
 
  button = gtk_button_new ();
 
409
  button = gtk_button_new_with_label(_("Change..."));
343
410
  image = gtk_image_new_from_stock (GTK_STOCK_FIND, GTK_ICON_SIZE_BUTTON);
344
 
  gtk_container_add (GTK_CONTAINER (button), image);
 
411
  gtk_button_set_image (GTK_BUTTON (button), image);
345
412
  g_signal_connect (G_OBJECT (button), "clicked",
346
413
                    G_CALLBACK (cb_findlocation), dialog);
347
414
 
348
415
  hbox = gtk_hbox_new (FALSE, BORDER);
349
416
  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
350
 
  gtk_box_pack_start (GTK_BOX (hbox), dialog->txt_loc_code, TRUE, TRUE, 0);
 
417
  gtk_box_pack_start (GTK_BOX (hbox), dialog->txt_loc_name, TRUE, TRUE, 0);
351
418
  gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
352
419
  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
353
420
 
475
542
  g_signal_connect (G_OBJECT (button_del), "clicked",
476
543
                    G_CALLBACK (cb_deloption), dialog);
477
544
 
 
545
 
 
546
  
 
547
  dialog->chk_animate_transition =
 
548
    gtk_check_button_new_with_label (_("Animate transitions between labels"));
 
549
  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
 
550
         (dialog->chk_animate_transition), dialog->wd->animation_transitions);
 
551
  gtk_box_pack_start (GTK_BOX (vbox), dialog->chk_animate_transition, FALSE, FALSE, 0);
 
552
 
478
553
  gtk_widget_show_all (vbox);
479
554
 
480
555
  return dialog;