Don't like ads? PRO users don't see any ads ;-)

rtorrent-0.9.2_canvas_color.patch

By: edps on Jul 5th, 2012  |  syntax: None  |  size: 9.87 KB  |  hits: 41  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. diff --git a/src/command_network.cc b/src/command_network.cc
  2. index 82155b7..3e163b3 100644
  3. --- a/src/command_network.cc
  4. +++ b/src/command_network.cc
  5. @@ -241,6 +241,15 @@ initialize_command_network() {
  6.  
  7.    CMD2_VAR_BOOL    ("log.handshake", false);
  8.  
  9. +  CMD2_ANY         ("colors.done_fg_color",       tr1::bind(&ui::Root::get_done_fg_color,   control->ui()));
  10. +  CMD2_ANY_VALUE_V ("colors.done_fg_color.set",   tr1::bind(&ui::Root::set_done_fg_color,   control->ui(), tr1::placeholders::_2));
  11. +  CMD2_ANY         ("colors.done_bg_color",       tr1::bind(&ui::Root::get_done_bg_color,   control->ui()));
  12. +  CMD2_ANY_VALUE_V ("colors.done_bg_color.set",   tr1::bind(&ui::Root::set_done_bg_color,   control->ui(), tr1::placeholders::_2));
  13. +  CMD2_ANY         ("colors.active_fg_color",     tr1::bind(&ui::Root::get_active_fg_color, control->ui()));
  14. +  CMD2_ANY_VALUE_V ("colors.active_fg_color.set", tr1::bind(&ui::Root::set_active_fg_color, control->ui(), tr1::placeholders::_2));
  15. +  CMD2_ANY         ("colors.active_bg_color",     tr1::bind(&ui::Root::get_active_bg_color, control->ui()));
  16. +  CMD2_ANY_VALUE_V ("colors.active_bg_color.set", tr1::bind(&ui::Root::set_active_bg_color, control->ui(), tr1::placeholders::_2));
  17. +
  18.    // CMD2_ANY_STRING  ("encoding_list",    tr1::bind(&apply_encoding_list, tr1::placeholders::_2));
  19.    CMD2_ANY_STRING  ("encoding.add", tr1::bind(&apply_encoding_list, tr1::placeholders::_2));
  20.  
  21. diff --git a/src/display/canvas.cc b/src/display/canvas.cc
  22. index 4394b89..61abf7b 100644
  23. --- a/src/display/canvas.cc
  24. +++ b/src/display/canvas.cc
  25. @@ -99,6 +99,10 @@ Canvas::initialize() {
  26.    m_isInitialized = true;
  27.  
  28.    initscr();
  29. +  start_color();
  30. +  use_default_colors();
  31. +  init_pair(2, -1, -1);
  32. +  init_pair(1, -1, -1);
  33.    raw();
  34.    noecho();
  35.    nodelay(stdscr, TRUE);
  36. diff --git a/src/display/window_download_list.cc b/src/display/window_download_list.cc
  37. index 0b40713..93b0a8f 100644
  38. --- a/src/display/window_download_list.cc
  39. +++ b/src/display/window_download_list.cc
  40. @@ -37,6 +37,7 @@
  41.  #include "config.h"
  42.  
  43.  #include <rak/algorithm.h>
  44. +#include <torrent/rate.h>
  45.  
  46.  #include "core/download.h"
  47.  #include "core/view.h"
  48. @@ -96,8 +97,22 @@ WindowDownloadList::redraw() {
  49.      char* last = buffer + m_canvas->width() - 2 + 1;
  50.  
  51.      print_download_title(buffer, last, *range.first);
  52. -    m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
  53. -    
  54. +    m_canvas->print(0, pos, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
  55. +    if( (*range.first)->is_done() ) {
  56. +      if( (*range.first)->download()->info()->up_rate()->rate() != 0 ) {
  57. +        m_canvas->set_attr(0, pos, m_canvas->width()-1, A_BOLD, 2);
  58. +      } else {
  59. +        m_canvas->set_attr(0, pos, m_canvas->width()-1, A_NORMAL, 2);
  60. +      }
  61. +    } else if( (*range.first)->is_active() ) {
  62. +      if( (*range.first)->download()->info()->down_rate()->rate() != 0 ) {
  63. +        m_canvas->set_attr(0, pos, m_canvas->width()-1, A_BOLD, 1);
  64. +      } else {
  65. +        m_canvas->set_attr(0, pos, m_canvas->width()-1, A_NORMAL, 1);
  66. +      }
  67. +    }
  68. +    pos++;
  69. +
  70.      print_download_info(buffer, last, *range.first);
  71.      m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
  72.  
  73. @@ -105,7 +120,43 @@ WindowDownloadList::redraw() {
  74.      m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
  75.  
  76.      ++range.first;
  77. -  }    
  78. +  }
  79. +}
  80. +
  81. +void
  82. +WindowDownloadList::set_done_fg_color(int64_t color) {
  83. +  short fg, bg;
  84. +  pair_content(2, &fg, &bg);
  85. +  if( color < 0 ) color = -1;
  86. +  color = color % 8;
  87. +  init_pair(2, (short)color, bg);
  88. +}
  89. +
  90. +void
  91. +WindowDownloadList::set_done_bg_color(int64_t color) {
  92. +  short fg, bg;
  93. +  pair_content(2, &fg, &bg);
  94. +  if( color < 0 ) color = -1;
  95. +  color = color % 8;
  96. +  init_pair(2, fg, (short)color);
  97. +}
  98. +
  99. +void
  100. +WindowDownloadList::set_active_fg_color(int64_t color) {
  101. +  short fg, bg;
  102. +  pair_content(1, &fg, &bg);
  103. +  if( color < 0 ) color = -1;
  104. +  color = color % 8;
  105. +  init_pair(1, (short)color, bg);
  106. +}
  107. +
  108. +void
  109. +WindowDownloadList::set_active_bg_color(int64_t color) {
  110. +  short fg, bg;
  111. +  pair_content(1, &fg, &bg);
  112. +  if( color < 0 ) color = -1;
  113. +  color = color % 8;
  114. +  init_pair(1, fg, (short)color);
  115.  }
  116.  
  117.  }
  118. diff --git a/src/display/window_download_list.h b/src/display/window_download_list.h
  119. index 0fed0c1..0e8731b 100644
  120. --- a/src/display/window_download_list.h
  121. +++ b/src/display/window_download_list.h
  122. @@ -60,6 +60,11 @@ public:
  123.  
  124.    void                set_view(core::View* l);
  125.  
  126. +  void                set_done_fg_color(int64_t color);
  127. +  void                set_done_bg_color(int64_t color);
  128. +  void                set_active_fg_color(int64_t color);
  129. +  void                set_active_bg_color(int64_t color);
  130. +
  131.  private:
  132.    core::View*         m_view;
  133.  
  134. diff --git a/src/main.cc b/src/main.cc
  135. index 796a96a..9ab8f0d 100644
  136. --- a/src/main.cc
  137. +++ b/src/main.cc
  138. @@ -400,6 +400,11 @@ main(int argc, char** argv) {
  139.      CMD2_REDIRECT        ("ip",         "network.local_address.set");
  140.      CMD2_REDIRECT        ("port_range", "network.port_range.set");
  141.  
  142. +    CMD2_REDIRECT       ("done_fg_color", "colors.done_fg_color.set");
  143. +    CMD2_REDIRECT       ("done_bg_color", "colors.done_bg_color.set");
  144. +    CMD2_REDIRECT       ("active_fg_color", "colors.active_fg_color.set");
  145. +    CMD2_REDIRECT       ("active_bg_color", "colors.active_bg_color.set");
  146. +
  147.      CMD2_REDIRECT_GENERIC("dht",      "dht.mode.set");
  148.      CMD2_REDIRECT_GENERIC("dht_port", "dht.port.set");
  149.  
  150. diff --git a/src/ui/download_list.cc b/src/ui/download_list.cc
  151. index edacc9b..a7e20ad 100644
  152. --- a/src/ui/download_list.cc
  153. +++ b/src/ui/download_list.cc
  154. @@ -138,6 +138,11 @@ DownloadList::unfocus_download(core::Download* d) {
  155.    current_view()->next_focus();
  156.  }
  157.  
  158. +display::WindowDownloadList*
  159. +DownloadList::current_window_list() {
  160. +  return dynamic_cast<ElementDownloadList*>(m_uiArray[DISPLAY_DOWNLOAD_LIST])->window();
  161. +}
  162. +
  163.  void
  164.  DownloadList::activate_display(Display displayType) {
  165.    if (!is_active())
  166. diff --git a/src/ui/download_list.h b/src/ui/download_list.h
  167. index 803de05..36ce3f2 100644
  168. --- a/src/ui/download_list.h
  169. +++ b/src/ui/download_list.h
  170. @@ -101,6 +101,7 @@ public:
  171.    void                activate_display(Display d);
  172.  
  173.    core::View*         current_view();
  174. +  display::WindowDownloadList* current_window_list();
  175.    void                set_current_view(const std::string& name);
  176.  
  177.    void                slot_open_uri(SlotOpenUri s) { m_slotOpenUri = s; }
  178. diff --git a/src/ui/element_download_list.h b/src/ui/element_download_list.h
  179. index 20185b5..00ef880 100644
  180. --- a/src/ui/element_download_list.h
  181. +++ b/src/ui/element_download_list.h
  182. @@ -60,6 +60,7 @@ public:
  183.    void                disable();
  184.  
  185.    core::View*         view() { return m_view; }
  186. +  WDownloadList*      window() { return m_window; }
  187.    void                set_view(core::View* l);
  188.  
  189.    void                receive_command(const char* cmd);
  190. diff --git a/src/ui/root.cc b/src/ui/root.cc
  191. index d109976..2461b19 100644
  192. --- a/src/ui/root.cc
  193. +++ b/src/ui/root.cc
  194. @@ -45,6 +45,7 @@
  195.  
  196.  #include "core/manager.h"
  197.  #include "display/frame.h"
  198. +#include "display/window_download_list.h"
  199.  #include "display/window_http_queue.h"
  200.  #include "display/window_title.h"
  201.  #include "display/window_input.h"
  202. @@ -66,7 +67,11 @@ Root::Root() :
  203.    m_windowTitle(NULL),
  204.    m_windowHttpQueue(NULL),
  205.    m_windowInput(NULL),
  206. -  m_windowStatusbar(NULL) {
  207. +  m_windowStatusbar(NULL),
  208. +  done_fg_color(-1),
  209. +  done_bg_color(-1),
  210. +  active_fg_color(-1),
  211. +  active_bg_color(-1) {
  212.  }
  213.  
  214.  void
  215. @@ -98,6 +103,10 @@ Root::init(Control* c) {
  216.    setup_keys();
  217.  
  218.    m_downloadList->activate(rootFrame->frame(1));
  219. +  m_downloadList->current_window_list()->set_done_fg_color(done_fg_color);
  220. +  m_downloadList->current_window_list()->set_done_bg_color(done_bg_color);
  221. +  m_downloadList->current_window_list()->set_active_fg_color(active_fg_color);
  222. +  m_downloadList->current_window_list()->set_active_bg_color(active_bg_color);
  223.  }
  224.  
  225.  void
  226. @@ -273,4 +282,44 @@ Root::current_input() {
  227.    return m_windowInput->input();
  228.  }
  229.  
  230. +int
  231. +Root::get_done_fg_color() {
  232. +  return done_fg_color;
  233. +}
  234. +
  235. +void
  236. +Root::set_done_fg_color(int64_t color) {
  237. +  done_fg_color = color;
  238. +}
  239. +
  240. +int
  241. +Root::get_done_bg_color() {
  242. +  return done_bg_color;
  243. +}
  244. +
  245. +void
  246. +Root::set_done_bg_color(int64_t color) {
  247. +  done_bg_color = color;
  248. +}
  249. +
  250. +int
  251. +Root::get_active_fg_color() {
  252. +  return active_fg_color;
  253. +}
  254. +
  255. +void
  256. +Root::set_active_fg_color(int64_t color) {
  257. +  active_fg_color = color;
  258. +}
  259. +
  260. +int
  261. +Root::get_active_bg_color() {
  262. +  return active_bg_color;
  263. +}
  264. +
  265. +void
  266. +Root::set_active_bg_color(int64_t color) {
  267. +  active_bg_color = color;
  268. +}
  269. +
  270.  }
  271. diff --git a/src/ui/root.h b/src/ui/root.h
  272. index cbc5ff4..6558d77 100644
  273. --- a/src/ui/root.h
  274. +++ b/src/ui/root.h
  275. @@ -83,6 +83,15 @@ public:
  276.    void                set_down_throttle_i64(int64_t throttle) { set_down_throttle(throttle >> 10); }
  277.    void                set_up_throttle_i64(int64_t throttle)   { set_up_throttle(throttle >> 10); }
  278.  
  279. +  int                 get_done_fg_color();
  280. +  void                set_done_fg_color(int64_t color);
  281. +  int                 get_done_bg_color();
  282. +  void                set_done_bg_color(int64_t color);
  283. +  int                 get_active_fg_color();
  284. +  void                set_active_fg_color(int64_t color);
  285. +  int                 get_active_bg_color();
  286. +  void                set_active_bg_color(int64_t color);
  287. +
  288.    void                adjust_down_throttle(int throttle);
  289.    void                adjust_up_throttle(int throttle);
  290.  
  291. @@ -105,6 +114,11 @@ private:
  292.    WStatusbar*         m_windowStatusbar;
  293.  
  294.    input::Bindings     m_bindings;
  295. +
  296. +  int64_t             done_fg_color;
  297. +  int64_t             done_bg_color;
  298. +  int64_t             active_fg_color;
  299. +  int64_t             active_bg_color;
  300.  };
  301.  
  302.  }