Mercurial > pidgin.yaz
comparison finch/libgnt/gntprogressbar.c @ 26639:a372ea58c3ae
Change how the progressbar is drawn.
Don't highlight the progress-bar ... because it looks weird when the
window is not in focus.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Sun, 12 Apr 2009 20:55:49 +0000 |
parents | cd7fa6306f85 |
children | 09ad3b69711f |
comparison
equal
deleted
inserted
replaced
26638:cd7fa6306f85 | 26639:a372ea58c3ae |
---|---|
53 gnt_progress_bar_draw (GntWidget *widget) | 53 gnt_progress_bar_draw (GntWidget *widget) |
54 { | 54 { |
55 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (GNT_PROGRESS_BAR (widget)); | 55 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (GNT_PROGRESS_BAR (widget)); |
56 gchar progress[8]; | 56 gchar progress[8]; |
57 gint start, end, i, pos; | 57 gint start, end, i, pos; |
58 int color; | |
58 | 59 |
59 g_snprintf (progress, sizeof (progress), "%.1f%%", priv->fraction * 100); | 60 g_snprintf (progress, sizeof (progress), "%.1f%%", priv->fraction * 100); |
61 color = gnt_color_pair(GNT_COLOR_NORMAL); | |
60 | 62 |
61 switch (priv->orientation) { | 63 switch (priv->orientation) { |
62 case GNT_PROGRESS_LEFT_TO_RIGHT: | 64 case GNT_PROGRESS_LEFT_TO_RIGHT: |
63 case GNT_PROGRESS_RIGHT_TO_LEFT: | 65 case GNT_PROGRESS_RIGHT_TO_LEFT: |
64 start = (priv->orientation == GNT_PROGRESS_LEFT_TO_RIGHT ? 0 : (1.0 - priv->fraction) * widget->priv.width); | 66 start = (priv->orientation == GNT_PROGRESS_LEFT_TO_RIGHT ? 0 : (1.0 - priv->fraction) * widget->priv.width); |
65 end = (priv->orientation == GNT_PROGRESS_LEFT_TO_RIGHT ? widget->priv.width * priv->fraction : widget->priv.width); | 67 end = (priv->orientation == GNT_PROGRESS_LEFT_TO_RIGHT ? widget->priv.width * priv->fraction : widget->priv.width); |
66 | 68 |
67 /* background */ | 69 /* background */ |
68 for (i = 0; i < widget->priv.height; i++) | 70 for (i = 0; i < widget->priv.height; i++) |
69 mvwhline (widget->window, i, 0, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT) | A_REVERSE, widget->priv.width); | 71 mvwhline (widget->window, i, 0, ' ' | color, widget->priv.width); |
70 | 72 |
71 /* foreground */ | 73 /* foreground */ |
72 for (i = 0; i < widget->priv.height; i++) | 74 for (i = 0; i < widget->priv.height; i++) |
73 mvwhline (widget->window, i, start, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT), end); | 75 mvwhline (widget->window, i, start, ACS_CKBOARD | color | A_REVERSE, end); |
74 | 76 |
75 /* text */ | 77 /* text */ |
76 if (priv->show_value) { | 78 if (priv->show_value) { |
77 for (i = 0; i < strlen(progress); i++) { | 79 pos = widget->priv.width / 2 - strlen (progress) / 2; |
78 pos = widget->priv.width / 2 - strlen (progress) / 2 + i; | 80 for (i = 0; i < progress[i]; i++, pos++) { |
79 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT) | ((pos >= start && pos <= end) ? A_NORMAL : A_REVERSE)); | 81 wattrset (widget->window, color | ((pos < start || pos > end) ? A_NORMAL : A_REVERSE)); |
80 mvwprintw (widget->window, widget->priv.height / 2, pos, "%c", progress[i]); | 82 mvwprintw (widget->window, widget->priv.height / 2, pos, "%c", progress[i]); |
81 } | 83 } |
82 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT)); | 84 wattrset (widget->window, color); |
83 } | 85 } |
84 | 86 |
85 break; | 87 break; |
86 case GNT_PROGRESS_TOP_TO_BOTTOM: | 88 case GNT_PROGRESS_TOP_TO_BOTTOM: |
87 case GNT_PROGRESS_BOTTOM_TO_TOP: | 89 case GNT_PROGRESS_BOTTOM_TO_TOP: |
88 start = (priv->orientation == GNT_PROGRESS_TOP_TO_BOTTOM ? 0 : (1.0 - priv->fraction) * widget->priv.height); | 90 start = (priv->orientation == GNT_PROGRESS_TOP_TO_BOTTOM ? 0 : (1.0 - priv->fraction) * widget->priv.height); |
89 end = (priv->orientation == GNT_PROGRESS_TOP_TO_BOTTOM ? widget->priv.height * priv->fraction : widget->priv.height); | 91 end = (priv->orientation == GNT_PROGRESS_TOP_TO_BOTTOM ? widget->priv.height * priv->fraction : widget->priv.height); |
90 | 92 |
91 /* background */ | 93 /* background */ |
92 for (i = 0; i < widget->priv.width; i++) | 94 for (i = 0; i < widget->priv.width; i++) |
93 mvwvline (widget->window, 0, i, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT) | A_REVERSE, widget->priv.height); | 95 mvwvline (widget->window, 0, i, ' ' | color | A_REVERSE, widget->priv.height); |
94 | 96 |
95 /* foreground */ | 97 /* foreground */ |
96 for (i = 0; i < widget->priv.width; i++) | 98 for (i = 0; i < widget->priv.width; i++) |
97 mvwvline (widget->window, start, i, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT), end); | 99 mvwvline (widget->window, start, i, ' ' | color, end); |
98 | 100 |
99 /* text */ | 101 /* text */ |
100 if (priv->show_value) { | 102 if (priv->show_value) { |
101 for (i = 0; i < strlen(progress); i++) { | 103 pos = widget->priv.height / 2 - strlen (progress) / 2; |
102 pos = widget->priv.height / 2 - strlen (progress) / 2 + i; | 104 for (i = 0; i < progress[i]; i++, pos++) { |
103 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT) | ((pos >= start && pos <= end) ? A_NORMAL : A_REVERSE)); | 105 wattrset (widget->window, color | ((pos >= start && pos <= end) ? A_NORMAL : A_REVERSE)); |
104 mvwprintw (widget->window, pos, widget->priv.width / 2, "%c\n", progress[i]); | 106 mvwprintw (widget->window, pos, widget->priv.width / 2, "%c\n", progress[i]); |
105 } | 107 } |
106 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT)); | 108 wattrset (widget->window, color); |
107 } | 109 } |
108 | 110 |
109 break; | 111 break; |
110 default: | 112 default: |
111 g_assert_not_reached (); | 113 g_assert_not_reached (); |