Don't use hard coded path for knob image, use bundle-path from lv2 host
This commit is contained in:
parent
06769d6fd7
commit
d3cc0531bf
@ -50,11 +50,6 @@ target_link_libraries(drmr_ui ${LV2_LIBRARIES} ${GTK2_LIBRARIES} ${SNDFILE_LIBRA
|
|||||||
|
|
||||||
add_definitions ( -DPIC )
|
add_definitions ( -DPIC )
|
||||||
|
|
||||||
set_target_properties (drmr_ui
|
|
||||||
PROPERTIES
|
|
||||||
DEFINE_SYMBOL "INSTALL_DIR=\"${CMAKE_INSTALL_PREFIX}/${LV2_INSTALL_DIR}\""
|
|
||||||
)
|
|
||||||
|
|
||||||
if (NOT USE_NKNOB)
|
if (NOT USE_NKNOB)
|
||||||
set_target_properties (drmr_ui
|
set_target_properties (drmr_ui
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
@ -82,7 +77,7 @@ set_target_properties ( htest
|
|||||||
target_link_libraries(knobt ${LV2_LIBRARIES} ${GTK2_LIBRARIES} ${SNDFILE_LIBRARIES} ${SAMPLERATE_LIBRARIES} ${EXPAT_LIBRARIES} m)
|
target_link_libraries(knobt ${LV2_LIBRARIES} ${GTK2_LIBRARIES} ${SNDFILE_LIBRARIES} ${SAMPLERATE_LIBRARIES} ${EXPAT_LIBRARIES} m)
|
||||||
set_target_properties ( knobt
|
set_target_properties ( knobt
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
COMPILE_FLAGS "-D_TEST_N_KNOB -DINSTALL_DIR=\\\"${CMAKE_INSTALL_PREFIX}/${LV2_INSTALL_DIR}\\\""
|
COMPILE_FLAGS "-D_TEST_N_KNOB"
|
||||||
)
|
)
|
||||||
|
|
||||||
# config install
|
# config install
|
||||||
|
@ -40,6 +40,8 @@ typedef struct {
|
|||||||
GtkWidget** pan_sliders;
|
GtkWidget** pan_sliders;
|
||||||
float *gain_vals,*pan_vals;
|
float *gain_vals,*pan_vals;
|
||||||
|
|
||||||
|
gchar *bundle_path;
|
||||||
|
|
||||||
int cols;
|
int cols;
|
||||||
|
|
||||||
int samples;
|
int samples;
|
||||||
@ -101,6 +103,7 @@ static void fill_sample_table(DrMrUi* ui, int samples, char** names,GtkWidget**
|
|||||||
slide_expand = true;
|
slide_expand = true;
|
||||||
#else
|
#else
|
||||||
gain_slider = n_knob_new_with_range(0.0,GAIN_MIN,6.0,1.0);
|
gain_slider = n_knob_new_with_range(0.0,GAIN_MIN,6.0,1.0);
|
||||||
|
n_knob_set_load_prefix(N_KNOB(gain_slider),ui->bundle_path);
|
||||||
gtk_widget_set_has_tooltip(gain_slider,TRUE);
|
gtk_widget_set_has_tooltip(gain_slider,TRUE);
|
||||||
slide_expand = false;
|
slide_expand = false;
|
||||||
#endif
|
#endif
|
||||||
@ -119,6 +122,7 @@ static void fill_sample_table(DrMrUi* ui, int samples, char** names,GtkWidget**
|
|||||||
gtk_scale_add_mark(GTK_SCALE(pan_slider),0.0,GTK_POS_TOP,NULL);
|
gtk_scale_add_mark(GTK_SCALE(pan_slider),0.0,GTK_POS_TOP,NULL);
|
||||||
#else
|
#else
|
||||||
pan_slider = n_knob_new_with_range(0.0,-1.0,1.0,0.1);
|
pan_slider = n_knob_new_with_range(0.0,-1.0,1.0,0.1);
|
||||||
|
n_knob_set_load_prefix(N_KNOB(pan_slider),ui->bundle_path);
|
||||||
gtk_widget_set_has_tooltip(pan_slider,TRUE);
|
gtk_widget_set_has_tooltip(pan_slider,TRUE);
|
||||||
#endif
|
#endif
|
||||||
if (pan_sliders) pan_sliders[si] = pan_slider;
|
if (pan_sliders) pan_sliders[si] = pan_slider;
|
||||||
@ -326,6 +330,7 @@ instantiate(const LV2UI_Descriptor* descriptor,
|
|||||||
ui->drmr_widget = NULL;
|
ui->drmr_widget = NULL;
|
||||||
ui->curKit = -1;
|
ui->curKit = -1;
|
||||||
ui->samples = 0;
|
ui->samples = 0;
|
||||||
|
ui->bundle_path = g_strdup(bundle_path);
|
||||||
*widget = NULL;
|
*widget = NULL;
|
||||||
|
|
||||||
build_drmr_ui(ui);
|
build_drmr_ui(ui);
|
||||||
@ -359,6 +364,7 @@ static void cleanup(LV2UI_Handle handle) {
|
|||||||
gtk_widget_destroy(ui->drmr_widget);
|
gtk_widget_destroy(ui->drmr_widget);
|
||||||
if (ui->gain_sliders) free(ui->gain_sliders);
|
if (ui->gain_sliders) free(ui->gain_sliders);
|
||||||
if (ui->pan_sliders) free(ui->pan_sliders);
|
if (ui->pan_sliders) free(ui->pan_sliders);
|
||||||
|
g_free(ui->bundle_path);
|
||||||
free_kits(ui->kits);
|
free_kits(ui->kits);
|
||||||
free(ui);
|
free(ui);
|
||||||
}
|
}
|
||||||
|
25
nknob.c
25
nknob.c
@ -158,6 +158,7 @@ static void n_knob_init (NKnob *knob) {
|
|||||||
knob->saved_x = knob->saved_y = 0;
|
knob->saved_x = knob->saved_y = 0;
|
||||||
knob->size = KNOB_SIZE;
|
knob->size = KNOB_SIZE;
|
||||||
knob->pixbuf = NULL;
|
knob->pixbuf = NULL;
|
||||||
|
knob->load_prefix = NULL;
|
||||||
g_signal_connect(G_OBJECT(knob),"query-tooltip",G_CALLBACK(tooltip_callback),NULL);
|
g_signal_connect(G_OBJECT(knob),"query-tooltip",G_CALLBACK(tooltip_callback),NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,6 +205,14 @@ GtkWidget* n_knob_new_with_range (gdouble value, gdouble lower,
|
|||||||
return n_knob_new (adj);
|
return n_knob_new (adj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void n_knob_set_load_prefix(NKnob* knob, gchar* prefix) {
|
||||||
|
knob->load_prefix = g_strdup(prefix);
|
||||||
|
}
|
||||||
|
gchar* n_knob_get_load_prefix(NKnob* knob) {
|
||||||
|
return knob->load_prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void n_knob_destroy(GtkObject *object) {
|
static void n_knob_destroy(GtkObject *object) {
|
||||||
NKnob *knob;
|
NKnob *knob;
|
||||||
|
|
||||||
@ -213,6 +222,9 @@ static void n_knob_destroy(GtkObject *object) {
|
|||||||
knob = N_KNOB(object);
|
knob = N_KNOB(object);
|
||||||
knob->pixbuf = NULL;
|
knob->pixbuf = NULL;
|
||||||
|
|
||||||
|
if (knob->load_prefix) g_free(knob->load_prefix);
|
||||||
|
knob->load_prefix = NULL;
|
||||||
|
|
||||||
if (GTK_OBJECT_CLASS(parent_class)->destroy)
|
if (GTK_OBJECT_CLASS(parent_class)->destroy)
|
||||||
(*GTK_OBJECT_CLASS(parent_class)->destroy)(object);
|
(*GTK_OBJECT_CLASS(parent_class)->destroy)(object);
|
||||||
}
|
}
|
||||||
@ -244,8 +256,16 @@ static void n_knob_realize(GtkWidget *widget) {
|
|||||||
* set local pixbuf pointer to global
|
* set local pixbuf pointer to global
|
||||||
* set last pixbuf pointer to NULL */
|
* set last pixbuf pointer to NULL */
|
||||||
if(pixbuf[i] == NULL){
|
if(pixbuf[i] == NULL){
|
||||||
pixbuf[i] = gdk_pixbuf_new_from_file_at_size(INSTALL_DIR"/drmr.lv2/knob.png",
|
gchar* path;
|
||||||
52*knob->size,knob->size,&gerror);
|
if (knob->load_prefix)
|
||||||
|
path = g_build_path("/",knob->load_prefix,"knob.png",NULL);
|
||||||
|
else {
|
||||||
|
g_warning("Trying to show knob with no load prefix, looking only in cwd\n");
|
||||||
|
path = "knob.png";
|
||||||
|
}
|
||||||
|
pixbuf[i] = gdk_pixbuf_new_from_file_at_size(path,52*knob->size,knob->size,&gerror);
|
||||||
|
if (knob->load_prefix)
|
||||||
|
g_free(path);
|
||||||
knob->pixbuf = pixbuf[i];
|
knob->pixbuf = pixbuf[i];
|
||||||
pixbuf=g_realloc(pixbuf,sizeof(GdkPixbuf *) * (i+2));
|
pixbuf=g_realloc(pixbuf,sizeof(GdkPixbuf *) * (i+2));
|
||||||
pixbuf[i+1] = NULL;
|
pixbuf[i+1] = NULL;
|
||||||
@ -558,6 +578,7 @@ int main(int argc, char* argv[]) {
|
|||||||
|
|
||||||
/* knob */
|
/* knob */
|
||||||
knob = n_knob_new_with_range (-90, -90, 0, 1);
|
knob = n_knob_new_with_range (-90, -90, 0, 1);
|
||||||
|
n_knob_set_load_prefix(N_KNOB(knob),"../");
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), knob, TRUE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), knob, TRUE, FALSE, 0);
|
||||||
g_signal_connect (G_OBJECT (knob), "change-value",
|
g_signal_connect (G_OBJECT (knob), "change-value",
|
||||||
G_CALLBACK (changed_callback), NULL);
|
G_CALLBACK (changed_callback), NULL);
|
||||||
|
6
nknob.h
6
nknob.h
@ -52,6 +52,9 @@ typedef struct _NKnobClass NKnobClass;
|
|||||||
struct _NKnob {
|
struct _NKnob {
|
||||||
GtkRange range;
|
GtkRange range;
|
||||||
|
|
||||||
|
/* image prefix */
|
||||||
|
gchar *load_prefix;
|
||||||
|
|
||||||
/* State of widget (to do with user interaction) */
|
/* State of widget (to do with user interaction) */
|
||||||
guint8 state;
|
guint8 state;
|
||||||
gint saved_x, saved_y;
|
gint saved_x, saved_y;
|
||||||
@ -76,6 +79,9 @@ GtkWidget* n_knob_new_with_range (double value,
|
|||||||
double upper,
|
double upper,
|
||||||
double step);
|
double step);
|
||||||
|
|
||||||
|
void n_knob_set_load_prefix(NKnob* knob, gchar* prefix);
|
||||||
|
gchar* n_knob_get_load_prefix(NKnob* knob);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user