Diff of /trunk/src/misc.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 243 by harbaum, Mon Dec 14 20:07:54 2009 UTC revision 249 by harbaum, Thu Jan 21 21:18:33 2010 UTC
# Line 1672  static void cb_map_set(GtkWidget *item, Line 1672  static void cb_map_set(GtkWidget *item,
1672  }  }
1673  #endif  #endif
1674    
1675    static void cb_clipboard_set(GtkWidget *item, gpointer data) {
1676      appdata_t *appdata = (appdata_t*)data;
1677    
1678      pos_t pos = goto_pos_get(item);
1679      if(!isnan(pos.lat) && !isnan(pos.lon)) {
1680        char lat[32], lon[32];
1681        pos_lat_str(lat, sizeof(lat), pos.lat);
1682        pos_lon_str(lon, sizeof(lon), pos.lon);
1683    
1684        char *str = g_strdup_printf("%s %s", lat, lon);
1685        gtk_clipboard_set_text(appdata->clipboard, str, -1);
1686        g_free(str);
1687      }
1688    }
1689    
1690  #ifndef PRESET_PICKER_DIALOG  #ifndef PRESET_PICKER_DIALOG
1691  static GtkWidget *goto_popup_menu_create(appdata_t *appdata,  static GtkWidget *goto_popup_menu_create(appdata_t *appdata,
1692                      GtkWidget *lat_entry, GtkWidget *lon_entry) {                      GtkWidget *lat_entry, GtkWidget *lon_entry) {
# Line 1686  static GtkWidget *goto_popup_menu_create Line 1701  static GtkWidget *goto_popup_menu_create
1701    menu_add(menu, appdata, icon_get_widget(ICON_POS, 24),    menu_add(menu, appdata, icon_get_widget(ICON_POS, 24),
1702             _("Maemo Mapper"), cb_mm_set, 0, lon_entry, lat_entry);             _("Maemo Mapper"), cb_mm_set, 0, lon_entry, lat_entry);
1703  #endif  #endif
1704    
1705      menu_add(menu, appdata, icon_get_widget(ICON_POS, 25),
1706               _("Clipboard"), cb_clipboard_set, 0, lon_entry, lat_entry);
1707    
1708    gtk_widget_show_all(menu);    gtk_widget_show_all(menu);
1709    
# Line 1731  static GtkWidget *goto_picker_create(app Line 1749  static GtkWidget *goto_picker_create(app
1749                      _("Maemo Mapper"), cb_mm_set, 0);                      _("Maemo Mapper"), cb_mm_set, 0);
1750  #endif  #endif
1751    
1752      preset_picker_add(store, appdata, icon_get(ICON_POS, 25),
1753                        _("Clipboard"), cb_clipboard_set, 0);
1754    
1755    gtk_tree_view_set_model(GTK_TREE_VIEW(view), GTK_TREE_MODEL(store));    gtk_tree_view_set_model(GTK_TREE_VIEW(view), GTK_TREE_MODEL(store));
1756    g_object_unref(store);    g_object_unref(store);
1757    
# Line 1760  static gint on_goto_button_press(GtkWidg Line 1781  static gint on_goto_button_press(GtkWidg
1781    
1782    if(event->type == GDK_BUTTON_PRESS) {    if(event->type == GDK_BUTTON_PRESS) {
1783    
 #if defined(ENABLE_MAEMO_MAPPER) && !defined(ENABLE_OSM_GPS_MAP)  
     /* only maemo mapper is being used */  
     pos_t pos = goto_pos_get(button);  
     if(!isnan(pos.lat) && !isnan(pos.lon))  
       dbus_mm_set_position(appdata, &pos);  
 #elif !defined(ENABLE_MAEMO_MAPPER) && defined(ENABLE_OSM_GPS_MAP)  
     /* only internal map is being used */  
     pos_t pos = goto_pos_get(button);  
     if(!isnan(pos.lat) && !isnan(pos.lon)) {  
       map(appdata);  
       osm_gps_map_set_center(OSM_GPS_MAP(appdata->map.context->widget),  
                              pos.lat, pos.lon);  
     }  
 #else  
   
1784      gpointer lat_entry = g_object_get_data(G_OBJECT(button), "lat_entry");      gpointer lat_entry = g_object_get_data(G_OBJECT(button), "lat_entry");
1785      g_assert(lat_entry);      g_assert(lat_entry);
1786      gpointer lon_entry = g_object_get_data(G_OBJECT(button), "lon_entry");      gpointer lon_entry = g_object_get_data(G_OBJECT(button), "lon_entry");
# Line 1807  static gint on_goto_button_press(GtkWidg Line 1813  static gint on_goto_button_press(GtkWidg
1813      gtk_dialog_run(GTK_DIALOG(dialog));      gtk_dialog_run(GTK_DIALOG(dialog));
1814      gtk_widget_destroy(dialog);      gtk_widget_destroy(dialog);
1815  #endif  #endif
   
 #endif  
1816    
1817      return TRUE;      return TRUE;
1818    }    }
# Line 2161  GtkWidget *export_file(char *sel_title, Line 2165  GtkWidget *export_file(char *sel_title,
2165  #endif  #endif
2166  }  }
2167    
2168    #ifdef FREMANTLE
2169    static int number_editor_get(GtkWidget *widget) {
2170      GtkWidget *entry = g_object_get_data(G_OBJECT(widget), "entry");
2171      g_assert(entry);
2172      const char *str = gtk_entry_get_text(GTK_ENTRY(entry));
2173      if(!str) return 0;
2174      return atoi(str);
2175    }
2176    
2177    static void number_editor_set(GtkWidget *widget, int num) {
2178      int min = (int)g_object_get_data(G_OBJECT(widget), "min");
2179      int max = (int)g_object_get_data(G_OBJECT(widget), "max");
2180    
2181      if(num < min) num = min;
2182      if(num > max) num = max;
2183    
2184      GtkWidget *btn_inc =
2185        (GtkWidget*)g_object_get_data(G_OBJECT(widget), "btn_inc");
2186      gtk_widget_set_sensitive(btn_inc, num < max);
2187    
2188      GtkWidget *btn_dec =
2189        (GtkWidget*)g_object_get_data(G_OBJECT(widget), "btn_dec");
2190      gtk_widget_set_sensitive(btn_dec, num > min);
2191    
2192      GtkWidget *entry = g_object_get_data(G_OBJECT(widget), "entry");
2193      g_assert(entry);
2194      char *str = g_strdup_printf("%d", num);
2195      gtk_entry_set_text(GTK_ENTRY(entry), str);
2196      g_free(str);
2197    }
2198    
2199    static void on_number_decrease(GtkWidget *widget, gpointer data) {
2200      number_editor_set(GTK_WIDGET(data),
2201        number_editor_get(GTK_WIDGET(data)) - 1);
2202    }
2203    
2204    static void on_number_increase(GtkWidget *widget, gpointer data) {
2205      number_editor_set(GTK_WIDGET(data),
2206        number_editor_get(GTK_WIDGET(data)) + 1);
2207    }
2208    
2209    static void on_number_changed(GtkWidget *widget, gpointer data) {
2210      number_editor_set(GTK_WIDGET(data),
2211        number_editor_get(GTK_WIDGET(data)));
2212    }
2213    #endif
2214    
2215    GtkWidget *number_editor_new(int current, int min, int max) {
2216    #ifndef USE_MAEMO
2217      GtkObject *adj = gtk_adjustment_new(current, min, max, 1, 10, 10);
2218      return gtk_spin_button_new(GTK_ADJUSTMENT(adj), 1, 0);
2219    #elif MAEMO_VERSION_MAJOR < 5
2220      GtkWidget *widget = hildon_number_editor_new(min, max);
2221      hildon_number_editor_set_value(HILDON_NUMBER_EDITOR(widget), current);
2222      return widget;
2223    #else
2224      GtkWidget *hbox = gtk_hbox_new(FALSE, 0);
2225      g_object_set_data(G_OBJECT(hbox), "min", (gpointer)min);
2226      g_object_set_data(G_OBJECT(hbox), "max", (gpointer)max);
2227    
2228      GtkWidget *btn_dec = button_new_with_label("  -  ");
2229      g_object_set_data(G_OBJECT(hbox), "btn_dec", btn_dec);
2230      gtk_signal_connect(GTK_OBJECT(btn_dec), "clicked",
2231                         (GtkSignalFunc)on_number_decrease, hbox);
2232      gtk_box_pack_start(GTK_BOX(hbox), btn_dec, FALSE, FALSE, 0);
2233    
2234      GtkWidget *entry = hildon_entry_new(HILDON_SIZE_AUTO);
2235      g_object_set_data(G_OBJECT(hbox), "entry", entry);
2236      g_signal_connect(G_OBJECT(entry), "changed",
2237                       G_CALLBACK(on_number_changed), hbox);
2238      gtk_entry_set_width_chars(GTK_ENTRY(entry), 2);
2239      hildon_gtk_entry_set_input_mode(GTK_ENTRY(entry),
2240                                      HILDON_GTK_INPUT_MODE_NUMERIC);
2241      gtk_box_pack_start_defaults(GTK_BOX(hbox), entry);
2242    
2243      GtkWidget *btn_inc = button_new_with_label("  +  ");
2244      g_object_set_data(G_OBJECT(hbox), "btn_inc", btn_inc);
2245      gtk_signal_connect(GTK_OBJECT(btn_inc), "clicked",
2246                         (GtkSignalFunc)on_number_increase, hbox);
2247      gtk_box_pack_start(GTK_BOX(hbox), btn_inc, FALSE, FALSE, 0);
2248    
2249      number_editor_set(hbox, current);
2250    
2251      return hbox;
2252    #endif
2253    }
2254    
2255    int number_editor_get_value(GtkWidget *widget) {
2256    #ifndef USE_MAEMO
2257      return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
2258    #elif MAEMO_VERSION_MAJOR < 5
2259      return hildon_number_editor_get_value(HILDON_NUMBER_EDITOR(widget));
2260    #else
2261      return number_editor_get(widget);
2262    #endif
2263    }

Legend:
Removed from v.243  
changed lines
  Added in v.249