Horizon
pool_download_window.hpp
1 #pragma once
2 #include <gtkmm.h>
3 #include <git2.h>
4 #include "util/status_dispatcher.hpp"
5 
6 namespace horizon {
7 
8 class PoolDownloadWindow : public Gtk::Window {
9 public:
10  PoolDownloadWindow(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &x, const class PoolIndex *idx);
11  static PoolDownloadWindow *create(const class PoolIndex *idx);
12 
13  typedef sigc::signal<void> type_signal_downloaded;
14  type_signal_downloaded signal_downloaded()
15  {
16  return s_signal_downloaded;
17  }
18 
19 private:
20  static int git_transfer_cb(const git_transfer_progress *stats, void *payload);
21  static void git_checkout_progress_cb(const char *path, size_t completed_steps, size_t total_steps, void *payload);
22  bool downloading = false;
23  bool download_cancel = false;
24 
25  void handle_do_download();
26  void handle_cancel();
27 
28  void download_thread(std::string gh_username, std::string gh_repo, std::string dest_dir);
29 
30  Gtk::Button *download_button = nullptr;
31  Gtk::Button *cancel_button = nullptr;
32 
33  StatusDispatcher download_status_dispatcher;
34 
35  Gtk::Revealer *download_revealer = nullptr;
36  Gtk::Label *download_label = nullptr;
37  Gtk::Spinner *download_spinner = nullptr;
38  Gtk::ProgressBar *download_progress = nullptr;
39 
40  Gtk::Entry *download_gh_username_entry = nullptr;
41  Gtk::Entry *download_gh_repo_entry = nullptr;
42  Gtk::Entry *download_dest_dir_entry = nullptr;
43  Gtk::Button *download_dest_dir_button = nullptr;
44 
45  type_signal_downloaded s_signal_downloaded;
46 };
47 } // namespace horizon
Definition: pool_download_window.hpp:8
Definition: pool_index.hpp:9
Definition: status_dispatcher.hpp:8