Browse Source

Added mark to tab-label when content is changed and not saved.

merge-requests/365/head
eidheim 11 years ago
parent
commit
122fb85390
  1. 39
      juci/notebook.cc
  2. 6
      juci/source.cc
  3. 5
      juci/source.h

39
juci/notebook.cc

@ -313,9 +313,11 @@ void Notebook::Controller::OnOpenFile(std::string path) {
INFO("Notebook open file"); INFO("Notebook open file");
OnCreatePage(); OnCreatePage();
text_vec_.back()->on_open_file(path); text_vec_.back()->on_open_file(path);
text_vec_.back()->is_saved=true; size_t pos = path.find_last_of("/\\");
unsigned pos = path.find_last_of("/\\"); std::string filename=path;
Notebook().append_page(*editor_vec_.back(), path.substr(pos+1)); if(pos!=std::string::npos)
filename=path.substr(pos+1);
Notebook().append_page(*editor_vec_.back(), filename);
Notebook().show_all_children(); Notebook().show_all_children();
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);
@ -329,12 +331,23 @@ void Notebook::Controller::OnCreatePage() {
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); 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_changed){ if(!text_vec_.back()->is_saved){
AskToSaveDialog(); AskToSaveDialog();
} }
int page = CurrentPage(); int page = CurrentPage();
@ -570,17 +583,8 @@ void Notebook::Controller::FindPopupPosition(Gtk::TextView& textview,
} }
bool Notebook::Controller:: OnSaveFile() { bool Notebook::Controller:: OnSaveFile() {
INFO("Notebook save file"); std::string path=text_vec_.at(CurrentPage())->parser.file_path;
if (text_vec_.at(CurrentPage())->is_saved) { return OnSaveFile(path);
std::ofstream file;
file.open (text_vec_.at(CurrentPage())->parser.file_path);
file << CurrentTextView().get_buffer()->get_text();
file.close();
return true;
} else {
return OnSaveFile(OnSaveFileAs());
}
return false;
} }
bool Notebook::Controller:: OnSaveFile(std::string path) { bool Notebook::Controller:: OnSaveFile(std::string path) {
INFO("Notebook save file with path"); INFO("Notebook save file with path");
@ -590,6 +594,11 @@ bool Notebook::Controller:: OnSaveFile(std::string path) {
file << CurrentTextView().get_buffer()->get_text(); file << CurrentTextView().get_buffer()->get_text();
file.close(); file.close();
text_vec_.at(CurrentPage())->parser.file_path=path; text_vec_.at(CurrentPage())->parser.file_path=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=true; text_vec_.at(CurrentPage())->is_saved=true;
return true; return true;
} }

6
juci/source.cc

@ -299,12 +299,14 @@ void Source::Controller::on_open_file(const string &filepath) {
} }
} }
}); });
}
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;
}); });
}
} }
Glib::RefPtr<Gsv::Buffer> Source::Controller::buffer() { Glib::RefPtr<Gsv::Buffer> Source::Controller::buffer() {

5
juci/source.h

@ -112,12 +112,13 @@ namespace Source {
Glib::RefPtr<Gsv::Buffer> buffer(); Glib::RefPtr<Gsv::Buffer> buffer();
bool on_key_press(GdkEventKey* key); bool on_key_press(GdkEventKey* key);
bool is_saved = false; //TODO: Is never set to false in Notebook::Controller bool is_saved = true;
bool is_changed = false; //TODO: Is never set to true
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