- Timestamp:
- Jun 9, 2010, 8:49:00 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/pLoader/trunk/src/Uploader/GUI/ListCtrlProgress.pm
r6427 r6494 11 11 progress_column 12 12 progress_bars 13 items 14 column_item_data 15 item_data 13 16 / 14 17 ); … … 23 26 24 27 $self->progress_bars([]); 28 $self->item_data([]); 25 29 26 30 Wx::Event::EVT_PAINT( … … 34 38 ); 35 39 40 36 41 $self; 37 42 } 38 43 39 sub SetItemProgressBar {40 my ( $self, $item ) = @_;41 44 42 return unless defined $self->progress_column; 43 44 my $rect = $self->GetSubItemRect($item, $self->progress_column); 45 sub replace_item_data { 46 my ( $self, $item, $data ) = @_; 45 47 46 $self->progress_bars->[$item]= Wx::Gauge->new( 48 $self->item_data->[$item] = $data; 49 $self->progress_bars->[$item] ||= Wx::Gauge->new( 47 50 $self, 48 51 -1, 49 52 100, 50 $rect->GetPosition,51 $rect->GetSize,53 wxDefaultPosition, 54 wxDefaultSize, 52 55 Wx::wxGA_SMOOTH 53 56 ); 57 58 my $progress_bar = $self->progress_bars->[$item]; 59 $self->paint_progress_bar($item, $progress_bar); 60 $self->RefreshItem($item); 54 61 } 55 62 56 sub GetSubItemRect { 63 64 sub add_progress_items { 65 my ( $self, $added_items ) = @_; 66 67 push @{$self->item_data}, @{$added_items}; 68 69 $self->SetItemCount(scalar @{$self->item_data}); 70 } 71 72 73 sub OnGetItemText { 74 my ( $self, $item, $column ) = @_; 75 76 my $value = $self->column_item_data->{$column}->( 77 $self->item_data->[$item] 78 ); 79 80 # progress column 81 if( $column == $self->progress_column ){ 82 $self->set_item_progress_value( 83 $item, 84 $value 85 ); 86 $value = ''; 87 } 88 89 return $value; 90 } 91 92 93 94 sub get_item_progress_rect { 57 95 my ( $self, $item, $subitem ) = @_; 58 96 59 my $rect; 60 eval { $rect = $self->SUPER::GetSubItemRect($item, $subitem); }; 61 if($@){ 97 my $rect = $self->GetItemRect($item); 98 #my $pos = $self->GetItemPosition($item); 99 # cumulate columns widths. If progress bar is column 4, 100 # cumulate columns widths 0, 1, 2, 3 101 my $x = $rect->GetX; 62 102 63 # have to calculate sub item position and size 64 $rect = $self->GetItemRect($item); 65 66 my $x = $rect->GetX; 67 map { $x += $self->GetColumnWidth($_ ) } grep { $_ < $subitem } (0..$subitem); 68 69 $rect->SetX($x); 70 $rect->SetWidth( 71 $self->GetColumnWidth($subitem ) 72 ); 73 } 103 map { $x += $self->GetColumnWidth($_) } grep { $_ < $subitem } (0..$subitem); 104 $rect->SetX($x); 105 $rect->SetWidth( 106 $self->GetColumnWidth($subitem) 107 ); 74 108 75 109 $rect; 76 110 } 77 111 78 sub SetItemProgressValue { 112 113 sub set_item_progress_value { 79 114 my ( $self, $indx, $value ) = @_; 80 115 … … 87 122 } 88 123 else{ 89 $ $item->Pulse;124 $item->Pulse; 90 125 } 91 126 } … … 95 130 my ( $self ) = @_; 96 131 97 my $i = 0;98 132 # re-paint progress bars at the right position and size 99 # hide the bars that are no longer visible after scrolling 100 while( $i < $self->GetItemCount ) { 101 my $progress_bar = $self->progress_bars->[$i]; 102 if($i < $self->GetTopItem or $i > $self->GetTopItem + $self->GetCountPerPage){ 103 $progress_bar->Hide; 104 } 105 else{ 106 $progress_bar->Show; 107 $self->paint_progress_bar($i, $progress_bar); 108 } 133 my $i=0; 134 map{ 135 $self->paint_progress_bar($i, $_); 109 136 $i++; 110 } 137 }@{$self->progress_bars}; 111 138 } 112 139 … … 115 142 my ( $self, $item, $progress_bar ) = @_; 116 143 117 my $rect = $self->GetSubItemRect($item, $self->progress_column); 144 my $rect = $self->get_item_progress_rect($item, $self->progress_column); 145 # top most visible item 146 $self->{_y_top} ||= $rect->GetY; 147 148 # hidden 149 my $bar_pos = Wx::Point->new(-1000, -1000); 150 151 if( $rect->GetY >= $self->{_y_top}) { 152 $bar_pos = $rect->GetPosition; 153 } 118 154 119 155 $progress_bar->Move( 120 $rect->GetPosition156 $bar_pos 121 157 ); 122 158 … … 124 160 $rect->GetSize 125 161 ); 126 127 162 } 128 163 164 165 129 166 1;
Note: See TracChangeset
for help on using the changeset viewer.