summaryrefslogtreecommitdiff
path: root/UGnome.pas
diff options
context:
space:
mode:
Diffstat (limited to 'UGnome.pas')
-rw-r--r--UGnome.pas61
1 files changed, 61 insertions, 0 deletions
diff --git a/UGnome.pas b/UGnome.pas
index 9fa0319..7871f3e 100644
--- a/UGnome.pas
+++ b/UGnome.pas
@@ -165,6 +165,8 @@ function HandleVFSAskPasswordCallback(DialogParent: PGtkWidget;
domain: PPChar;
password_save: PVFSPasswordSave): gboolean;
+function ShowInaccessiblePathsDialog(DialogParent: PGtkWidget; List: TStringList): integer;
+
type PGnomeColorPicker = PGtkWidget;
@@ -1551,6 +1553,65 @@ end;
(********************************************************************************************************************************)
(********************************************************************************************************************************)
+function ShowInaccessiblePathsDialog(DialogParent: PGtkWidget; List: TStringList): integer;
+var dialog: PGtkWidget;
+ hbox, vbox, expander: PGtkWidget;
+ primary_label, secondary_label, details_label, image: PGtkWidget;
+ scrolled_window: PGtkWidget;
+begin
+ if not Assigned(List) or (List.Count = 0) then Exit;
+ dialog := gtk_dialog_new;
+ if DialogParent <> nil then gtk_window_set_transient_for(PGtkWindow(dialog), PGtkWindow(DialogParent));
+ gtk_container_set_border_width(GTK_CONTAINER(dialog), 5);
+ gtk_box_set_spacing(GTK_BOX(PGtkDialog(dialog)^.vbox), 14);
+ gtk_window_set_resizable(GTK_WINDOW (dialog), False);
+ gtk_dialog_set_has_separator(PGtkDialog(dialog), False);
+ gtk_window_set_title(GTK_WINDOW(dialog), '');
+ gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), True);
+
+ primary_label := gtk_label_new(nil);
+ gtk_label_set_markup(PGtkLabel(primary_label), PChar(Format('<span size="large" weight="ultrabold">%s</span>', ['Inaccessible folders and files'])));
+ secondary_label := gtk_label_new('Some files are not accessible and will be skipped. Press Cancel to abort the operation or Continue to ignore this warning.');
+ details_label := gtk_label_new(nil);
+ gtk_label_set_label(PGtkLabel(details_label), PChar(List.Text));
+ image := gtk_image_new_from_stock(GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG);
+ gtk_misc_set_alignment(GTK_MISC(image), 0.5, 0.0);
+ gtk_label_set_line_wrap(GTK_LABEL(primary_label), True);
+ gtk_label_set_selectable(GTK_LABEL(primary_label), True);
+ gtk_misc_set_alignment(GTK_MISC(primary_label), 0.0, 0.5);
+ gtk_label_set_line_wrap(GTK_LABEL(secondary_label), True);
+ gtk_label_set_selectable(GTK_LABEL(secondary_label), True);
+ gtk_misc_set_alignment(GTK_MISC(secondary_label), 0.0, 0.5);
+ gtk_label_set_line_wrap(GTK_LABEL(details_label), False);
+ gtk_label_set_selectable(GTK_LABEL(details_label), True);
+ gtk_misc_set_alignment(GTK_MISC(details_label), 0.0, 0.5);
+ scrolled_window := gtk_scrolled_window_new(nil, nil);
+ gtk_scrolled_window_set_policy(PGtkScrolledWindow(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_add_with_viewport(PGtkScrolledWindow(scrolled_window), details_label);
+ hbox := gtk_hbox_new (False, 12);
+ gtk_container_set_border_width(GTK_CONTAINER(hbox), 5);
+ gtk_box_pack_start(GTK_BOX(hbox), image, False, False, 0);
+ vbox := gtk_vbox_new(False, 12);
+ gtk_box_pack_start(GTK_BOX(hbox), vbox, False, False, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), primary_label, False, False, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), secondary_label, False, False, 0);
+ expander := gtk_expander_new_with_mnemonic('Show more _details');
+ gtk_expander_set_spacing(GTK_EXPANDER(expander), 6);
+ gtk_container_add(GTK_CONTAINER(expander), scrolled_window);
+ gtk_box_pack_start(GTK_BOX(vbox), expander, False, False, 0);
+ gtk_box_pack_start(GTK_BOX(PGtkDialog(dialog)^.vbox), hbox, False, False, 0);
+
+ gtk_dialog_add_button(PGtkDialog(dialog), GTK_STOCK_CANCEL, 0);
+ gtk_dialog_add_button(PGtkDialog(dialog), 'C_ontinue', 1);
+ gtk_dialog_set_default_response(PGtkDialog(dialog), 1);
+ gtk_widget_show_all(dialog);
+
+ Result := gtk_dialog_run(PGtkDialog(dialog));
+ gtk_widget_destroy(Dialog);
+end;
+
+(********************************************************************************************************************************)
+(********************************************************************************************************************************)
(********************************************************************************************************************************)
(********************************************************************************************************************************)
(********************************************************************************************************************************)