Browse Source

Fixed save changed file dialog activation, and removed Source::Controller::signal_buffer_changed.

merge-requests/365/head
eidheim 11 years ago
parent
commit
26bae99661
  1. 35
      juci/notebook.cc
  2. 2
      juci/notebook.h
  3. 3
      juci/source.cc
  4. 2
      juci/source.h

35
juci/notebook.cc

@ -306,6 +306,7 @@ void Notebook::Controller::OnNewPage(std::string name) {
Notebook().set_current_page(Pages()-1); Notebook().set_current_page(Pages()-1);
Notebook().set_focus_child(text_vec_.at(Pages()-1)->view); Notebook().set_focus_child(text_vec_.at(Pages()-1)->view);
text_vec_.back()->on_new_empty_file(); text_vec_.back()->on_new_empty_file();
set_source_handlers(*text_vec_.back());
} }
void Notebook::Controller::OnOpenFile(std::string path) { void Notebook::Controller::OnOpenFile(std::string path) {
@ -320,6 +321,7 @@ void Notebook::Controller::OnOpenFile(std::string path) {
Notebook().set_current_page(Pages()-1); Notebook().set_current_page(Pages()-1);
Notebook().set_focus_child(text_vec_.back()->view); Notebook().set_focus_child(text_vec_.back()->view);
text_vec_.back()->on_open_file(path); text_vec_.back()->on_open_file(path);
set_source_handlers(*text_vec_.back());
} }
void Notebook::Controller::OnCreatePage() { void Notebook::Controller::OnCreatePage() {
@ -329,24 +331,12 @@ void Notebook::Controller::OnCreatePage() {
editor_vec_.push_back(new Gtk::HBox()); editor_vec_.push_back(new Gtk::HBox());
scrolledtext_vec_.back()->add(text_vec_.back()->view); scrolledtext_vec_.back()->add(text_vec_.back()->view);
editor_vec_.back()->pack_start(*scrolledtext_vec_.back(), true, true); editor_vec_.back()->pack_start(*scrolledtext_vec_.back(), true, true);
TextViewHandlers(text_vec_.back()->view);
//Add star on tab label when the page is not saved:
text_vec_.back()->signal_buffer_changed=[this](bool was_saved) {
if(was_saved) {
std::string path=text_vec_.at(CurrentPage())->parser.file_path;
size_t pos = path.find_last_of("/\\");
std::string filename=path;
if(pos!=std::string::npos)
filename=path.substr(pos+1);
Notebook().set_tab_label_text(*(Notebook().get_nth_page(CurrentPage())), filename+"*");
}
};
} }
void Notebook::Controller::OnCloseCurrentPage() { void Notebook::Controller::OnCloseCurrentPage() {
INFO("Notebook close page"); INFO("Notebook close page");
if (Pages() != 0) { if (Pages() != 0) {
if(!text_vec_.back()->is_saved){ if(!text_vec_.at(CurrentPage())->is_saved){
AskToSaveDialog(); AskToSaveDialog();
} }
int page = CurrentPage(); int page = CurrentPage();
@ -493,12 +483,25 @@ void Notebook::Controller::BufferChangeHandler(Glib::RefPtr<Gtk::TextBuffer>
}); });
} }
void Notebook::Controller::TextViewHandlers(Gtk::TextView& textview) { void Notebook::Controller::set_source_handlers(Source::Controller& controller) {
textview.signal_button_release_event(). controller.view.signal_button_release_event().
connect(sigc::mem_fun(*this, &Notebook::Controller::OnMouseRelease), false); connect(sigc::mem_fun(*this, &Notebook::Controller::OnMouseRelease), false);
textview.signal_key_release_event(). controller.view.signal_key_release_event().
connect(sigc::mem_fun(*this, &Notebook::Controller::OnKeyRelease), false); connect(sigc::mem_fun(*this, &Notebook::Controller::OnKeyRelease), false);
//Add star on tab label when the page is not saved:
controller.buffer()->signal_changed().connect([this]() {
if(text_vec_.at(CurrentPage())->is_saved) {
std::string path=text_vec_.at(CurrentPage())->parser.file_path;
size_t pos = path.find_last_of("/\\");
std::string filename=path;
if(pos!=std::string::npos)
filename=path.substr(pos+1);
Notebook().set_tab_label_text(*(Notebook().get_nth_page(CurrentPage())), filename+"*");
}
text_vec_.at(CurrentPage())->is_saved=false;
});
} }
void Notebook::Controller::PopupSelectHandler(Gtk::Dialog &popup, void Notebook::Controller::PopupSelectHandler(Gtk::Dialog &popup,

2
juci/notebook.h

@ -74,7 +74,7 @@ namespace Notebook {
bool LegalExtension(std::string extension); bool LegalExtension(std::string extension);
protected: protected:
void TextViewHandlers(Gtk::TextView& textview); void set_source_handlers(Source::Controller& controller);
void PopupSelectHandler(Gtk::Dialog &popup, void PopupSelectHandler(Gtk::Dialog &popup,
Gtk::ListViewText &listview, Gtk::ListViewText &listview,
std::map<std::string, std::string> std::map<std::string, std::string>

3
juci/source.cc

@ -233,9 +233,6 @@ void Source::Controller::update_syntax(const std::vector<Source::Range> &ranges)
void Source::Controller::set_handlers() { void Source::Controller::set_handlers() {
buffer()->signal_changed().connect([this]() { buffer()->signal_changed().connect([this]() {
if(signal_buffer_changed)
signal_buffer_changed(is_saved);
is_saved=false;
parse_thread_mapped=false; parse_thread_mapped=false;
parse_thread_go=true; parse_thread_go=true;
}); });

2
juci/source.h

@ -118,8 +118,6 @@ namespace Source {
Parser parser; Parser parser;
View view; View view;
std::function<void(bool was_saved)> signal_buffer_changed;
private: private:
Glib::Dispatcher parse_done; Glib::Dispatcher parse_done;
Glib::Dispatcher parse_start; Glib::Dispatcher parse_start;

Loading…
Cancel
Save