Пример #1
0
static EditorVerboseData *editor_verbose_window(EditorData *ed, const gchar *text)
{
	EditorVerboseData *vd;
	GtkWidget *scrolled;
	GtkWidget *hbox;
	gchar *buf;

	vd = g_new0(EditorVerboseData, 1);

	vd->gd = file_util_gen_dlg(_("Edit command results"), "editor_results",
				   NULL, FALSE,
				   NULL, ed);
	buf = g_strdup_printf(_("Output of %s"), text);
	generic_dialog_add_message(vd->gd, NULL, buf, NULL, TRUE);
	g_free(buf);
	vd->button_stop = generic_dialog_add_button(vd->gd, GTK_STOCK_STOP, NULL,
						   editor_verbose_window_stop, FALSE);
	gtk_widget_set_sensitive(vd->button_stop, FALSE);
	vd->button_close = generic_dialog_add_button(vd->gd, GTK_STOCK_CLOSE, NULL,
						    editor_verbose_window_close, TRUE);
	gtk_widget_set_sensitive(vd->button_close, FALSE);

	scrolled = gtk_scrolled_window_new(NULL, NULL);
	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
				       GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
	gtk_box_pack_start(GTK_BOX(vd->gd->vbox), scrolled, TRUE, TRUE, 5);
	gtk_widget_show(scrolled);

	vd->text = gtk_text_view_new();
	gtk_text_view_set_editable(GTK_TEXT_VIEW(vd->text), FALSE);
	gtk_widget_set_size_request(vd->text, EDITOR_WINDOW_WIDTH, EDITOR_WINDOW_HEIGHT);
	gtk_container_add(GTK_CONTAINER(scrolled), vd->text);
	gtk_widget_show(vd->text);

	hbox = gtk_hbox_new(FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vd->gd->vbox), hbox, FALSE, FALSE, 0);
	gtk_widget_show(hbox);

	vd->progress = gtk_progress_bar_new();
	gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(vd->progress), 0.0);
	gtk_box_pack_start(GTK_BOX(hbox), vd->progress, TRUE, TRUE, 0);
#if GTK_CHECK_VERSION(3,0,0)
	gtk_progress_bar_set_text(GTK_PROGRESS_BAR(vd->progress), "");
	gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(vd->progress), TRUE);
#endif
	gtk_widget_show(vd->progress);

	vd->spinner = spinner_new(NULL, SPINNER_SPEED);
	gtk_box_pack_start(GTK_BOX(hbox), vd->spinner, FALSE, FALSE, 0);
	gtk_widget_show(vd->spinner);

	gtk_widget_show(vd->gd->dialog);

	ed->vd = vd;
	return vd;
}
Пример #2
0
static gint collection_save_confirmed(FileDialog *fd, gint overwrite, CollectionData *cd)
{
	gchar *buf;

	if (isdir(fd->dest_path))
		{
		buf = g_strdup_printf(_("Specified path:\n%s\nis a folder, collections are files"), fd->dest_path);
		file_util_warning_dialog(_("Invalid filename"), buf, GTK_STOCK_DIALOG_INFO, GENERIC_DIALOG(fd)->dialog);
		g_free(buf);
		return FALSE;
		}

	if (!overwrite && isfile(fd->dest_path))
		{
		GenericDialog *gd;

		gd = file_util_gen_dlg(_("Overwrite File"), "GQview", "dlg_confirm",
					GENERIC_DIALOG(fd)->dialog, TRUE,
					collection_confirm_cancel_cb, fd);

		generic_dialog_add_message(gd, GTK_STOCK_DIALOG_QUESTION,
					   _("Overwrite existing file?"), fd->dest_path);

		generic_dialog_add_button(gd, GTK_STOCK_OK, _("_Overwrite"), collection_confirm_ok_cb, TRUE);

		gtk_widget_show(gd->dialog);

		return TRUE;
		}

	if (!collection_save(cd, fd->dest_path))
		{
		buf = g_strdup_printf(_("Failed to save the collection:\n%s"), fd->dest_path);
		file_util_warning_dialog(_("Save Failed"), buf, GTK_STOCK_DIALOG_ERROR, GENERIC_DIALOG(fd)->dialog);
		g_free(buf);
		}

	collection_unref(cd);
	file_dialog_sync_history(fd, TRUE);

	if (fd->type == DIALOG_SAVE_CLOSE) collection_window_close_by_collection(cd);
	file_dialog_close(fd);

	return TRUE;
}
Пример #3
0
GenericDialog *
file_util_warning_dialog (const gchar * title, const gchar * message)
{
    GenericDialog *gd;

    gd = file_util_gen_dlg (title, message, "PornView", "warning", TRUE, NULL,
			    NULL);
    generic_dialog_add (gd, _("Ok"), cb_file_util_warning_dialog_ok, TRUE);

    if (place_dialogs_under_mouse)
	gtk_window_position (GTK_WINDOW (gd->dialog), GTK_WIN_POS_MOUSE);
    else if (place_dialogs_center)
	gtk_window_position (GTK_WINDOW (gd->dialog), GTK_WIN_POS_CENTER);

    gtk_widget_show (gd->dialog);

    return gd;
}
Пример #4
0
static void
file_util_move_multiple (FileDataMult * fdm)
{
    while (fdm->dest || fdm->source_next)
    {
	if (!fdm->dest)
	{
	    GList  *work = fdm->source_next;
	    fdm->source = work->data;
	    fdm->dest =
		concat_dir_and_file (fdm->dest_base,
				     filename_from_path (fdm->source));
	    fdm->source_next = work->next;
	}

	if (fdm->dest && fdm->source && strcmp (fdm->dest, fdm->source) == 0)
	{
	    GenericDialog *gd;
	    const gchar *title;
	    gchar  *text;

	    if (fdm->progress)
	    {
		gtk_grab_remove (fdm->progress);
		gtk_widget_destroy (fdm->progress);
		fdm->progress = NULL;
		fdm->cancel = FALSE;
	    }

	    if (fdm->copy)
	    {
		title = _("Source to copy matches destination");
		text =
		    g_strdup_printf (_
				     ("Unable to copy file:\n%s\nto itself."),
				     fdm->dest);
	    }
	    else
	    {
		title = _("Source to move matches destination");
		text =
		    g_strdup_printf (_
				     ("Unable to move file:\n%s\nto itself."),
				     fdm->dest);
	    }

	    gd = file_util_gen_dlg (title, text, "PornView", "dlg_confirm",
				    TRUE, cb_file_util_move_multiple_cancel,
				    fdm);
	    g_free (text);
	    generic_dialog_add (gd, _("Continue"),
				cb_file_util_move_multiple_skip, TRUE);

	    gtk_widget_show (gd->dialog);
	    return;
	}
	else if (isfile (fdm->dest) && !fdm->confirmed && !fdm->confirm_all
		 && !fdm->skip)
	{
	    GenericDialog *gd;
	    gchar  *text;

	    GtkWidget *hbox;

	    if (fdm->progress)
	    {
		gtk_grab_remove (fdm->progress);
		gtk_widget_destroy (fdm->progress);
		fdm->progress = NULL;
		fdm->cancel = FALSE;
	    }

	    text =
		g_strdup_printf (_("Overwrite file:\n %s\n with:\n %s"),
				 fdm->dest, fdm->source);
	    gd = file_util_gen_dlg (_("Overwrite file"), text, "PornView",
				    "dlg_confirm", TRUE,
				    cb_file_util_move_multiple_cancel, fdm);
	    g_free (text);

	    generic_dialog_add (gd, _("Yes"), cb_file_util_move_multiple_ok,
				TRUE);
	    fdm->yes_all_button =
		generic_dialog_add (gd, _("Yes to all"),
				    cb_file_util_move_multiple_all, FALSE);
	    generic_dialog_add (gd, _("Skip"),
				cb_file_util_move_multiple_skip, FALSE);
	    generic_dialog_add (gd, _("Skip all"),
				cb_file_util_move_multiple_skip_all, FALSE);
	    generic_dialog_add_images (gd, fdm->dest, fdm->source);

	    /*
	     * rename option 
	     */

	    fdm->rename = FALSE;
	    fdm->rename_all = FALSE;
	    fdm->rename_auto = FALSE;

	    hbox = gtk_hbox_new (FALSE, 5);
	    gtk_box_pack_start (GTK_BOX (gd->vbox), hbox, FALSE, FALSE, 0);
	    gtk_widget_show (hbox);

	    fdm->rename_auto_box =
		gtk_check_button_new_with_label (_("Auto rename"));
	    gtk_signal_connect (GTK_OBJECT (fdm->rename_auto_box), "clicked",
				GTK_SIGNAL_FUNC
				(cb_file_util_move_multiple_rename_auto), gd);
	    gtk_box_pack_start (GTK_BOX (hbox), fdm->rename_auto_box, FALSE,
				FALSE, 0);
	    gtk_widget_show (fdm->rename_auto_box);

	    hbox = gtk_hbox_new (FALSE, 5);
	    gtk_box_pack_start (GTK_BOX (gd->vbox), hbox, FALSE, FALSE, 0);
	    gtk_widget_show (hbox);

	    fdm->rename_box = gtk_check_button_new_with_label (_("Rename"));
	    gtk_signal_connect (GTK_OBJECT (fdm->rename_box), "clicked",
				GTK_SIGNAL_FUNC
				(cb_file_util_move_multiple_rename), gd);
	    gtk_box_pack_start (GTK_BOX (hbox), fdm->rename_box, FALSE, FALSE,
				0);
	    gtk_widget_show (fdm->rename_box);

	    fdm->rename_entry = gtk_entry_new ();
	    gtk_entry_set_text (GTK_ENTRY (fdm->rename_entry),
				filename_from_path (fdm->dest));
	    gtk_widget_set_sensitive (fdm->rename_entry, FALSE);
	    gtk_box_pack_start (GTK_BOX (hbox), fdm->rename_entry, TRUE, TRUE,
				0);
	    gtk_widget_show (fdm->rename_entry);

	    gtk_widget_show (gd->dialog);
	    return;
	}
	else
	{
	    gint    success = FALSE;
	    if (fdm->skip)
	    {
		success = TRUE;
		if (!fdm->confirm_all)
		    fdm->skip = FALSE;
	    }
	    else
	    {
		gint    try = TRUE;

		if (fdm->confirm_all && fdm->rename_all && isfile (fdm->dest))
		{
		    gchar  *buf;
		    buf = unique_filename_simple (fdm->dest);
		    if (buf)
		    {
			g_free (fdm->dest);
			fdm->dest = buf;
		    }
		    else
		    {
			try = FALSE;
		    }
		}

		if (try)
		{
		    if (!fdm->progress)
			fdm->progress =
			    dialog_progress_create (_("Pornview - copy/move"),
						    _(" "), &fdm->cancel, 300,
						    -1);
		    gtk_grab_add (fdm->progress);


		    if (fdm->copy)
		    {
			gfloat  c;
			c = (gfloat) fdm->count / (gfloat) fdm->length;
			dialog_progress_update (fdm->progress,
						_("PornView - copy"),
						g_basename (fdm->source),
						_(" "), c);

			if (fdm->cancel)
			    break;
			success = copy_file (fdm->source, fdm->dest);
			fdm->count++;
		    }
		    else
		    {
			gfloat  c;

			c = (gfloat) fdm->count / (gfloat) fdm->length;
			dialog_progress_update (fdm->progress,
						_("PornView - move"),
						g_basename (fdm->source),
						_(" "), c);

			if (fdm->cancel)
			    break;

			while (gtk_events_pending ())
			    gtk_main_iteration ();

			fdm->count++;

			if (move_file (fdm->source, fdm->dest))
			{
			    success = TRUE;
			    file_maint_moved (fdm->source, fdm->dest,
					      fdm->source_list);

			}
		    }
		}
	    }
	    if (!success)
	    {
		GenericDialog *gd;
		const gchar *title;
		gchar  *text;

		if (fdm->progress)
		{
		    gtk_grab_remove (fdm->progress);
		    gtk_widget_destroy (fdm->progress);
		    fdm->progress = NULL;
		    fdm->cancel = FALSE;
		}

		if (fdm->copy)
		{
		    title = _("Error copying file");
		    text =
			g_strdup_printf (_
					 ("Unable to copy file:\n%sto:\n%s\n during multiple file copy."),
					 fdm->source, fdm->dest);
		}
		else
		{
		    title = _("Error moving file");
		    text =
			g_strdup_printf (_
					 ("Unable to move file:\n%sto:\n%s\n during multiple file move."),
					 fdm->source, fdm->dest);
		}
		gd = file_util_gen_dlg (title, text, "PornView",
					"dlg_confirm", TRUE,
					cb_file_util_move_multiple_cancel,
					fdm);
		g_free (text);

		generic_dialog_add (gd, _("Continue"),
				    cb_file_util_move_multiple_skip, TRUE);

		gtk_widget_show (gd->dialog);
		return;
	    }
	    fdm->confirmed = FALSE;
	    g_free (fdm->dest);
	    fdm->dest = NULL;
	}
    }