コード例 #1
0
ファイル: gtkam-main.c プロジェクト: ndim/gtkam
static void
gtkam_main_update_sensitivity (GtkamMain *m)
{
    guint i, s;

    i = gtkam_list_count_all (GTKAM_LIST (m->priv->list));
    s = gtkam_list_count_selected (GTKAM_LIST (m->priv->list));

    gtk_widget_set_sensitive (
        gtk_ui_manager_get_widget (m->priv->ui_manager, "/ui/MainMenu/SelectMenu/SelectNone"),
        (s != 0));
    gtk_widget_set_sensitive (
        gtk_ui_manager_get_widget (m->priv->ui_manager, "/ui/MainMenu/FileMenu/DeletePhotos/DeleteSelected"),
        (s != 0));
    gtk_widget_set_sensitive (
        gtk_ui_manager_get_widget (m->priv->ui_manager, "/ui/MainMenu/FileMenu/SavePhotos/SaveSelected"),
        (s != 0));
    gtk_widget_set_sensitive (
        gtk_ui_manager_get_widget (m->priv->ui_manager, "/ui/MainMenu/FileMenu/DeletePhotos/DeleteAll"),
        (i != 0));
    gtk_widget_set_sensitive (
        gtk_ui_manager_get_widget (m->priv->ui_manager, "/ui/MainMenu/FileMenu/SavePhotos/SaveAll"),
        (i != 0));
    gtk_widget_set_sensitive (
        gtk_ui_manager_get_widget (m->priv->ui_manager, "/ui/MainMenu/SelectMenu/SelectAll"),
        (s != i));
    gtk_widget_set_sensitive (
        gtk_ui_manager_get_widget (m->priv->ui_manager, "/ui/MainMenu/SelectMenu/SelectInverse"),
        (i != 0));
}
コード例 #2
0
ファイル: gtkam-main.c プロジェクト: ndim/gtkam
static void
on_tree_file_added (GtkamTree *tree, GtkamTreeFileAddedData *data,
                    GtkamMain *m)
{
    if (gtkam_list_has_folder (GTKAM_LIST (m->priv->list), data->camera,
                               data->folder))
        gtkam_list_add_file (GTKAM_LIST (m->priv->list),
                             data->camera, data->folder, data->name);
}
コード例 #3
0
ファイル: gtkam-main.c プロジェクト: ndim/gtkam
static void
action_view_thumbnails (GtkAction *action, gpointer callback_data)
{
    GtkamMain *m = GTKAM_MAIN (callback_data);

    if (!m->priv->list)
        return;

    m->priv->view_thumbs = !m->priv->view_thumbs;

    if (m->priv->view_thumbs)
        gtkam_list_show_thumbnails (GTKAM_LIST (m->priv->list));
    else
        gtkam_list_hide_thumbnails (GTKAM_LIST (m->priv->list));
}
コード例 #4
0
static void
action_info (gpointer callback_data, guint callback_action, GtkWidget *widget)
{
	GtkamList *list = GTKAM_LIST (callback_data);
	GtkWidget *d;
	GtkamCamera *camera;
	gchar *folder;
	gchar *name;
	GtkamListInfoUpdatedData *data;
	
	camera = gtkam_list_get_camera_from_iter (list, &list->priv->iter);
	folder = gtkam_list_get_folder_from_iter (list, &list->priv->iter);
	name   = gtkam_list_get_name_from_iter   (list, &list->priv->iter);
	d = gtkam_info_new (camera, folder, name);
	g_signal_emit (G_OBJECT (list), signals[NEW_DIALOG], 0, d);
	g_object_unref (G_OBJECT (d));
	g_free (folder);
	g_free (name);
	data = g_new0 (GtkamListInfoUpdatedData, 1);
	data->list = list;
	data->iter = gtk_tree_iter_copy (&list->priv->iter);
	g_signal_connect (G_OBJECT (d), "info_updated",
			  G_CALLBACK (on_info_updated), data);
	g_signal_connect (G_OBJECT (d), "destroy",
			  G_CALLBACK (on_info_destroy), data);
}
コード例 #5
0
static gboolean
selection_func (GtkTreeSelection *selection, GtkTreeModel *model,
		GtkTreePath *path, gboolean path_currently_selected,
		gpointer data)
{
	GtkTreeIter iter;
	gchar *folder, *name;
	GtkamList *list = GTKAM_LIST (data);
	GtkamListFileSelectedData sd;
	GtkamListFileUnselectedData ud;

	gtk_tree_model_get_iter (model, &iter, path);
	folder = gtkam_list_get_folder_from_iter (list, &iter);
	name = gtkam_list_get_name_from_iter (list, &iter);
	if (path_currently_selected) {
		ud.camera = gtkam_list_get_camera_from_iter (list, &iter);
		ud.folder = folder;
		ud.name = name;
		g_signal_emit (G_OBJECT (list), signals[FILE_UNSELECTED],
			       0, &ud);
	} else {
		sd.camera = gtkam_list_get_camera_from_iter (list, &iter);
		sd.folder = folder;
		sd.name = name;
		g_signal_emit (G_OBJECT (list), signals[FILE_SELECTED],
			       0, &sd);
	}
	g_free (name);
	g_free (folder);

	return (TRUE);
}
コード例 #6
0
static gboolean
show_thumbnails_foreach_func (GtkTreeModel *model, GtkTreePath *path,
                              GtkTreeIter *iter, gpointer data)
{
	GtkamList *list = GTKAM_LIST (data);
	GtkamCamera *camera;
	gchar *folder, *name;
	CameraAbilities a;
	GetThumbnailData *d;

	camera = gtkam_list_get_camera_from_iter (list, iter);
	folder = gtkam_list_get_folder_from_iter (list, iter);
	name = gtkam_list_get_name_from_iter (list, iter);

	gp_camera_get_abilities (camera->camera, &a);

	if (a.file_operations & GP_FILE_OPERATION_PREVIEW) {
		d = g_new0 (GetThumbnailData, 1);
		d->camera = camera;
		g_object_ref (G_OBJECT (camera));
		d->folder = g_strdup (folder);
		d->name = g_strdup (name);
		d->iter = gtk_tree_iter_copy (iter);
		if (list->priv->tail)
			((GetThumbnailData*) list->priv->tail)->next = d;
		list->priv->tail = d;
		if (list->priv->head == NULL)
			list->priv->head = d;
	}
	g_free (folder);
	g_free (name);
	return (FALSE);
}
コード例 #7
0
ファイル: gtkam-main.c プロジェクト: ndim/gtkam
static void
action_zoom_100 (GtkAction *action, gpointer callback_data)
{
    GtkamMain *m = GTKAM_MAIN (callback_data);

    gtkam_list_zoom_100 (GTKAM_LIST (m->priv->list));
}
コード例 #8
0
ファイル: gtkam-main.c プロジェクト: ndim/gtkam
static void
action_delete_sel (GtkAction *action, gpointer callback_data)
{
    GtkamMain *m = GTKAM_MAIN (callback_data);

    gtkam_list_delete_selected (GTKAM_LIST (m->priv->list));
}
コード例 #9
0
static void
gtkam_list_init (GTypeInstance *instance, gpointer g_class)
{
	GtkamList *list = GTKAM_LIST (instance);

	list->priv = g_new0 (GtkamListPrivate, 1);
	list->priv->thumbnails = TRUE;
}
コード例 #10
0
ファイル: gtkam-main.c プロジェクト: ndim/gtkam
static void
on_folder_unselected (GtkamTree *tree, GtkamTreeFolderUnselectedData *data,
                      GtkamMain *m)
{
    gtkam_list_remove_folder (GTKAM_LIST (m->priv->list),
                              data->camera, data->folder);
    gtkam_main_update_sensitivity (m);
}
コード例 #11
0
static void
gtkam_list_finalize (GObject *object)
{
	GtkamList *list = GTKAM_LIST (object);

	g_free (list->priv);

	G_OBJECT_CLASS (parent_class)->finalize (object);
}
コード例 #12
0
ファイル: test-fsel.c プロジェクト: gphoto/gtkam
static void
selection_foreach_func (GtkTreeModel *model, GtkTreePath *path,
			GtkTreeIter *iter, gpointer data)
{
	gchar *name;
	GtkamList *list = GTKAM_LIST (data);

	name = gtkam_list_get_name_from_iter (list, iter);
	g_message (" '%s'", name);
	g_free (name);
}
コード例 #13
0
static void
gtkam_list_destroy (GtkObject *object)
{
	GtkamList *list = GTKAM_LIST (object);

	if (list->priv->factory) {
		g_object_unref (G_OBJECT (list->priv->factory));
		list->priv->factory = NULL;
	}

	GTK_OBJECT_CLASS (parent_class)->destroy (object);
}
コード例 #14
0
static void
action_save (gpointer callback_data, guint callback_action, GtkWidget *widget)
{
	GtkWidget *s;
	GtkamList *list = GTKAM_LIST (callback_data);
	GtkamCamera *camera;
	gchar *folder;
	gchar *name;

	camera = gtkam_list_get_camera_from_iter (list, &list->priv->iter);
	folder = gtkam_list_get_folder_from_iter (list, &list->priv->iter);
	name   = gtkam_list_get_name_from_iter   (list, &list->priv->iter);

	s = gtkam_save_new (GTK_WINDOW (gtk_widget_get_toplevel(
			GTK_WIDGET(list) )));
	gtkam_save_add (GTKAM_SAVE (s), camera, folder, name);
	g_free (folder);
	g_free (name);
	g_signal_emit (G_OBJECT (list), signals[NEW_DIALOG], 0, s);
	g_object_unref (G_OBJECT (s));
}
コード例 #15
0
static void
action_exif (gpointer callback_data, guint callback_action, GtkWidget *widget)
{
	GtkamList *list = GTKAM_LIST (callback_data);
	GtkamCamera *camera;
	gchar *folder;
	gchar *name;
	GtkWidget *d;

	camera = gtkam_list_get_camera_from_iter (list, &list->priv->iter);
	folder = gtkam_list_get_folder_from_iter (list, &list->priv->iter);
	name   = gtkam_list_get_name_from_iter   (list, &list->priv->iter);

	d = gtkam_exif_new (camera, folder, name);
	g_free (folder);
	g_free (name);
	if (!d)
		return;
	g_signal_emit (G_OBJECT (list), signals[NEW_DIALOG], 0, d);
	g_object_unref (G_OBJECT (d));
}
コード例 #16
0
static gboolean
get_thumbnail_idle (gpointer data)
{
	GtkamList *list = GTKAM_LIST (data);
	GetThumbnailData *d;
	CameraFile *file;
	GtkWidget *s;
	GdkPixbuf *pixbuf;
	GdkPixbufLoader *loader;
	int result;
	const char *fd;
	unsigned long fs;
	gfloat factor;

	d = list->priv->head;
	if (d == NULL)
		return (FALSE);
	s = gtkam_status_new (_("Downloading thumbnail of '%s' from "
		"folder '%s'..."), d->name, d->folder);

	g_signal_emit (G_OBJECT (list), signals[NEW_STATUS], 0, s);
	gp_file_new (&file);
	result = gp_camera_file_get (d->camera->camera, d->folder, d->name,
			GP_FILE_TYPE_PREVIEW, file,
			GTKAM_STATUS (s)->context->context);
	if (d->camera->multi)
		gp_camera_exit (d->camera->camera, NULL);
	if (result >= 0) {
		gp_file_get_data_and_size (file, &fd, &fs);

		loader = gdk_pixbuf_loader_new ();
		gdk_pixbuf_loader_write (loader, fd, fs, NULL);
		gdk_pixbuf_loader_close (loader, NULL);
		pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
		gtk_list_store_set (list->priv->store, d->iter,
				    PREVIEW_ORIG_COLUMN, pixbuf, -1);
		factor = gtkam_list_get_zoom_factor (list);
		pixbuf = gdk_pixbuf_scale_simple (pixbuf,
			gdk_pixbuf_get_width (pixbuf) * factor,
			gdk_pixbuf_get_height (pixbuf) * factor,
			GDK_INTERP_BILINEAR);
		g_object_unref (G_OBJECT (loader));
		
		gtk_list_store_set (list->priv->store, d->iter,
				PREVIEW_COLUMN, pixbuf, -1);
		g_object_unref (G_OBJECT (pixbuf));
	} 
	
	gp_file_unref (file);
	gtk_object_destroy (GTK_OBJECT (s));

	if (result == GP_ERROR_CAMERA_BUSY)
		return (TRUE);

	g_object_unref (G_OBJECT (d->camera));
	g_free (d->name);
	g_free (d->folder);
	gtk_tree_iter_free (d->iter);
	list->priv->head = d->next;
	g_free (d);
	if (!list->priv->head)
		list->priv->tail = NULL;

	gtk_widget_destroy (s);
	
	if (list->priv->head == NULL)
		return (FALSE);
	else
		return (TRUE);
}