Horizon
editor_process.hpp
1 #pragma once
2 #include <glibmm.h>
3 
4 namespace horizon {
5 class EditorProcess {
6 public:
7  EditorProcess(const std::vector<std::string> &argv, const std::vector<std::string> &env, bool capture_output);
8  int get_pid() const;
9  typedef sigc::signal<void, int> type_signal_exited;
10  type_signal_exited signal_exited()
11  {
12  return s_signal_exited;
13  }
14  typedef sigc::signal<void, std::string, bool> type_signal_output;
15  type_signal_output signal_output()
16  {
17  return s_signal_output;
18  }
19 
20 private:
21  Glib::Pid pid = 0;
22  Glib::RefPtr<Glib::IOChannel> ch_stdout;
23  Glib::RefPtr<Glib::IOChannel> ch_stderr;
24  sigc::connection out_conn;
25  sigc::connection err_conn;
26  bool is_running = false;
27  void child_watch_handler(GPid pid, int child_status);
28  type_signal_exited s_signal_exited;
29  type_signal_output s_signal_output;
30 };
31 } // namespace horizon
Definition: editor_process.hpp:5