Browse Source

Minor cleanup of Terminal

merge-requests/365/head
eidheim 10 years ago
parent
commit
9fe43c185a
  1. 39
      src/terminal.cc
  2. 3
      src/terminal.h

39
src/terminal.cc

@ -21,11 +21,8 @@ void Terminal::InProgress::start(const std::string& msg) {
wait_thread=std::thread([this](){ wait_thread=std::thread([this](){
size_t c=0; size_t c=0;
while(!stop) { while(!stop) {
if(c%100==0) { if(c%100==0)
dispatcher.add([this] { Terminal::get().async_print(line_nr-1, ".");
Terminal::get().print(line_nr-1, ".");
});
}
std::this_thread::sleep_for(std::chrono::milliseconds(10)); std::this_thread::sleep_for(std::chrono::milliseconds(10));
c++; c++;
} }
@ -35,18 +32,14 @@ void Terminal::InProgress::start(const std::string& msg) {
void Terminal::InProgress::done(const std::string& msg) { void Terminal::InProgress::done(const std::string& msg) {
if(!stop) { if(!stop) {
stop=true; stop=true;
dispatcher.add([this, msg] { Terminal::get().async_print(line_nr-1, msg);
Terminal::get().print(line_nr-1, msg);
});
} }
} }
void Terminal::InProgress::cancel(const std::string& msg) { void Terminal::InProgress::cancel(const std::string& msg) {
if(!stop) { if(!stop) {
stop=true; stop=true;
dispatcher.add([this, msg] { Terminal::get().async_print(line_nr-1, msg);
Terminal::get().print(line_nr-1, msg);
});
} }
} }
@ -213,7 +206,19 @@ size_t Terminal::print(const std::string &message, bool bold){
return static_cast<size_t>(get_buffer()->end().get_line())+deleted_lines; return static_cast<size_t>(get_buffer()->end().get_line())+deleted_lines;
} }
void Terminal::print(size_t line_nr, const std::string &message){ std::shared_ptr<Terminal::InProgress> Terminal::print_in_progress(std::string start_msg) {
std::shared_ptr<Terminal::InProgress> in_progress=std::shared_ptr<Terminal::InProgress>(new Terminal::InProgress(start_msg));
return in_progress;
}
void Terminal::async_print(const std::string &message, bool bold) {
dispatcher.add([this, message, bold] {
Terminal::get().print(message, bold);
});
}
void Terminal::async_print(size_t line_nr, const std::string &message) {
dispatcher.add([this, line_nr, message] {
if(line_nr<deleted_lines) if(line_nr<deleted_lines)
return; return;
@ -228,16 +233,6 @@ void Terminal::print(size_t line_nr, const std::string &message){
auto end_line_iter=get_buffer()->get_iter_at_line(static_cast<int>(line_nr-deleted_lines)); auto end_line_iter=get_buffer()->get_iter_at_line(static_cast<int>(line_nr-deleted_lines));
while(!end_line_iter.ends_line() && end_line_iter.forward_char()) {} while(!end_line_iter.ends_line() && end_line_iter.forward_char()) {}
get_buffer()->insert(end_line_iter, umessage); get_buffer()->insert(end_line_iter, umessage);
}
std::shared_ptr<Terminal::InProgress> Terminal::print_in_progress(std::string start_msg) {
std::shared_ptr<Terminal::InProgress> in_progress=std::shared_ptr<Terminal::InProgress>(new Terminal::InProgress(start_msg));
return in_progress;
}
void Terminal::async_print(const std::string &message, bool bold) {
dispatcher.add([this, message, bold] {
Terminal::get().print(message, bold);
}); });
} }

3
src/terminal.h

@ -23,7 +23,6 @@ public:
void start(const std::string& msg); void start(const std::string& msg);
size_t line_nr; size_t line_nr;
std::atomic<bool> stop; std::atomic<bool> stop;
Dispatcher dispatcher;
std::thread wait_thread; std::thread wait_thread;
}; };
@ -43,9 +42,9 @@ public:
void kill_async_processes(bool force=false); void kill_async_processes(bool force=false);
size_t print(const std::string &message, bool bold=false); size_t print(const std::string &message, bool bold=false);
void print(size_t line_nr, const std::string &message);
std::shared_ptr<InProgress> print_in_progress(std::string start_msg); std::shared_ptr<InProgress> print_in_progress(std::string start_msg);
void async_print(const std::string &message, bool bold=false); void async_print(const std::string &message, bool bold=false);
void async_print(size_t line_nr, const std::string &message);
protected: protected:
bool on_key_press_event(GdkEventKey *event); bool on_key_press_event(GdkEventKey *event);
private: private:

Loading…
Cancel
Save