mirror of https://gitlab.com/cppit/jucipp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.7 KiB
70 lines
1.7 KiB
#include "terminal.h" |
|
#include <iostream> |
|
|
|
Terminal::View::View(){ |
|
scrolledwindow_.add(textview_); |
|
scrolledwindow_.set_size_request(-1,150); |
|
view_.add(scrolledwindow_); |
|
} |
|
|
|
|
|
Terminal::Controller::Controller() { |
|
root = ""; |
|
Terminal().signal_key_release_event(). |
|
connect(sigc::mem_fun(*this,&Terminal::Controller::OnButtonRealeaseEvenet),false); |
|
} |
|
|
|
bool Terminal::Controller::OnButtonRealeaseEvenet(GdkEventKey *key) { |
|
if(key->keyval == 65421 || key->keyval == 65293){ |
|
ExecuteCommand(); |
|
} |
|
return false; |
|
} |
|
void Terminal::Controller::ExecuteCommand() { |
|
|
|
std::cout << "EXECUTE COMMAND ALGORITHM "<< std::endl; |
|
std::string temp = getCommand(); |
|
if(temp != ""){ |
|
std::cout << "EXECUTE COMMAND: "<<temp << std::endl; |
|
FILE* p = popen(temp.c_str(), "r"); |
|
if (p == NULL) |
|
{ |
|
Terminal().get_buffer()->insert(Terminal().get_buffer()->end(),"Command Failed\n"); |
|
|
|
} else{ |
|
char buffer[1028]; |
|
|
|
while (fgets(buffer, 1028, p) != NULL) |
|
{ |
|
Terminal().get_buffer()->insert(Terminal().get_buffer()->end(),buffer); |
|
} |
|
pclose(p); |
|
|
|
|
|
} |
|
Terminal().get_buffer()->insert(Terminal().get_buffer()->end(),"Command Executed\n"); |
|
}else{ |
|
std::cout << "NO COMMAND TO RUN"<< std::endl; |
|
} |
|
|
|
} |
|
|
|
std::string Terminal::Controller::getCommand(){ |
|
std::string command = ""; |
|
Gtk::TextIter start,end; |
|
int a = Terminal().get_buffer()->get_insert()->get_iter().get_line()-1; |
|
if(a==-1)a=0; |
|
start = Terminal().get_buffer()->get_iter_at_line(a); |
|
end =Terminal().get_buffer()->get_iter_at_line(a); |
|
while(!end.ends_line()) { |
|
end++; |
|
} |
|
while(!start.starts_line()) { |
|
start--; |
|
} |
|
|
|
command = Terminal().get_buffer()->get_text(start,end); |
|
return command; |
|
} |
|
|
|
|
|
|