Esempio n. 1
0
void dt_accel_register_slider_iop(dt_iop_module_so_t *so, gboolean local,
                                  const gchar *path)
{
  gchar increase_path[256];
  gchar decrease_path[256];
  gchar reset_path[256];
  gchar edit_path[256];
  gchar increase_path_trans[256];
  gchar decrease_path_trans[256];
  gchar reset_path_trans[256];
  gchar edit_path_trans[256];

  char *paths[] = {increase_path, decrease_path, reset_path, edit_path};
  char *paths_trans[] = {increase_path_trans, decrease_path_trans,
                         reset_path_trans, edit_path_trans
                        };

  int i = 0;
  dt_accel_t *accel = NULL;

  dt_accel_paths_slider_iop(paths, 256, so->op, path);
  dt_accel_paths_slider_iop_translated(paths_trans, 256, so, path);

  for(i = 0; i < 4; i++)
  {
    gtk_accel_map_add_entry(paths[i], 0, 0);
    accel = (dt_accel_t*)malloc(sizeof(dt_accel_t));

    strcpy(accel->path, paths[i]);
    strcpy(accel->translated_path, paths_trans[i]);
    strcpy(accel->module, so->op);
    accel->local = local;
    accel->views = DT_VIEW_DARKROOM;

    darktable.control->accelerator_list =
      g_slist_prepend(darktable.control->accelerator_list, accel);
  }
}
Esempio n. 2
0
void dt_accel_connect_slider_iop(dt_iop_module_t *module, const gchar *path,
                                 GtkWidget *slider)
{
  // just make this callback safe for bauhaus sliders for now:
  // TODO: implement it for these widgets, too!
  // (we check for their inheritance from gtk drawing area, that's simpler)
  if(GTK_IS_DRAWING_AREA(slider)) return;
  gchar increase_path[256];
  gchar decrease_path[256];
  gchar reset_path[256];
  gchar edit_path[256];
  dt_accel_t *accel = NULL;
  GClosure *closure;
  char *paths[] = {increase_path, decrease_path, reset_path, edit_path};
  dt_accel_paths_slider_iop(paths, 256, module->op, path);

  closure =  g_cclosure_new(G_CALLBACK(slider_increase_callback),
                            (gpointer)slider, NULL);
  accel = _lookup_accel(increase_path);

  if (accel)
    accel->closure = closure;

  if(accel && accel->local)
  {
    _connect_local_accel(module, accel);
  }
  else
  {
    gtk_accel_group_connect_by_path(darktable.control->accelerators,
                                    increase_path, closure);
    module->accel_closures = g_slist_prepend(module->accel_closures, accel);
  }

  closure = g_cclosure_new(G_CALLBACK(slider_decrease_callback),
                           (gpointer)slider, NULL);
  accel = _lookup_accel(decrease_path);

  if (accel)
    accel->closure = closure;

  if(accel && accel->local)
  {
    _connect_local_accel(module, accel);
  }
  else
  {
    gtk_accel_group_connect_by_path(darktable.control->accelerators,
                                    decrease_path, closure);
    module->accel_closures = g_slist_prepend(module->accel_closures, accel);
  }

  closure = g_cclosure_new(G_CALLBACK(slider_reset_callback),
                           (gpointer)slider, NULL);
  accel = _lookup_accel(reset_path);

  if (accel)
    accel->closure = closure;

  if(accel && accel->local)
  {
    _connect_local_accel(module, accel);
  }
  else
  {
    gtk_accel_group_connect_by_path(darktable.control->accelerators,
                                    reset_path, closure);
    module->accel_closures = g_slist_prepend(module->accel_closures, accel);
  }

  closure = g_cclosure_new(G_CALLBACK(slider_edit_callback),
                           (gpointer)slider, NULL);
  accel = _lookup_accel(edit_path);

  if (accel)
    accel->closure = closure;

  if(accel && accel->local)
  {
    _connect_local_accel(module, accel);
  }
  else
  {
    gtk_accel_group_connect_by_path(darktable.control->accelerators,
                                    edit_path, closure);
    module->accel_closures = g_slist_prepend(module->accel_closures, accel);
  }
}
void dt_accel_connect_slider_iop(dt_iop_module_t *module, const gchar *path,
                                 GtkWidget *slider)
{
  gchar increase_path[256];
  gchar decrease_path[256];
  gchar reset_path[256];
  gchar edit_path[256];
  dt_accel_t *accel = NULL;
  GClosure *closure;
  char *paths[] = {increase_path, decrease_path, reset_path, edit_path};
  dt_accel_paths_slider_iop(paths, 256, module->op, path);

  if (DT_IS_BAUHAUS_WIDGET(slider)) {
    closure = g_cclosure_new(G_CALLBACK(bauhaus_slider_increase_callback),
                             (gpointer)slider, NULL);

  } else {
    closure = g_cclosure_new(G_CALLBACK(slider_increase_callback),
                             (gpointer)slider, NULL);
  }

  accel = _lookup_accel(increase_path);

  if (accel)
    accel->closure = closure;

  if(accel && accel->local)
  {
    _connect_local_accel(module, accel);
  }
  else
  {
    gtk_accel_group_connect_by_path(darktable.control->accelerators,
                                    increase_path, closure);
    module->accel_closures = g_slist_prepend(module->accel_closures, accel);
  }

  if (DT_IS_BAUHAUS_WIDGET(slider)) {
    closure = g_cclosure_new(G_CALLBACK(bauhaus_slider_decrease_callback),
                             (gpointer)slider, NULL);
  } else {
    closure = g_cclosure_new(G_CALLBACK(slider_decrease_callback),
                             (gpointer)slider, NULL);
  }

  accel = _lookup_accel(decrease_path);

  if (accel)
    accel->closure = closure;

  if(accel && accel->local)
  {
    _connect_local_accel(module, accel);
  }
  else
  {
    gtk_accel_group_connect_by_path(darktable.control->accelerators,
                                    decrease_path, closure);
    module->accel_closures = g_slist_prepend(module->accel_closures, accel);
  }

  if (DT_IS_BAUHAUS_WIDGET(slider)) {
    closure = g_cclosure_new(G_CALLBACK(bauhaus_slider_reset_callback),
                             (gpointer)slider, NULL);
  } else {
    closure = g_cclosure_new(G_CALLBACK(slider_reset_callback),
                             (gpointer)slider, NULL);
  }

  accel = _lookup_accel(reset_path);

  if (accel)
    accel->closure = closure;

  if(accel && accel->local)
  {
    _connect_local_accel(module, accel);
  }
  else
  {
    gtk_accel_group_connect_by_path(darktable.control->accelerators,
                                    reset_path, closure);
    module->accel_closures = g_slist_prepend(module->accel_closures, accel);
  }

  if (DT_IS_BAUHAUS_WIDGET(slider)) {
    closure = g_cclosure_new(G_CALLBACK(bauhaus_slider_edit_callback),
                           (gpointer)slider, NULL);
  } else {
    closure = g_cclosure_new(G_CALLBACK(slider_edit_callback),
                             (gpointer)slider, NULL);
  }

  accel = _lookup_accel(edit_path);

  if (accel)
    accel->closure = closure;

  if(accel && accel->local)
  {
    _connect_local_accel(module, accel);
  }
  else
  {
    gtk_accel_group_connect_by_path(darktable.control->accelerators,
                                    edit_path, closure);
    module->accel_closures = g_slist_prepend(module->accel_closures, accel);
  }
}