Пример #1
0
// http://stackoverflow.com/questions/4631388/transparent-floating-gtkentry
static gboolean
_lib_tagging_tag_key_press(GtkWidget *entry, GdkEventKey *event, dt_lib_module_t *self)
{
  dt_lib_tagging_t *d = (dt_lib_tagging_t*)self->data;
  switch(event->keyval)
  {
    case GDK_KEY_Escape:
      gtk_widget_destroy(d->floating_tag_window);
      return TRUE;
    case GDK_KEY_Tab:
      return TRUE;
    case GDK_KEY_Return:
    case GDK_KEY_KP_Enter:
    {
      const gchar *tag = gtk_entry_get_text(GTK_ENTRY(entry));
      /* attach tag to images  */
      if(d->floating_tag_imgid > 0) // just a single image
      {
        dt_tag_attach_string_list(tag, d->floating_tag_imgid);
        dt_image_synch_xmp(d->floating_tag_imgid);
      }
      else // all selected images
      {
        GList *selected_images = g_list_first(dt_collection_get_selected(darktable.collection, -1));
        if(selected_images)
        {
          GList *iter = selected_images;
          do
          {
            int imgid = GPOINTER_TO_INT(iter->data);
            dt_tag_attach_string_list(tag, imgid);
            dt_image_synch_xmp(imgid);
          }
          while( (iter=g_list_next(iter)) !=NULL );
        }
        g_list_free(selected_images);
      }
      update(self, 1);
      update(self, 0);
      gtk_widget_destroy(d->floating_tag_window);
      dt_control_signal_raise(darktable.signals, DT_SIGNAL_TAG_CHANGED);
      return TRUE;
    }
  }
  return FALSE; /* event not handled */
}
Пример #2
0
static void
entry_activated (GtkButton *button, gpointer user_data)
{
  dt_lib_module_t *self = (dt_lib_module_t *)user_data;
  dt_lib_tagging_t *d   = (dt_lib_tagging_t *)self->data;
  const gchar *tag = gtk_entry_get_text(d->entry);
  if(!tag || tag[0] == '\0') return;

  /** attach tag to selected images  */
  dt_tag_attach_string_list(tag, -1);
  dt_image_synch_xmp(-1);

  update(self, 1);
  update(self, 0);
  gtk_entry_set_text(d->entry, "");
}
Пример #3
0
static void
new_button_clicked (GtkButton *button, gpointer user_data)
{
  dt_lib_module_t *self = (dt_lib_module_t *)user_data;
  dt_lib_tagging_t *d   = (dt_lib_tagging_t *)self->data;
  const gchar *tag = gtk_entry_get_text(d->entry);

  /** attach tag to selected images  */
  dt_tag_attach_string_list(tag, -1);
  dt_image_synch_xmp(-1);

  update(self, 1);
  update(self, 0);

  /** clear input box */
  gtk_entry_set_text(d->entry, "");
}