add file chooser
This commit is contained in:
parent
a74b53d6c8
commit
69d398e455
@ -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"
|
||||||
}
|
}
|
@ -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"))
|
||||||
|
.halign(gtk::Align::End)
|
||||||
|
.icon_name("document-open-symbolic")
|
||||||
|
.build();
|
||||||
|
|
||||||
let flatpak_ref_install_url_entry = gtk::Entry::builder()
|
let flatpak_ref_install_flatref_path_entry_box = gtk::Box::builder()
|
||||||
.placeholder_text("https://dl.flathub.org/repo/flathub.flatpakrepo")
|
.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();
|
||||||
|
|
||||||
let flatpak_ref_install_url_prefrencesgroup = adw::PreferencesGroup::builder()
|
#[allow(deprecated)]
|
||||||
.title(t!("flatpak_ref_install_url_prefrencesgroup_title"))
|
flatpak_ref_install_flatref_path_file_dialog.connect_response(
|
||||||
.build();
|
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 => {}
|
||||||
|
}
|
||||||
|
|
||||||
flatpak_ref_install_url_prefrencesgroup.add(&flatpak_ref_install_url_entry);
|
}
|
||||||
|
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);
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user