add file chooser

This commit is contained in:
Ward from fusion-voyager-3 2024-10-02 17:07:47 +03:00
parent a74b53d6c8
commit 69d398e455
3 changed files with 106 additions and 27 deletions

View File

@ -144,5 +144,10 @@
"flatpak_remote_add_url_prefrencesgroup_title": "Remote Ref URL (flatpakrepo)", "flatpak_remote_add_url_prefrencesgroup_title": "Remote Ref URL (flatpakrepo)",
"flatpak_remote_add_error_dialog_used_error_body": "Should We Force Remove The Remote Alongside Everything Using It?", "flatpak_remote_add_error_dialog_used_error_body": "Should We Force Remove The Remote Alongside Everything Using It?",
"flatpak_remote_add_error_used_no_label": "No", "flatpak_remote_add_error_used_no_label": "No",
"flatpak_remote_add_error_used_yes_label": "Yes" "flatpak_remote_add_error_used_yes_label": "Yes",
"flatpak_flatref_install_button_tooltip_text": "Install a FlatRef File",
"flatpak_ref_install_flatref_path_file_dialog_title": "Open a Flatpak Repository Referance File",
"flatpak_ref_install_flatref_path_file_dialog_accept_label": "Open",
"flatpak_ref_install_flatref_path_file_dialog_cancel_label": "Cancel",
"flatpak_ref_install_flatref_path_entry_open_file_dialog_text": "Open File Chooser"
} }

View File

@ -35,25 +35,74 @@ pub fn install_ref_dialog_fn(
.orientation(Orientation::Vertical) .orientation(Orientation::Vertical)
.build(); .build();
let flatpak_ref_install_name_entry = gtk::Entry::builder() let flatpak_ref_install_flatref_path_file_dialog_filter = FileFilter::new();
.placeholder_text("Flathub") flatpak_ref_install_flatref_path_file_dialog_filter.add_pattern("*.flatpakref");
#[allow(deprecated)]
let flatpak_ref_install_flatref_path_file_dialog = gtk::FileChooserNative::builder()
.title(t!("flatpak_ref_install_flatref_path_file_dialog_title"))
.accept_label(t!("flatpak_ref_install_flatref_path_file_dialog_accept_label"))
.cancel_label(t!("flatpak_ref_install_flatref_path_file_dialog_cancel_label"))
.action(gtk::FileChooserAction::Open)
.filter(&flatpak_ref_install_flatref_path_file_dialog_filter)
.build(); .build();
let flatpak_ref_install_name_prefrencesgroup = adw::PreferencesGroup::builder() let flatpak_ref_install_flatref_path_entry = gtk::Entry::builder()
.title(t!("flatpak_ref_install_name_prefrencesgroup_title")) .placeholder_text("/home/andy/Downloads/com.visualstudio.code.flatpakref")
.hexpand(true)
.build(); .build();
flatpak_ref_install_name_prefrencesgroup.add(&flatpak_ref_install_name_entry); let flatpak_ref_install_flatref_path_entry_open_file_dialog = gtk::Button::builder()
.tooltip_text(t!("flatpak_ref_install_flatref_path_entry_open_file_dialog_text"))
let flatpak_ref_install_url_entry = gtk::Entry::builder() .halign(gtk::Align::End)
.placeholder_text("https://dl.flathub.org/repo/flathub.flatpakrepo") .icon_name("document-open-symbolic")
.build(); .build();
let flatpak_ref_install_url_prefrencesgroup = adw::PreferencesGroup::builder() let flatpak_ref_install_flatref_path_entry_box = gtk::Box::builder()
.title(t!("flatpak_ref_install_url_prefrencesgroup_title")) .orientation(gtk::Orientation::Horizontal)
.hexpand(true)
.build();
flatpak_ref_install_flatref_path_entry_box.add_css_class("linked");
flatpak_ref_install_flatref_path_entry_open_file_dialog.connect_clicked(clone!(
#[strong]
flatpak_ref_install_flatref_path_file_dialog,
move |_| {
flatpak_ref_install_flatref_path_file_dialog.set_visible(true);
}
));
flatpak_ref_install_flatref_path_entry_box.append(&flatpak_ref_install_flatref_path_entry);
flatpak_ref_install_flatref_path_entry_box.append(&flatpak_ref_install_flatref_path_entry_open_file_dialog);
let flatpak_ref_install_flatref_path_prefrencesgroup = adw::PreferencesGroup::builder()
.title(t!("flatpak_ref_install_flatref_path_prefrencesgroup_title"))
.build(); .build();
flatpak_ref_install_url_prefrencesgroup.add(&flatpak_ref_install_url_entry); #[allow(deprecated)]
flatpak_ref_install_flatref_path_file_dialog.connect_response(
clone!(
#[weak]
flatpak_ref_install_flatref_path_entry,
move |dialog, response|
{
if response == gtk::ResponseType::Accept {
match dialog.file() {
Some(f) => {
match f.path() {
Some(p) => flatpak_ref_install_flatref_path_entry.set_text(p.to_str().unwrap()),
None => {}
}
}
None => {}
}
}
}
)
);
flatpak_ref_install_flatref_path_prefrencesgroup.add(&flatpak_ref_install_flatref_path_entry_box);
let flatpak_ref_install_box2 = gtk::Box::builder() let flatpak_ref_install_box2 = gtk::Box::builder()
.margin_top(10) .margin_top(10)
@ -97,6 +146,8 @@ pub fn install_ref_dialog_fn(
.height_request(400) .height_request(400)
.build(); .build();
flatpak_ref_install_flatref_path_file_dialog.set_transient_for(Some(&flatpak_ref_install_dialog));
flatpak_ref_install_dialog.add_response( flatpak_ref_install_dialog.add_response(
"flatpak_ref_install_dialog_add", "flatpak_ref_install_dialog_add",
&t!("flatpak_ref_install_dialog_add_label").to_string(), &t!("flatpak_ref_install_dialog_add_label").to_string(),
@ -122,14 +173,12 @@ pub fn install_ref_dialog_fn(
// //
let flatpak_ref_install_dialog_clone0 = flatpak_ref_install_dialog.clone(); let flatpak_ref_install_dialog_clone0 = flatpak_ref_install_dialog.clone();
let flatpak_ref_install_name_entry_clone0 = flatpak_ref_install_name_entry.clone(); let flatpak_ref_install_flatref_path_entry_clone0 = flatpak_ref_install_flatref_path_entry.clone();
let flatpak_ref_install_url_entry_clone0 = flatpak_ref_install_url_entry.clone();
let add_button_update_state = move || { let add_button_update_state = move || {
if if
!flatpak_ref_install_name_entry_clone0.text().is_empty() && !flatpak_ref_install_flatref_path_entry_clone0.text().is_empty()
!flatpak_ref_install_url_entry_clone0.text().is_empty()
{ {
flatpak_ref_install_dialog_clone0.set_response_enabled("flatpak_ref_install_dialog_add", true); flatpak_ref_install_dialog_clone0.set_response_enabled("flatpak_ref_install_dialog_add", true);
} else { } else {
@ -140,8 +189,7 @@ pub fn install_ref_dialog_fn(
// //
for entry in [ for entry in [
&flatpak_ref_install_name_entry, &flatpak_ref_install_flatref_path_entry,
&flatpak_ref_install_url_entry,
] { ] {
entry.connect_text_notify(clone!( entry.connect_text_notify(clone!(
#[strong] #[strong]
@ -159,12 +207,11 @@ pub fn install_ref_dialog_fn(
flatpak_ref_install_box2.append(&flatpak_remote_user_togglebutton); flatpak_ref_install_box2.append(&flatpak_remote_user_togglebutton);
flatpak_ref_install_box2.append(&flatpak_remote_system_togglebutton); flatpak_ref_install_box2.append(&flatpak_remote_system_togglebutton);
flatpak_ref_install_dialog_child_box.append(&flatpak_ref_install_name_prefrencesgroup); flatpak_ref_install_dialog_child_box.append(&flatpak_ref_install_flatref_path_prefrencesgroup);
flatpak_ref_install_dialog_child_box.append(&flatpak_ref_install_url_prefrencesgroup);
flatpak_ref_install_dialog_child_box.append(&flatpak_ref_install_box2); flatpak_ref_install_dialog_child_box.append(&flatpak_ref_install_box2);
let reload_action_clone0 = reload_action.clone(); let reload_action_clone0 = reload_action.clone();
let flatpak_retry_signal_action_clone0 = flatpak_retry_signal_action.clone(); //let flatpak_retry_signal_action_clone0 = flatpak_retry_signal_action.clone();
flatpak_ref_install_dialog.clone() flatpak_ref_install_dialog.clone()
.choose(None::<&gio::Cancellable>, move |choice| { .choose(None::<&gio::Cancellable>, move |choice| {
@ -177,7 +224,7 @@ pub fn install_ref_dialog_fn(
false => libflatpak::Installation::new_user(cancellable_no).unwrap(), false => libflatpak::Installation::new_user(cancellable_no).unwrap(),
}; };
match libflatpak::Remote::from_file(&flatpak_ref_install_name_entry.text(), &get_data_from_url(&flatpak_ref_install_url_entry.text()).unwrap()) { match libflatpak::Remote::from_file(&flatpak_ref_install_name_entry.text(), &get_data_from_flatref_path(&flatpak_ref_install_flatref_path_entry.text()).unwrap()) {
Ok(remote) => { Ok(remote) => {
match libflatpak::Installation::add_remote(&flatpak_installation, &remote, true, cancellable_no) { match libflatpak::Installation::add_remote(&flatpak_installation, &remote, true, cancellable_no) {
Ok(_) => { Ok(_) => {
@ -213,7 +260,7 @@ pub fn install_ref_dialog_fn(
false => "--user" false => "--user"
}; };
match duct::cmd!("flatpak", "remote-add", "--if-not-exists", &flatpak_installation, &flatpak_ref_install_name_entry.text(), &flatpak_ref_install_url_entry.text()).run() { match duct::cmd!("flatpak", "remote-add", "--if-not-exists", &flatpak_installation, &flatpak_ref_install_name_entry.text(), &flatpak_ref_install_flatref_path_entry.text()).run() {
Ok(_) => { Ok(_) => {
reload_action_clone0.activate(None); reload_action_clone0.activate(None);
flatpak_retry_signal_action_clone0.activate(None); flatpak_retry_signal_action_clone0.activate(None);

View File

@ -294,6 +294,13 @@ pub fn flatpak_manage_page(
.valign(Align::End) .valign(Align::End)
.build(); .build();
let flatpak_flatref_install_button = Button::builder()
.icon_name("document-open-symbolic")
.tooltip_text(t!("flatpak_flatref_install_button_tooltip_text"))
//.halign(Align::End)
.valign(Align::End)
.build();
let flatpak_remote_remove_button = Button::builder() let flatpak_remote_remove_button = Button::builder()
.icon_name("edit-delete-symbolic") .icon_name("edit-delete-symbolic")
.tooltip_text(t!("flatpak_remote_remove_button_tooltip_text")) .tooltip_text(t!("flatpak_remote_remove_button_tooltip_text"))
@ -320,6 +327,25 @@ pub fn flatpak_manage_page(
) )
); );
flatpak_flatref_install_button.connect_clicked(clone!(
#[strong]
window,
#[strong]
retry_signal_action,
#[strong]
flatpak_retry_signal_action,
move
|_|
{
install_ref_dialog::install_ref_dialog_fn(
window.clone(),
&retry_signal_action,
&flatpak_retry_signal_action
);
}
)
);
flatpak_remote_remove_button.connect_clicked(clone!( flatpak_remote_remove_button.connect_clicked(clone!(
#[strong] #[strong]
window, window,
@ -425,6 +451,7 @@ pub fn flatpak_manage_page(
// //
flatpak_remotes_edit_box.append(&flatpak_remote_add_button); flatpak_remotes_edit_box.append(&flatpak_remote_add_button);
flatpak_remotes_edit_box.append(&flatpak_flatref_install_button);
flatpak_remotes_edit_box.append(&flatpak_remote_remove_button); flatpak_remotes_edit_box.append(&flatpak_remote_remove_button);
flatpak_remotes_box.append(&flatpak_remotes_columnview_bin); flatpak_remotes_box.append(&flatpak_remotes_columnview_bin);