Changeset 4182
- Timestamp:
- 2012-04-13 12:53:15 (14 months ago)
- Location:
- trunk/jalv
- Files:
-
- 2 edited
-
src/jalv_gtk2.c (modified) (6 diffs)
-
wscript (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/jalv/src/jalv_gtk2.c
r4179 r4182 18 18 19 19 #include <gtk/gtk.h> 20 21 #include "lv2/lv2plug.in/ns/ext/port-props/port-props.h" 20 22 21 23 #include "jalv_internal.h" … … 249 251 } 250 252 253 static gboolean 254 log_slider_changed(GtkRange* range, gpointer data) 255 { 256 ((struct Port*)data)->control = expf(gtk_range_get_value(range)); 257 return FALSE; 258 } 259 251 260 static void 252 261 combo_changed(GtkComboBox* box, gpointer data) … … 279 288 return hval ? g_strdup(hval) : 280 289 g_strdup_printf("%0.*f", gtk_scale_get_digits(scale), value); 290 } 291 292 static gchar* 293 log_scale_format(GtkScale* scale, gdouble value, gpointer user_data) 294 { 295 return g_strdup_printf("%0.6g", exp(gtk_range_get_value(GTK_RANGE(scale)))); 281 296 } 282 297 … … 320 335 321 336 static GtkWidget* 337 make_log_slider(struct Port* port, GHashTable* points, 338 float min, float max, float deft) 339 { 340 float lmin = logf(min); 341 float lmax = logf(max); 342 float ldft = logf(deft); 343 GtkWidget* slider = gtk_hscale_new_with_range(lmin, lmax, 0.001); 344 gtk_scale_set_digits(GTK_SCALE(slider), 6); 345 gtk_range_set_value(GTK_RANGE(slider), ldft); 346 g_signal_connect(G_OBJECT(slider), 347 "format-value", G_CALLBACK(log_scale_format), points); 348 g_signal_connect(G_OBJECT(slider), 349 "value-changed", G_CALLBACK(log_slider_changed), port); 350 351 return slider; 352 } 353 354 static GtkWidget* 322 355 make_slider(struct Port* port, GHashTable* points, 323 356 bool is_int, float min, float max, float deft) … … 355 388 LilvNode* lv2_toggled = lilv_new_uri(jalv->world, LV2_CORE__toggled); 356 389 LilvNode* lv2_enum = lilv_new_uri(jalv->world, LV2_CORE__enumeration); 390 LilvNode* lv2_log = lilv_new_uri(jalv->world, LV2_PORT_PROPS__logarithmic); 357 391 LilvNode* rdfs_comment = lilv_new_uri(jalv->world, LILV_NS_RDFS "comment"); 358 392 GtkWidget* port_table = gtk_table_new(jalv->num_ports, 2, false); … … 390 424 391 425 /* Make control */ 392 GtkWidget* control = NULL; 426 GtkWidget* control = NULL; 427 bool is_integer = lilv_port_has_property( 428 jalv->plugin, port, lv2_integer); 393 429 if (lilv_port_has_property(jalv->plugin, port, lv2_toggled)) { 394 430 control = make_toggle(&jalv->ports[i], defaults[i]); 395 431 } else if (lilv_port_has_property(jalv->plugin, port, lv2_enum) 396 || (lilv_port_has_property(jalv->plugin, port, lv2_integer) 397 && points)) { 432 || (is_integer && points && 433 (g_hash_table_size(points) 434 == (unsigned)(maxs[i] - mins[i] + 1)))) { 398 435 control = make_combo(&jalv->ports[i], points, defaults[i]); 436 } else if (lilv_port_has_property(jalv->plugin, port, lv2_log)) { 437 control = make_log_slider(&jalv->ports[i], points, 438 mins[i], maxs[i], defaults[i]); 399 439 } else { 400 control = make_slider( 401 &jalv->ports[i], points, 402 lilv_port_has_property(jalv->plugin, port, lv2_integer), 403 mins[i], maxs[i], defaults[i]); 440 control = make_slider(&jalv->ports[i], points, is_integer, 441 mins[i], maxs[i], defaults[i]); 404 442 } 405 443 jalv->ports[i].widget = control; -
trunk/jalv/wscript
r4175 r4182 35 35 autowaf.display_header('Jalv Configuration') 36 36 37 autowaf.check_pkg(conf, 'lv2', atleast_version='0. 5.0', uselib_store='LV2')37 autowaf.check_pkg(conf, 'lv2', atleast_version='0.6.0', uselib_store='LV2') 38 38 autowaf.check_pkg(conf, 'lilv-0', uselib_store='LILV', 39 39 atleast_version='0.4.0', mandatory=True) … … 89 89 target = 'jalv.gtk', 90 90 includes = ['.', 'src'], 91 lib = ['pthread' ],91 lib = ['pthread', 'm'], 92 92 install_path = '${BINDIR}') 93 93 autowaf.use_lib(bld, obj, libs + ' GTK2')
Note: See TracChangeset
for help on using the changeset viewer.
