Update gtk79
This commit is contained in:
parent
0eccd43793
commit
869cd57132
|
@ -0,0 +1,82 @@
|
||||||
|
#include "winpe.xpm"
|
||||||
|
#include "BackGround.hh"
|
||||||
|
#include "image_types.hh"
|
||||||
|
|
||||||
|
BackGround::BackGround(Gtk::Window &parent,Gtk::Image *back)
|
||||||
|
:btn_default("Use Default Background"),
|
||||||
|
btn_set("Set Background From a File")
|
||||||
|
{
|
||||||
|
//Initalize Dialog
|
||||||
|
set_default_size(300,100);
|
||||||
|
set_title("Change Background");
|
||||||
|
set_transient_for(parent);
|
||||||
|
add_button("Close",Gtk::RESPONSE_CLOSE);
|
||||||
|
background=back;
|
||||||
|
|
||||||
|
Gtk::Box * vbox=get_content_area();
|
||||||
|
vbox->pack_start(btn_default,Gtk::PACK_SHRINK);
|
||||||
|
btn_default.signal_clicked().connect(sigc::mem_fun(*this,&BackGround::default_background));
|
||||||
|
vbox->pack_start(btn_set,Gtk::PACK_SHRINK);
|
||||||
|
btn_set.signal_clicked().connect(sigc::mem_fun(*this,&BackGround::btnset_clicked));
|
||||||
|
}
|
||||||
|
|
||||||
|
void BackGround::btnset_clicked(){
|
||||||
|
Gtk::FileChooserDialog dialog1("Choose an image file",
|
||||||
|
Gtk::FILE_CHOOSER_ACTION_OPEN);
|
||||||
|
dialog1.set_transient_for(*this);
|
||||||
|
|
||||||
|
//Add reponse buttons
|
||||||
|
dialog1.add_button("_Cancel",Gtk::RESPONSE_CANCEL);
|
||||||
|
dialog1.add_button("_OK",Gtk::RESPONSE_OK);
|
||||||
|
|
||||||
|
//Add filters
|
||||||
|
auto filter_image=Gtk::FileFilter::create();
|
||||||
|
filter_image->set_name("Image Files");
|
||||||
|
|
||||||
|
//Windows doesn't support mime type
|
||||||
|
if(mime_type_supported()){
|
||||||
|
filter_image->add_mime_type("image/*");
|
||||||
|
}else{
|
||||||
|
for(int i=0;supported_globs!=NULL && supported_globs[i]!=NULL ;i++){
|
||||||
|
filter_image->add_pattern(supported_globs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog1.add_filter(filter_image);
|
||||||
|
|
||||||
|
auto filter_any = Gtk::FileFilter::create();
|
||||||
|
filter_any->set_name("Any files");
|
||||||
|
filter_any->add_pattern("*");
|
||||||
|
dialog1.add_filter(filter_any);
|
||||||
|
|
||||||
|
//Show the dialog and wait for a user response:
|
||||||
|
int result = dialog1.run();
|
||||||
|
|
||||||
|
if(result==Gtk::RESPONSE_OK){
|
||||||
|
//Get the image file and set the image from the file
|
||||||
|
std::string filename;
|
||||||
|
filename=dialog1.get_filename();
|
||||||
|
Glib::RefPtr<Gdk::Pixbuf> pixbuf=Gdk::Pixbuf::create_from_file(filename);
|
||||||
|
Glib::RefPtr<Gdk::Pixbuf> sized=pixbuf->scale_simple(640,360,Gdk::INTERP_BILINEAR);
|
||||||
|
gtk_image_set_from_pixbuf(background->gobj(),sized->gobj());
|
||||||
|
//Free the memory
|
||||||
|
pixbuf.reset();
|
||||||
|
sized.reset();
|
||||||
|
}
|
||||||
|
filter_image.reset();
|
||||||
|
filter_any.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BackGround::default_background(){
|
||||||
|
//Background
|
||||||
|
Glib::RefPtr<Gdk::Pixbuf> pixbuf=Gdk::Pixbuf::create_from_xpm_data(winpe);
|
||||||
|
Glib::RefPtr<Gdk::Pixbuf> sized=pixbuf->scale_simple(640,360,Gdk::INTERP_BILINEAR);
|
||||||
|
gtk_image_set_from_pixbuf(background->gobj(),sized->gobj());
|
||||||
|
//Release Memory
|
||||||
|
pixbuf.reset();
|
||||||
|
sized.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BackGround::on_response(int response_id){
|
||||||
|
hide();
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <gtkmm.h>
|
||||||
|
|
||||||
|
class BackGround : public Gtk::Dialog
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
BackGround(Gtk::Window &parent,Gtk::Image *back);
|
||||||
|
void default_background();
|
||||||
|
protected:
|
||||||
|
void on_response(int response_id) override;
|
||||||
|
private:
|
||||||
|
//Child widgets
|
||||||
|
Gtk::Button btn_default;
|
||||||
|
Gtk::Button btn_set;
|
||||||
|
Gtk::Image * background;
|
||||||
|
//Signal Handlers
|
||||||
|
void btnset_clicked();
|
||||||
|
};
|
|
@ -1,8 +1,9 @@
|
||||||
#include "MyWin.hh"
|
#include "MyWin.hh"
|
||||||
#include "winpe.xpm"
|
|
||||||
|
|
||||||
MyWin::MyWin()
|
MyWin::MyWin()
|
||||||
:btn_back("Change Background")
|
:btn_back("Change Background"),
|
||||||
|
back_dialog(*this,&back)
|
||||||
{
|
{
|
||||||
set_icon_name("org.gtk.daleclack");
|
set_icon_name("org.gtk.daleclack");
|
||||||
set_default_size(640,360);
|
set_default_size(640,360);
|
||||||
|
@ -14,53 +15,14 @@ MyWin::MyWin()
|
||||||
btn_back.set_valign(Gtk::ALIGN_CENTER);
|
btn_back.set_valign(Gtk::ALIGN_CENTER);
|
||||||
btn_back.signal_clicked().connect(sigc::mem_fun(*this,&MyWin::btnback_clicked));
|
btn_back.signal_clicked().connect(sigc::mem_fun(*this,&MyWin::btnback_clicked));
|
||||||
overlay.add_overlay(btn_back);
|
overlay.add_overlay(btn_back);
|
||||||
//Background
|
//Set Default Background
|
||||||
Glib::RefPtr<Gdk::Pixbuf> pixbuf=Gdk::Pixbuf::create_from_xpm_data(winpe);
|
back_dialog.default_background();
|
||||||
Glib::RefPtr<Gdk::Pixbuf> sized=pixbuf->scale_simple(640,360,Gdk::INTERP_BILINEAR);
|
|
||||||
gtk_image_set_from_pixbuf(back.gobj(),sized->gobj());
|
|
||||||
//Release Memory
|
|
||||||
pixbuf.reset();
|
|
||||||
sized.reset();
|
|
||||||
//Show all children
|
//Show all children
|
||||||
show_all_children();
|
show_all_children();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyWin::btnback_clicked(){
|
void MyWin::btnback_clicked(){
|
||||||
Gtk::FileChooserDialog dialog1("Choose an image file",
|
back_dialog.show_all();
|
||||||
Gtk::FILE_CHOOSER_ACTION_OPEN);
|
|
||||||
dialog1.set_transient_for(*this);
|
|
||||||
|
|
||||||
//Add reponse buttons
|
|
||||||
dialog1.add_button("_Cancel",Gtk::RESPONSE_CANCEL);
|
|
||||||
dialog1.add_button("_OK",Gtk::RESPONSE_OK);
|
|
||||||
|
|
||||||
//Add filters
|
|
||||||
auto filter_image=Gtk::FileFilter::create();
|
|
||||||
filter_image->set_name("Image Files");
|
|
||||||
filter_image->add_mime_type("image/*");
|
|
||||||
dialog1.add_filter(filter_image);
|
|
||||||
|
|
||||||
auto filter_any = Gtk::FileFilter::create();
|
|
||||||
filter_any->set_name("Any files");
|
|
||||||
filter_any->add_pattern("*");
|
|
||||||
dialog1.add_filter(filter_any);
|
|
||||||
|
|
||||||
//Show the dialog and wait for a user response:
|
|
||||||
int result = dialog1.run();
|
|
||||||
|
|
||||||
if(result==Gtk::RESPONSE_OK){
|
|
||||||
//Get the image file and set the image from the file
|
|
||||||
std::string filename;
|
|
||||||
filename=dialog1.get_filename();
|
|
||||||
Glib::RefPtr<Gdk::Pixbuf> pixbuf=Gdk::Pixbuf::create_from_file(filename);
|
|
||||||
Glib::RefPtr<Gdk::Pixbuf> sized=pixbuf->scale_simple(640,360,Gdk::INTERP_BILINEAR);
|
|
||||||
gtk_image_set_from_pixbuf(back.gobj(),sized->gobj());
|
|
||||||
//Free the memory
|
|
||||||
pixbuf.reset();
|
|
||||||
sized.reset();
|
|
||||||
}
|
|
||||||
filter_image.reset();
|
|
||||||
filter_any.reset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MyWin::~MyWin(){
|
MyWin::~MyWin(){
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <gtkmm.h>
|
#include <gtkmm.h>
|
||||||
|
#include "BackGround.hh"
|
||||||
|
|
||||||
class MyWin : public Gtk::Window{
|
class MyWin : public Gtk::Window{
|
||||||
public:
|
public:
|
||||||
|
@ -13,4 +14,5 @@ protected:
|
||||||
Gtk::Overlay overlay;
|
Gtk::Overlay overlay;
|
||||||
Gtk::Image back;
|
Gtk::Image back;
|
||||||
Gtk::Button btn_back;
|
Gtk::Button btn_back;
|
||||||
|
BackGround back_dialog;
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
//This File is some extensions of image
|
||||||
|
//Note that this is the first edition,may needs improvement
|
||||||
|
static const char * const supported_globs[]={
|
||||||
|
"*.bmp",
|
||||||
|
"*.cod",
|
||||||
|
"*.gif",
|
||||||
|
"*.ief",
|
||||||
|
"*.jpe",
|
||||||
|
"*.jpeg",
|
||||||
|
"*.jpg",
|
||||||
|
"*.jfif",
|
||||||
|
"*.svg",
|
||||||
|
"*.png",
|
||||||
|
"*.tif",
|
||||||
|
"*.tiff",
|
||||||
|
"*.ras",
|
||||||
|
"*.cmx",
|
||||||
|
"*.ico",
|
||||||
|
"*.pnm",
|
||||||
|
"*.pbm",
|
||||||
|
"*.pgm",
|
||||||
|
"*.ppm",
|
||||||
|
"*.rgb",
|
||||||
|
"*.xbm",
|
||||||
|
"*.xpm",
|
||||||
|
"*.xwd",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline bool mime_type_supported(){
|
||||||
|
#ifdef G_OS_WIN32
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
}
|
Loading…
Reference in New Issue