Use Native Dialog

This commit is contained in:
daleclack 2021-06-27 22:24:40 +08:00
parent 0bbb50100f
commit ca39163735
2 changed files with 8 additions and 12 deletions

View File

@ -63,14 +63,9 @@ void MyWin::default_background(){
void MyWin::back_dialog(){
//Initalize dialog
auto dialog=new Gtk::FileChooserDialog("Open Image File",
Gtk::FILE_CHOOSER_ACTION_OPEN);
dialog->set_transient_for(*this);
dialog->signal_response().connect(sigc::bind(
sigc::mem_fun(*this,&MyWin::change_background),dialog));
//Add button for dialog
dialog->add_button("OK",Gtk::RESPONSE_OK);
dialog->add_button("Cancel",Gtk::RESPONSE_CANCEL);
dialog=Gtk::FileChooserNative::create("Open a image file",*this,Gtk::FILE_CHOOSER_ACTION_OPEN,
"OK","Cancel");
dialog->signal_response().connect(sigc::mem_fun(*this,&MyWin::change_background));
//Add Filter
auto filter=Gtk::FileFilter::create();
filter->set_name("Image Files");
@ -94,12 +89,12 @@ void MyWin::back_dialog(){
filter2->add_pattern("*");
dialog->add_filter(filter2);
dialog->show_all();
dialog->show();
filter.reset();
filter2.reset();
}
void MyWin::change_background(int response,Gtk::FileChooserDialog *dialog){
void MyWin::change_background(int response){
Glib::ustring filename;
if(response==Gtk::RESPONSE_OK){
filename=dialog->get_filename();
@ -112,7 +107,7 @@ void MyWin::change_background(int response,Gtk::FileChooserDialog *dialog){
pixbuf.reset();
sized.reset();
}
delete dialog;
dialog.reset();
}
void MyWin::about_dialog(){

View File

@ -15,6 +15,7 @@ private:
Gtk::Box main_box;
Gtk::PopoverMenu popover;
Gtk::Image background;
Glib::RefPtr<Gtk::FileChooserNative> dialog;
//Main Pages
MyStack main_stack;
@ -26,7 +27,7 @@ private:
//Signal Handlers
void default_background();
void back_dialog();
void change_background(int response,Gtk::FileChooserDialog *dialog);
void change_background(int response);
void about_dialog();
void win_quit();
};