From 914c7c1aeb703b2fd32fb97629528ae5aefb1933 Mon Sep 17 00:00:00 2001 From: rakshasa Date: Wed, 26 Jan 2005 22:04:16 +0000 Subject: [PATCH] Commiting rtorrent display stuff. git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@235 e378c898-3ddf-0310-93e7-cc216c733640 --- configure.ac | 2 +- src/Makefile.am | 1 - src/display/Makefile.am | 9 +++++++++ src/display/manager.cc | 18 ++++++++++++++++++ src/display/manager.h | 33 +++++++++++++++++++++++++++++++++ src/rtorrent.cc | 9 ++++++--- 6 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 src/display/Makefile.am create mode 100644 src/display/manager.cc create mode 100644 src/display/manager.h diff --git a/configure.ac b/configure.ac index 08348e9b..2122cea0 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT(src/rtorrent.cc, 0.0.0, jaris@ifi.uio.no) +AC_INIT(rtorrent, 0.0.0, jaris@ifi.uio.no) AM_INIT_AUTOMAKE AM_CONFIG_HEADER(config.h) diff --git a/src/Makefile.am b/src/Makefile.am index d714e295..0cd5b89e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -3,7 +3,6 @@ SUBDIRS = \ bin_PROGRAMS = rtorrent -rtorrent_LDFLAGS = -version-info $(RTORRENT_INTERFACE_VERSION_INFO) rtorrent_LDADD = \ $(top_srcdir)/src/display/libsub_display.a diff --git a/src/display/Makefile.am b/src/display/Makefile.am new file mode 100644 index 00000000..95c3cc12 --- /dev/null +++ b/src/display/Makefile.am @@ -0,0 +1,9 @@ +noinst_LIBRARIES = libsub_display.a + +libsub_display_a_SOURCES = \ + canvas.cc \ + canvas.h \ + manager.cc \ + manager.h + +INCLUDES = -I$(srcdir) -I$(srcdir)/.. -I$(top_srcdir) diff --git a/src/display/manager.cc b/src/display/manager.cc new file mode 100644 index 00000000..66747ddb --- /dev/null +++ b/src/display/manager.cc @@ -0,0 +1,18 @@ +#include "config.h" + +#include "manager.h" +#include "canvas.h" + +#include +#include + +namespace display { + +void +Manager::do_update() { + std::for_each(rbegin(), rend(), std::mem_fun(&Canvas::refresh)); + + Canvas::do_update(); +} + +} diff --git a/src/display/manager.h b/src/display/manager.h new file mode 100644 index 00000000..fbcf97f1 --- /dev/null +++ b/src/display/manager.h @@ -0,0 +1,33 @@ +#ifndef RTORRENT_DISPLAY_MANAGER_H +#define RTORRENT_DISPLAY_MANAGER_H + +#include + +namespace display { + +class Canvas; + +class Manager : private std::list { +public: + typedef std::list Base; + + using Base::iterator; + using Base::const_iterator; + using Base::reverse_iterator; + using Base::const_reverse_iterator; + + using Base::begin; + using Base::end; + using Base::rbegin; + using Base::rend; + using Base::push_front; + using Base::push_back; + using Base::pop_front; + using Base::pop_back; + + void do_update(); +}; + +} + +#endif diff --git a/src/rtorrent.cc b/src/rtorrent.cc index b5965c79..7a5276ee 100644 --- a/src/rtorrent.cc +++ b/src/rtorrent.cc @@ -1,11 +1,16 @@ #include "display/canvas.h" +#include "display/manager.h" int main(int argc, char** argv) { display::Canvas::init(); + display::Manager manager; display::Canvas canvas1(0, 0, 20, 0); display::Canvas canvas2(15, 5, 20, 10); + manager.push_front(&canvas1); + manager.push_front(&canvas2); + canvas1.erase(); canvas2.erase(); canvas1.set_background(A_REVERSE); @@ -15,9 +20,7 @@ int main(int argc, char** argv) { canvas1.print(2, 5, "test %i %s", 42, "bar"); - canvas1.refresh(); - canvas2.refresh(); - display::Canvas::do_update(); + manager.do_update(); while (true);