diff options
| author | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2010-02-14 15:12:08 +0100 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2010-02-14 15:12:08 +0100 |
| commit | d338f1f0c1a72665396d95bfe303ed408a3f10b9 (patch) | |
| tree | c41c71b380e1b749a49518a57edd3453a3733a5f /UGnome.pas | |
| parent | 55605a80092452ce593cb05df12a404ad47aa808 (diff) | |
| download | tuxcmd-0.6.76.tar.xz | |
Show warning when some files are unreadablev0.6.76
This will make user aware of what files will not be copied, chmodded or chowned.
Diffstat (limited to 'UGnome.pas')
| -rw-r--r-- | UGnome.pas | 61 |
1 files changed, 61 insertions, 0 deletions
@@ -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; + +(********************************************************************************************************************************) +(********************************************************************************************************************************) (********************************************************************************************************************************) (********************************************************************************************************************************) (********************************************************************************************************************************) |
