[Aptitude-svn-commit] r3521 - in branches/aptitude-0.3/aptitude: . src/vscreen

Daniel Burrows dburrows@costa.debian.org
Sat, 02 Jul 2005 03:53:53 +0000


Author: dburrows
Date: Sat Jul  2 03:53:50 2005
New Revision: 3521

Modified:
   branches/aptitude-0.3/aptitude/ChangeLog
   branches/aptitude-0.3/aptitude/src/vscreen/curses++.cc
   branches/aptitude-0.3/aptitude/src/vscreen/curses++.h
   branches/aptitude-0.3/aptitude/src/vscreen/vscreen_widget.h
Log:
Update show_string_as_progbar for wide characters.

Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog	(original)
+++ branches/aptitude-0.3/aptitude/ChangeLog	Sat Jul  2 03:53:50 2005
@@ -1,5 +1,9 @@
 2005-07-01  Daniel Burrows  <dburrows@debian.org>
 
+	* src/vscreen/curses++.cc, src/vscreen/curses++.h, src/vscreen/vscreen_widget.h:
+
+	  Update show_string_as_progbar for wide characters.
+
 	* src/download_bar.cc, src/download_bar.h:
 
 	  Fix the download bar for wide characters.

Modified: branches/aptitude-0.3/aptitude/src/vscreen/curses++.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/vscreen/curses++.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/vscreen/curses++.cc	Sat Jul  2 03:53:50 2005
@@ -268,7 +268,9 @@
   return amt;
 }
 
-void cwindow::show_string_as_progbar(int x, int y, string s, int attr1, int attr2, int size1, int totalsize)
+void cwindow::show_string_as_progbar(int x, int y, wstring s,
+				     int attr1, int attr2, int size1,
+				     int totalsize)
 {
   int width,height;
 
@@ -277,17 +279,21 @@
   attrset(attr1);
   move(y, x);
 
-  for(int i=0; i<totalsize; i++)
+  size_t loc=0;
+  while(x<width)
     {
-      if(i==size1)
+      if(x>=size1)
 	attrset(attr2);
 
-      if(((unsigned int) i)<s.size())
-	addch((unsigned char) s[i]);
-      // Ack, that's ugly.  Remind me to use strings that have unsigned chars
-      // as their contents next time..
-      else
-	addch(' ');
+      wchar_t ch=L' ';
+      if(loc<s.size())
+	{
+	  ch=s[loc];
+	  ++loc;
+	}
+
+      add_wch(ch);
+      x+=wcwidth(ch);
     }
 }
 

Modified: branches/aptitude-0.3/aptitude/src/vscreen/curses++.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/vscreen/curses++.h	(original)
+++ branches/aptitude-0.3/aptitude/src/vscreen/curses++.h	Sat Jul  2 03:53:50 2005
@@ -544,7 +544,9 @@
   int getmaxy() {return _getmaxy(win);}
   int getmaxx() {return _getmaxx(win);}
 
-  void show_string_as_progbar(int x, int y, std::string s, int attr1, int attr2, int size1, int totalsize);
+  void show_string_as_progbar(int x, int y, std::wstring s,
+			      int attr1, int attr2, int size1,
+			      int totalsize);
   // Glitz bit :) Displays the given string with a progress bar behind it.
 
   void display_header(std::wstring s, const attr_t attr);

Modified: branches/aptitude-0.3/aptitude/src/vscreen/vscreen_widget.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/vscreen/vscreen_widget.h	(original)
+++ branches/aptitude-0.3/aptitude/src/vscreen/vscreen_widget.h	Sat Jul  2 03:53:50 2005
@@ -343,7 +343,16 @@
   int getmaxy() {return win?win.getmaxy():0;}
   int getmaxx() {return win?win.getmaxx():0;}
 
-  void show_string_as_progbar(int x, int y, std::string s, int attr1, int attr2, int size1, int totalsize) {if(win) win.show_string_as_progbar(x, y, s, attr1, attr2, size1, totalsize);}
+  void show_string_as_progbar(int x, int y, std::wstring s,
+			      const style &st1, const style &st2,
+			      int size1, int totalsize)
+  {
+    if(win)
+      win.show_string_as_progbar(x, y, s,
+				 st1.get_attrs(),
+				 st2.get_attrs(),
+				 size1, totalsize);
+  }
 
   void display_header(std::wstring s, const style &st) {if(win) win.display_header(s, st.get_attrs());}
   void display_status(std::wstring s, const style &st) {if(win) win.display_status(s, st.get_attrs());}