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
|
2022-05-24 11:47:03 +08:00
|
|
|
auto builder=Gtk::Builder::create_from_resource("/org/gtk/daleclack/prefs.ui");
|
2021-09-20 10:46:08 +08:00
|
|
|
|
|
|
|
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();
|
|
|
|
}
|