File Coverage

blib/lib/Padre/Plugin/Nopaste/Preferences.pm
Criterion Covered Total %
statement 10 12 83.3
branch n/a
condition n/a
subroutine 4 4 100.0
pod n/a
total 14 16 87.5


line stmt bran cond sub pod time code
1             package Padre::Plugin::Nopaste::Preferences;
2              
3 1     1   71669 use v5.10;
  1         3  
  1         57  
4 1     1   5 use strict;
  1         3  
  1         46  
5 1     1   5 use warnings;
  1         2  
  1         29  
6              
7 1     1   498 use Padre::Unload ();
  0            
  0            
8             use Padre::Plugin::Nopaste::Services ();
9             use Padre::Plugin::Nopaste::FBP::Preferences ();
10              
11             our $VERSION = '0.08';
12             use parent qw(
13             Padre::Plugin::Nopaste::FBP::Preferences
14             Padre::Plugin
15             );
16              
17             #######
18             # Method new
19             #######
20             sub new {
21             my $class = shift;
22             my $main = shift;
23              
24             # Create the dialogue
25             my $self = $class->SUPER::new($main);
26              
27             # define where to display main dialogue
28             $self->CenterOnParent;
29             $self->SetTitle( sprintf Wx::gettext('Nopaste-Preferences v%s'), $VERSION );
30             $self->_set_up;
31              
32             return $self;
33             }
34              
35             #######
36             # Method _set_up
37             #######
38             sub _set_up {
39             my $self = shift;
40             my $main = $self->main;
41             my $config = $main->config;
42             my $config_db = $self->config_read;
43              
44             my $services = Padre::Plugin::Nopaste::Services->new;
45             $self->{nopaste_services} = $services;
46              
47             #Set nickname
48             $self->{config_nickname}->SetLabel( $config->identity_nickname );
49              
50             #get nopaste preferred server and channel from config db
51             $self->{prefered_server} = $config_db->{Services};
52             $self->{prefered_channel} = $config_db->{Channel};
53              
54             # update dialogue
55             $self->_display_servers;
56             $self->_display_channels;
57              
58             return;
59             }
60              
61             #######
62             # Method _display_servers
63             #######
64             sub _display_servers {
65             my $self = shift;
66              
67             my $servers = $self->{nopaste_services}->servers;
68              
69             # set local_server_index to zero in case predefined not found
70             my $local_server_index = 0;
71              
72             for ( 0 .. $#{$servers} ) {
73             if ( $servers->[$_] eq $self->{prefered_server} ) {
74             $local_server_index = $_;
75             }
76             }
77              
78             $self->{nopaste_server}->Clear;
79             $self->{nopaste_server}->Append($servers);
80             $self->{nopaste_server}->SetSelection($local_server_index);
81              
82             return;
83             }
84              
85             #######
86             # Method _display_channels
87             #######
88             sub _display_channels {
89             my $self = shift;
90              
91             my $channels = $self->{nopaste_services}->{ $self->{prefered_server} };
92              
93             # set local_server_index to zero in case predefined not found
94             my $local_channel_index = 0;
95              
96             for ( 0 .. $#{$channels} ) {
97             if ( $channels->[$_] eq $self->{prefered_channel} ) {
98             $local_channel_index = $_;
99             }
100             }
101              
102             $self->{nopaste_channel}->Clear;
103             $self->{nopaste_channel}->Append($channels);
104             $self->{nopaste_channel}->SetSelection($local_channel_index);
105              
106             return;
107             }
108              
109             #######
110             # event handler on_button_ok_clicked
111             #######
112             sub on_button_save_clicked {
113             my $self = shift;
114             my $config_db = $self->config_read;
115              
116             $config_db->{Services} = $self->{nopaste_services}->servers->[ $self->{nopaste_server}->GetSelection() ];
117             $config_db->{Channel} =
118             $self->{nopaste_services}->{ $self->{prefered_server} }->[ $self->{nopaste_channel}->GetSelection() ];
119              
120             $self->config_write($config_db);
121              
122             $self->Hide;
123             return;
124             }
125              
126             #######
127             # event handler on_button_ok_clicked
128             #######
129             sub on_button_reset_clicked {
130             my $self = shift;
131             my $config_db = $self->config_read;
132              
133             $config_db->{Services} = 'Shadowcat';
134             $config_db->{Channel} = '#padre';
135             $self->config_write($config_db);
136              
137             $self->{prefered_server} = 'Shadowcat';
138             $self->{prefered_channel} = '#padre';
139              
140             $self->refresh;
141             return;
142             }
143              
144             #######
145             # event handler on_server_chosen, save choices and close
146             #######
147             sub on_server_chosen {
148             my $self = shift;
149              
150             $self->{prefered_server} = $self->{nopaste_services}->servers->[ $self->{nopaste_server}->GetSelection() ];
151             $self->{prefered_channel} = 0;
152              
153             $self->refresh;
154              
155             return;
156             }
157              
158             #######
159             # refresh dialogue with choices
160             #######
161             sub refresh {
162             my $self = shift;
163              
164             $self->_display_servers;
165             $self->_display_channels;
166              
167             return;
168             }
169              
170              
171             1;
172              
173             __END__