Browse Source

Open file test for zalox

merge-requests/365/head
oyvang 11 years ago
parent
commit
3ed83dde8c
  1. 17
      juci/notebook.cc
  2. 2
      juci/notebook.h
  3. 57
      juci/window.cc
  4. 1
      juci/window.h

17
juci/notebook.cc

@ -21,11 +21,7 @@ Notebook::Controller::Controller(Keybindings::Controller& keybindings){
keybindings.action_group_menu()->add(Gtk::Action::create("FileMenu",
Gtk::Stock::FILE));
/* File->New files */
keybindings.action_group_menu()->add(Gtk::Action::create("FileOpenFile",
Gtk::Stock::OPEN),
[this]() {
OnOpenFile();
});
keybindings.action_group_menu()->add(Gtk::Action::create("FileNewStandard",
Gtk::Stock::NEW,
"New empty file",
@ -136,8 +132,15 @@ void Notebook::Controller::OnEditCut() {
}
}
void Notebook::Controller::OnOpenFile() {
std::cout << "fired" << std::endl;
void Notebook::Controller::OnOpenFile(std::string name, std::string content){
scrolledwindow_vec_.push_back(new Gtk::ScrolledWindow());
source_vec_.push_back(new Source::Controller);
scrolledwindow_vec_.back()->add(source_vec_.back()->view());
source_vec_.back()->view().get_buffer()->set_text(content);
view_.notebook().append_page(*scrolledwindow_vec_.back(), name);
view_.notebook().show_all_children();
view_.notebook().set_focus_child(*scrolledwindow_vec_.back());
view_.notebook().set_current_page(view_.notebook().get_n_pages()-1);
}

2
juci/notebook.h

@ -36,7 +36,7 @@ namespace Notebook {
void OnEditCopy();
void OnEditPaste();
void OnEditCut();
void OnOpenFile();
void OnOpenFile(std::string name, std::string content);
}; // class controller
} // namespace Notebook

57
juci/window.cc

@ -12,6 +12,11 @@ Window::Window() :
[this]() {
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_hidden()->get_accel_group());
@ -23,3 +28,55 @@ Window::Window() :
void Window::OnWindowHide() {
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;
}
}
}

1
juci/window.h

@ -17,6 +17,7 @@ private:
//signal handlers
void OnWindowHide();
void OnOpenFile();
};
#endif // JUCI_WINDOW_H_

Loading…
Cancel
Save