|
|
|
@ -12,6 +12,11 @@ Window::Window() : |
|
|
|
[this]() { |
|
|
|
[this]() { |
|
|
|
OnWindowHide(); |
|
|
|
OnWindowHide(); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
keybindings_.action_group_menu()->add(Gtk::Action::create("FileOpenFile", |
|
|
|
|
|
|
|
Gtk::Stock::OPEN), |
|
|
|
|
|
|
|
[this]() { |
|
|
|
|
|
|
|
OnOpenFile(); |
|
|
|
|
|
|
|
}); |
|
|
|
add_accel_group(keybindings_.ui_manager_menu()->get_accel_group()); |
|
|
|
add_accel_group(keybindings_.ui_manager_menu()->get_accel_group()); |
|
|
|
add_accel_group(keybindings_.ui_manager_hidden()->get_accel_group()); |
|
|
|
add_accel_group(keybindings_.ui_manager_hidden()->get_accel_group()); |
|
|
|
|
|
|
|
|
|
|
|
@ -23,3 +28,55 @@ Window::Window() : |
|
|
|
void Window::OnWindowHide() { |
|
|
|
void Window::OnWindowHide() { |
|
|
|
hide(); |
|
|
|
hide(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Window::OnOpenFile() { |
|
|
|
|
|
|
|
Gtk::FileChooserDialog dialog("Please choose a file", |
|
|
|
|
|
|
|
Gtk::FILE_CHOOSER_ACTION_OPEN); |
|
|
|
|
|
|
|
dialog.set_transient_for(*this); |
|
|
|
|
|
|
|
dialog.set_position(Gtk::WindowPosition::WIN_POS_CENTER_ALWAYS); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Add response buttons the the dialog:
|
|
|
|
|
|
|
|
dialog.add_button("_Cancel", Gtk::RESPONSE_CANCEL); |
|
|
|
|
|
|
|
dialog.add_button("_Open", Gtk::RESPONSE_OK); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Add filters, so that only certain file types can be selected:
|
|
|
|
|
|
|
|
Glib::RefPtr<Gtk::FileFilter> filter_text = Gtk::FileFilter::create(); |
|
|
|
|
|
|
|
filter_text->set_name("Text files"); |
|
|
|
|
|
|
|
filter_text->add_mime_type("text/plain"); |
|
|
|
|
|
|
|
dialog.add_filter(filter_text); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Glib::RefPtr<Gtk::FileFilter> filter_cpp = Gtk::FileFilter::create(); |
|
|
|
|
|
|
|
filter_cpp->set_name("C/C++ files"); |
|
|
|
|
|
|
|
filter_cpp->add_mime_type("text/x-c"); |
|
|
|
|
|
|
|
filter_cpp->add_mime_type("text/x-c++"); |
|
|
|
|
|
|
|
filter_cpp->add_mime_type("text/x-c-header"); |
|
|
|
|
|
|
|
dialog.add_filter(filter_cpp); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Glib::RefPtr<Gtk::FileFilter> filter_any = Gtk::FileFilter::create(); |
|
|
|
|
|
|
|
filter_any->set_name("Any files"); |
|
|
|
|
|
|
|
filter_any->add_pattern("*"); |
|
|
|
|
|
|
|
dialog.add_filter(filter_any); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int result = dialog.run(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch (result) { |
|
|
|
|
|
|
|
case(Gtk::RESPONSE_OK): { |
|
|
|
|
|
|
|
std::cout << "Open clicked." << std::endl; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::string path = dialog.get_filename(); |
|
|
|
|
|
|
|
std::cout << "File selected: " << path << std::endl; |
|
|
|
|
|
|
|
Source::Controller sourcefile; |
|
|
|
|
|
|
|
notebook_.OnOpenFile(path, sourcefile.OnOpenFile(path)); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
case(Gtk::RESPONSE_CANCEL): { |
|
|
|
|
|
|
|
std::cout << "Cancel clicked." << std::endl; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
default: { |
|
|
|
|
|
|
|
std::cout << "Unexpected button clicked." << std::endl; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|