Cadabra
Computer algebra system for field theory problems
Console.hh
Go to the documentation of this file.
1 #include <gtkmm.h>
2 #include <json/json.h>
3 #include <queue>
4 #include <list>
5 
6 namespace cadabra {
7  class Console;
8 
9  class TextViewProxy : public Gtk::TextView {
10  public:
12 
14 
15  bool on_key_press_event(GdkEventKey* key_event) override;
16 
17  private:
19 
20  std::string temp_in;
21  std::list<std::string> history;
22  std::list<std::string>::iterator history_ptr;
23  };
24 
25  class Console : public Gtk::Box {
26  public:
27  Console(sigc::slot<void> run_slot);
28  ~Console();
29 
30  void initialize();
31 
32  void set_input(const Glib::ustring& line, size_t range_start = std::string::npos, size_t range_end = std::string::npos);
33  std::string grab_input();
34  void send_input(const std::string& code);
35  void signal_message(const Json::Value& msg);
36 
37  void set_height(int px);
38 
39  void scroll_to_bottom();
40  uint64_t get_id() const;
41  Glib::RefPtr<Gtk::TextBuffer> get_buffer();
42 
43  private:
44  void insert_text(const std::string& text, Glib::RefPtr<Gtk::TextTag> tag);
45  void insert_graphic(const std::string& bytes);
46  void prompt(bool continuation, bool newline = false);
47 
48  void process_message_queue();
49 
50  Glib::Dispatcher dispatch_message;
51  Glib::Dispatcher run;
52  uint64_t id_;
53 
55  std::string collect;
56  std::queue<Json::Value> message_queue;
57  std::queue<std::string> run_queue;
58  Gtk::ScrolledWindow win;
60  Gtk::TextView tv;
61  Glib::RefPtr<Gtk::TextBuffer::Mark> input_begin, prompt_begin;
62  Glib::RefPtr<Gtk::TextTag> input_tag, output_tag, warning_tag, error_tag;
63  };
64 
65  }
Glib::RefPtr< Gtk::TextTag > warning_tag
Definition: Console.hh:62
size_t history_max_length
Definition: Console.hh:13
~Console()
Definition: Console.cc:158
Glib::RefPtr< Gtk::TextBuffer > get_buffer()
Definition: Console.cc:286
std::string collect
Definition: Console.hh:55
Definition: Console.hh:25
Glib::RefPtr< Gtk::TextBuffer::Mark > input_begin
Definition: Console.hh:61
TextViewProxy input
Definition: Console.hh:59
Glib::RefPtr< Gtk::TextTag > input_tag
Definition: Console.hh:62
void insert_graphic(const std::string &bytes)
Definition: Console.cc:317
Definition: Console.hh:9
bool on_key_press_event(GdkEventKey *key_event) override
Definition: Console.cc:31
Gtk::TextView tv
Definition: Console.hh:60
Glib::RefPtr< Gtk::TextTag > output_tag
Definition: Console.hh:62
void process_message_queue()
Definition: Console.cc:223
std::string grab_input()
Definition: Console.cc:210
std::list< std::string > history
Definition: Console.hh:21
bool needs_focus
Definition: Console.hh:54
Gtk::ScrolledWindow win
Definition: Console.hh:58
void set_input(const Glib::ustring &line, size_t range_start=std::string::npos, size_t range_end=std::string::npos)
Definition: Console.cc:291
void insert_text(const std::string &text, Glib::RefPtr< Gtk::TextTag > tag)
Definition: Console.cc:309
void prompt(bool continuation, bool newline=false)
Definition: Console.cc:331
TextViewProxy(Console &parent)
Definition: Console.cc:23
std::queue< Json::Value > message_queue
Definition: Console.hh:56
void signal_message(const Json::Value &msg)
Definition: Console.cc:217
Glib::Dispatcher run
Definition: Console.hh:51
Console(sigc::slot< void > run_slot)
Definition: Console.cc:100
Console & parent
Definition: Console.hh:18
uint64_t id_
Definition: Console.hh:52
void set_height(int px)
Definition: Console.cc:171
Functions to handle the exchange properties of two or more symbols in a product.
Definition: Algorithm.cc:1045
Glib::RefPtr< Gtk::TextTag > error_tag
Definition: Console.hh:62
void scroll_to_bottom()
Definition: Console.cc:152
void send_input(const std::string &code)
Definition: Console.cc:180
std::list< std::string >::iterator history_ptr
Definition: Console.hh:22
Glib::Dispatcher dispatch_message
Definition: Console.hh:50
void initialize()
Definition: Console.cc:163
std::string temp_in
Definition: Console.hh:20
std::queue< std::string > run_queue
Definition: Console.hh:57
uint64_t get_id() const
Definition: Console.cc:341
Glib::RefPtr< Gtk::TextBuffer::Mark > prompt_begin
Definition: Console.hh:61