Xe-Release/XeRelease_Gtkmm3/src/MyDialog.cc

133 lines
4.0 KiB
C++
Raw Normal View History

2021-06-23 21:03:44 +08:00
#include "MyDialog.hh"
2021-09-20 10:46:08 +08:00
#include "../cfgfile2/cfgfile.hh"
2021-06-23 22:26:32 +08:00
2021-09-20 10:46:08 +08:00
MyDialog::MyDialog(BaseObjectType* cobject,const Glib::RefPtr<Gtk::Builder>& ref_builder)
:Gtk::Dialog(cobject),
ref_Glade(ref_builder)
2021-06-23 22:26:32 +08:00
{
2021-09-20 10:46:08 +08:00
//Initalize
set_icon_name("XeRelease");
//Get Widgets
ref_builder->get_widget("entry_lts",entry_lts);
ref_builder->get_widget("entry_stable",entry_stable);
ref_builder->get_widget("entry_dev",entry_dev);
2021-12-31 22:49:10 +08:00
ref_builder->get_widget("entry_path",entry_path);
ref_builder->get_widget("btnpath",btnpath);
2021-09-20 10:46:08 +08:00
//Read Configs
std::string config;
if(readCfgFile("xe_config","Longterm",config)){
entry_lts->set_text(config);
}
if(readCfgFile("xe_config","Stable",config)){
entry_stable->set_text(config);
}
if(readCfgFile("xe_config","Develop",config)){
entry_dev->set_text(config);
}
2021-12-31 22:49:10 +08:00
readCfgFile("xe_config","Release_Path_Unix",config_unix);
readCfgFile("xe_config","Release_Path_Win32",config_win32);
//Use different path for Linux filesystem and Windows
if(unix_file_system_detected()){
entry_path->set_text(config_unix);
}else{
entry_path->set_text(config_win32);
}
//Connect Signal
btnpath->signal_clicked().connect(sigc::mem_fun(*this,&MyDialog::btnpath_clicked));
2021-06-23 22:26:32 +08:00
}
void MyDialog::on_response(int response_id){
2021-09-20 10:46:08 +08:00
//Save Configs to a file
if(response_id == Gtk::RESPONSE_OK){
Glib::ustring config;
std::fstream outfile;
2021-12-31 22:49:10 +08:00
//Initalize Config for path
if(unix_file_system_detected()){
config_unix = entry_path->get_text();
}else{
config_win32 = entry_path->get_text();
}
//Open the config file
outfile.open("xe_config",std::ios_base::out);
/*OutPut contents to the file
Simple Contents of xe_config:
Longterm=x.x
Stable=x.x
Develop=x.x
Release_Path_Unix=/xxx/xxx
Release_Path_Win32=X:\xxx\xxx
*/
2021-09-20 10:46:08 +08:00
if(outfile.is_open()){
outfile<<"This is the config file of Xe Release"<<std::endl;
outfile<<"See more on github.com/daleclack/Xe-Release"<<std::endl;
outfile<<std::endl;
config=entry_lts->get_text();
outfile<<"Longterm="<<config<<std::endl;
config=entry_stable->get_text();
outfile<<"Stable="<<config<<std::endl;
config=entry_dev->get_text();
outfile<<"Develop="<<config<<std::endl;
2021-12-31 22:49:10 +08:00
outfile<<"Release_Path_Unix="<<config_unix<<std::endl;
outfile<<"Release_Path_Win32="<<config_win32<<std::endl;
2021-09-20 10:46:08 +08:00
}
outfile.close();
2021-06-23 22:26:32 +08:00
}
hide();
}
2021-06-23 21:03:44 +08:00
2021-09-20 10:46:08 +08:00
MyDialog * MyDialog::create(Gtk::Window& parent){
//Create a dialog
auto builder=Gtk::Builder::create_from_resource("/XeRelease/prefs.ui");
MyDialog * dialog=nullptr;
builder->get_widget_derived("prefs",dialog);
dialog->set_transient_for(parent);
return dialog;
}
2021-12-31 22:49:10 +08:00
void MyDialog::btnpath_clicked(){
//Create a Dialog
dialog = Gtk::FileChooserNative::create("Select a folder",*this,
Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER,"OK","Cancel");
dialog->signal_response().connect(sigc::mem_fun(*this,&MyDialog::dialog_response));
dialog->show();
}
void MyDialog::dialog_response(int response_id){
if(response_id == Gtk::RESPONSE_ACCEPT){
Glib::ustring path = dialog->get_filename();
entry_path->set_text(path);
}
dialog.reset();
}
2021-06-23 21:03:44 +08:00
MsgBox::MsgBox(Gtk::Window &parent)
:hbox(Gtk::ORIENTATION_HORIZONTAL,5)
{
//Initalize MsgBox
set_icon_name("Xe-Release");
set_default_size(300,150);
add_button("OK",Gtk::RESPONSE_OK);
set_transient_for(parent);
//Add Message
image.set_from_icon_name("Xe-Release",Gtk::ICON_SIZE_DIALOG);
vbox=get_content_area();
hbox.pack_start(image,Gtk::PACK_SHRINK);
hbox.pack_start(msg_label,Gtk::PACK_SHRINK);
vbox->pack_start(hbox);
}
void MsgBox::Init(Glib::ustring msg){
msg_label.set_label(msg);
}
void MsgBox::on_response(int response_id){
hide();
}