File Coverage

blib/lib/ZConf/RSS/GUI.pm
Criterion Covered Total %
statement 12 138 8.7
branch 0 38 0.0
condition n/a
subroutine 4 11 36.3
pod 7 7 100.0
total 23 194 11.8


line stmt bran cond sub pod time code
1             package ZConf::RSS::GUI;
2              
3 1     1   22023 use warnings;
  1         2  
  1         60  
4 1     1   6 use strict;
  1         2  
  1         71  
5 1     1   1013 use ZConf::GUI;
  1         188730  
  1         34  
6 1     1   893 use ZConf::RSS;
  1         3  
  1         1537  
7              
8             =head1 NAME
9              
10             ZConf::RSS::GUI - Provides various GUI methods for ZConf::RSS.
11              
12             =head1 VERSION
13              
14             Version 0.0.2
15              
16             =cut
17              
18             our $VERSION = '0.0.2';
19              
20              
21             =head1 SYNOPSIS
22              
23             use ZConf::RSS::GUI;
24              
25             my $zcrssGui = ZConf::RSS::GUI->new();
26             ...
27              
28             =head1 METHODS
29              
30             =head2 new
31              
32             =head3 args hash
33              
34             =head4 obj
35              
36             This is object returned by ZConf::RSS.
37              
38             my $zcrssGui=ZConf::RSS::GUI->new({obj=>$obj});
39             if($zcrssGui->{error}){
40             print "Error!\n";
41             }
42              
43             =cut
44              
45             sub new{
46 0     0 1   my %args;
47 0 0         if(defined($_[1])){
48 0           %args= %{$_[1]};
  0            
49             }
50 0           my $function='new';
51              
52 0           my $self={error=>undef,
53             perror=>undef,
54             errorString=>undef,
55             module=>'ZConf-RSS-GUI',
56             };
57 0           bless $self;
58              
59             #gets the object or initiate it
60 0 0         if (!defined($args{obj})) {
61 0           $self->{obj}=ZConf::RSS->new;
62 0 0         if ($self->{obj}->{error}) {
63 0           $self->{error}=1;
64 0           $self->{perror}=1;
65 0           $self->{errorString}='Failed to initiate ZConf::RSS. error="'.
66             $self->{obj}->{error}.'" errorString="'.$self->{obj}->{errorString}.'"';
67 0           warn($self->{module}.' '.$function.':'.$self->{error}.': '.$self->{errorString});
68 0           return $self;
69             }
70             }else {
71 0           $self->{obj}=$args{obj};
72             }
73              
74             #gets the zconf object
75 0           $self->{zconf}=$self->{obj}->{zconf};
76              
77             #gets the gui
78 0           $self->{gui}=ZConf::GUI->new({zconf=>$self->{zconf}});
79 0 0         if ($self->{obj}->{error}) {
80 0           $self->{error}=2;
81 0           $self->{perror}=1;
82 0           $self->{errorString}='Failed to initiate ZConf::GUI. error="'.
83             $self->{gui}->{error}.'" errorString="'.$self->{gui}->{errorString}.'"';
84 0           warn($self->{module}.' '.$function.':'.$self->{error}.': '.$self->{errorString});
85 0           return $self;
86             }
87              
88 0           $self->{useX}=$self->{gui}->useX('ZConf::RSS');
89              
90 0           my @preferred=$self->{gui}->which('ZConf::RSS');
91 0 0         if ($self->{gui}->{error}) {
92 0           $self->{error}=3;
93 0           $self->{perror}=1;
94 0           $self->{errorString}='Failed to get the preferred backend list. error="'.
95             $self->{gui}->{error}.'" errorString="'.$self->{gui}->{errorString}.'"';
96 0           warn($self->{module}.' '.$function.':'.$self->{error}.': '.$self->{errorString});
97 0           return $self;
98             }
99              
100             #make sure we have something
101 0 0         if (!defined($preferred[0])) {
102 0           $self->{error}=6;
103 0           $self->{perror}=1;
104 0           $self->{errorString}='Which did not return any preferred backends';
105 0           warn($self->{module}.' '.$function.':'.$self->{error}.': '.$self->{errorString});
106 0           return $self;
107             }
108              
109             #initiate the backend
110 0           my $toeval='use ZConf::RSS::GUI::'.$preferred[0].';'."\n".
111             '$self->{be}=ZConf::RSS::GUI::'.$preferred[0].
112             '->new({obj=>$self->{obj}});';
113 0           my $er=eval($toeval);
114              
115             #failed to initiate the backend
116 0 0         if (!defined($self->{be})) {
117 0           $self->{error}=4;
118 0           $self->{perror}=1;
119 0           $self->{errorString}='The backend returned undefined';
120 0           warn($self->{module}.' '.$function.':'.$self->{error}.': '.$self->{errorString});
121 0           return $self;
122             }
123              
124             #backend errored
125 0 0         if ($self->{be}->{error}) {
126 0           $self->{error}=4;
127 0           $self->{perror}=1;
128 0           $self->{errorString}='The backend returned undefined. error="'.
129             $self->{be}->{error}.'" errorString="'.$self->{be}->{errorString}.'"';
130 0           warn($self->{module}.' '.$function.':'.$self->{error}.': '.$self->{errorString});
131 0           return $self;
132             }
133              
134 0           return $self;
135             }
136              
137             =head2 addFeed
138              
139             This invokes a dialog to add a new feed.
140              
141             There is one optional arguement taken and it is the URL
142             for the feed. This will be used to automatically populate
143             URL feild in the dialog.
144              
145             $zcrssGui->addFeed('http://foo.bar/rss.xml');
146             if($zcrssGui->{error}){
147             print "Error!\n";
148             }
149              
150             =cut
151              
152             sub addFeed{
153 0     0 1   my $self=$_[0];
154 0           my $feed=$_[1];
155 0           my $function='manage';
156              
157 0           $self->errorblank;
158 0 0         if ($self->{error}) {
159 0           warn($self->{module}.' '.$function.': A permanent error is set. error="'.$self->{error}.'" errorString="'.$self->{errorString}.'"');
160 0           return undef;
161             }
162              
163 0           $self->{be}->addFeed($feed);
164 0 0         if ($self->{be}->{error}) {
165 0           $self->{error}=5;
166 0           $self->{errorString}='The backend errored. error="'.
167             $self->{be}->{error}.'" errorString="'.$self->{be}->{errorString}.'"';
168 0           warn($self->{module}.' '.$function.': A permanent error is set. error="'.$self->{error}.'" errorString="'.$self->{errorString}.'"');
169 0           return undef;
170             }
171              
172 0           return 1;
173             }
174              
175             =head2 manage
176              
177             Invokes the view window.
178              
179             $zcrssGui->manage;
180             if($zcrssGui->{error}){
181             print "Error!\n";
182             }
183              
184             =cut
185              
186             sub manage{
187 0     0 1   my $self=$_[0];
188 0           my $function='manage';
189              
190 0           $self->errorblank;
191 0 0         if ($self->{error}) {
192 0           warn($self->{module}.' '.$function.': A permanent error is set. error="'.$self->{error}.'" errorString="'.$self->{errorString}.'"');
193 0           return undef;
194             }
195              
196 0           $self->{be}->manage;
197 0 0         if ($self->{be}->{error}) {
198 0           $self->{error}=5;
199 0           $self->{errorString}='The backend errored. error="'.
200             $self->{be}->{error}.'" errorString="'.$self->{be}->{errorString}.'"';
201 0           warn($self->{module}.' '.$function.': A permanent error is set. error="'.$self->{error}.'" errorString="'.$self->{errorString}.'"');
202 0           return undef;
203             }
204              
205 0           return 1;
206             }
207              
208             =head2 view
209              
210             Invokes the view window.
211              
212             $zcrssGui->view;
213             if($zcrssGui->{error}){
214             print "Error!\n";
215             }
216              
217             =cut
218              
219             sub view{
220 0     0 1   my $self=$_[0];
221 0           my $function='view';
222              
223 0           $self->errorblank;
224 0 0         if ($self->{error}) {
225 0           warn($self->{module}.' '.$function.': A permanent error is set. error="'.$self->{error}.'" errorString="'.$self->{errorString}.'"');
226 0           return undef;
227             }
228              
229 0           $self->{be}->view;
230 0 0         if ($self->{be}->{error}) {
231 0           $self->{error}=5;
232 0           $self->{errorString}='The backend errored. error="'.
233             $self->{be}->{error}.'" errorString="'.$self->{be}->{errorString}.'"';
234 0           warn($self->{module}.' '.$function.': A permanent error is set. error="'.$self->{error}.'" errorString="'.$self->{errorString}.'"');
235 0           return undef;
236             }
237              
238 0           return 1;
239             }
240              
241             =head2 dialogs
242              
243             This returns a array of available dialogs.
244              
245             my @dialogs=$zcrssGui->dialogs;
246             if($zcrssGui->{error}){
247             print "Error!\n";
248             }
249              
250             =cut
251              
252             sub dialogs{
253 0     0 1   my $self=$_[0];
254 0           my $function='dialogs';
255              
256 0           $self->errorblank;
257 0 0         if ($self->{error}) {
258 0           warn($self->{module}.' '.$function.': A permanent error is set. error="'.$self->{error}.'" errorString="'.$self->{errorString}.'"');
259 0           return undef;
260             }
261              
262 0           my @dialogs=$self->{be}->dialogs;
263 0 0         if ($self->{be}->{error}) {
264 0           $self->{error}=5;
265 0           $self->{errorString}='The backend errored. error="'.
266             $self->{be}->{error}.'" errorString="'.$self->{be}->{errorString}.'"';
267 0           warn($self->{module}.' '.$function.': A permanent error is set. error="'.$self->{error}.'" errorString="'.$self->{errorString}.'"');
268 0           return undef;
269             }
270              
271 0           return @dialogs;
272             }
273              
274             =head2 windows
275              
276             This returns a array of available dialogs.
277              
278             my @windows=$zcrssGui->windows;
279             if($zcrssGui->{error}){
280             print "Error!\n";
281             }
282              
283             =cut
284              
285             sub windows{
286 0     0 1   my $self=$_[0];
287 0           my $function='windows';
288              
289 0           $self->errorblank;
290 0 0         if ($self->{error}) {
291 0           warn($self->{module}.' '.$function.': A permanent error is set. error="'.$self->{error}.'" errorString="'.$self->{errorString}.'"');
292 0           return undef;
293             }
294              
295 0           my @windows=$self->{be}->windows;
296 0 0         if ($self->{be}->{error}) {
297 0           $self->{error}=5;
298 0           $self->{errorString}='The backend errored. error="'.
299             $self->{be}->{error}.'" errorString="'.$self->{be}->{errorString}.'"';
300 0           warn($self->{module}.' '.$function.': A permanent error is set. error="'.$self->{error}.'" errorString="'.$self->{errorString}.'"');
301 0           return undef;
302             }
303              
304 0           return @windows;
305             }
306              
307             =head2 errorblank
308              
309             This blanks the error storage and is only meant for internal usage.
310              
311             It does the following.
312              
313             $self->{error}=undef;
314             $self->{errorString}="";
315              
316             =cut
317              
318             #blanks the error flags
319             sub errorblank{
320 0     0 1   my $self=$_[0];
321              
322 0 0         if ($self->{perror}) {
323 0           warn('ZConf-DevTemplate errorblank: A permanent error is set');
324 0           return undef;
325             }
326              
327 0           $self->{error}=undef;
328 0           $self->{errorString}="";
329            
330 0           return 1;
331             }
332              
333             =head1 ERROR CODES
334              
335             =head2 1
336              
337             Failed to initiate ZConf::RSS.
338              
339             =head2 2
340              
341             Failed to initiate ZConf::GUI.
342              
343             =head2 3
344              
345             Failed to get the preferred.
346              
347             =head2 4
348              
349             Failed to initiate the backend.
350              
351             =head2 5
352              
353             Backend errored.
354              
355             =head2 6
356              
357             No backend found via ZConf::GUI->which.
358              
359             =head1 DIALOGS
360              
361             =head2 addFeed
362              
363             This adds a new feed.
364              
365             =head1 WINDOWS
366              
367             Please not that unless working directly and specifically with a backend, windows and dialogs
368             are effectively the same in that they don't return until the window exits, generally.
369              
370             =head2 view
371              
372             This allows the RSS feeds to be viewed.
373              
374             =head2 manage
375              
376             This allows the RSS feeds to be managed along with the templates.
377              
378             =head1 AUTHOR
379              
380             Zane C. Bowers, C<< >>
381              
382             =head1 BUGS
383              
384             Please report any bugs or feature requests to C, or through
385             the web interface at L. I will be notified, and then you'll
386             automatically be notified of progress on your bug as I make changes.
387              
388              
389              
390              
391             =head1 SUPPORT
392              
393             You can find documentation for this module with the perldoc command.
394              
395             perldoc ZConf::RSS::GUI
396              
397              
398             You can also look for information at:
399              
400             =over 4
401              
402             =item * RT: CPAN's request tracker
403              
404             L
405              
406             =item * AnnoCPAN: Annotated CPAN documentation
407              
408             L
409              
410             =item * CPAN Ratings
411              
412             L
413              
414             =item * Search CPAN
415              
416             L
417              
418             =back
419              
420              
421             =head1 ACKNOWLEDGEMENTS
422              
423              
424             =head1 COPYRIGHT & LICENSE
425              
426             Copyright 2009 Zane C. Bowers, all rights reserved.
427              
428             This program is free software; you can redistribute it and/or modify it
429             under the same terms as Perl itself.
430              
431              
432             =cut
433              
434             1; # End of ZConf::RSS::GUI