]>
Dogcows Code - chaz/homebank/blob - plugins/hello.pl
4 # ABSTRACT: This is the "hello world" of HomeBank plugins.
5 # AUTHOR: Charles McGarvey <chazmcgarvey@brokenzipper.com>
6 # WEBSITE: http://acme.tld/
7 # (These comments are read, before the plugin is executed, to provide some
8 # information to HomeBank and the user about what this plugin is.)
10 eval { HomeBank-
>version } or die "Cannot run outside of HomeBank";
15 use Scalar
::Util qw
/weaken/;
23 #default => "Booya!!!";
33 my $self = $class->SUPER::new
(@_);
35 $self->on(account_inserted
=> sub {
37 print "account inserted: ", Dumper
($acc);
38 print "account name is ", $acc->name, " and balance is ", $acc->bank_balance, "\n";
39 #$acc->name("FOOOOBAR!");
40 if ($acc->name eq 'Vacation') {
44 print Dumper
($acc->is_inserted);
45 if ($acc->is_inserted) {
46 print "IT IS INSERTED\n";
48 print "not inserted\n";
50 print Dumper
($acc->transactions);
53 #print $self->cool_beans, "\n";
54 #$self->cool_beans(123);
55 #print $self->cool_beans, "\n";
57 $self->create_menuitem;
62 sub on_create_main_window
{
68 $window = HomeBank-
>main_window;
72 print Dumper
($window);
73 $window->set_title("foo bar baz");
74 print $window->get_title, "\n";
76 HomeBank-
>hook("my_hook", $window);
78 $self->create_menuitem;
87 my $window = Gtk2
::Window-
>new('toplevel');
90 print Dumper
($window);
91 $window->set_title("Hello World");
92 #$window->signal_connect(delete_event => sub { Gtk2->main_quit });
93 $window->signal_connect(delete_event
=> sub { undef $test_win });
95 my $button = Gtk2
::Button-
>new('Click Me!');
97 print Dumper
($button);
98 $button->signal_connect(clicked
=> sub {
99 print "Hello Gtk2-Perl: $counter (perl plugin: $self)\n";
101 #if ($temp->is_inserted) {
102 #print "$temp is inserted\n";
104 #print "$temp is NOT inserted\n";
106 #if ($counter == 5) {
109 my $acc = HomeBank
::Account-
>get(rand(10));
110 print "Changin account named ", $acc->name, " to ", $acc->name($acc), "\n";
111 HomeBank-
>main_window->queue_draw;
114 $window->add($button);
122 sub on_enter_main_loop
{
127 my $t = HomeBank
::Transaction-
>new;
128 print "Transaction:::::::: $t: ", $t->amount, "\n";
130 $temp = HomeBank
::Account-
>get(7);
131 print "retained account: ", $temp->name, "\n";
135 my $txn = HomeBank
::Transaction-
>new;
136 $txn->amount(12.3456);
137 print Dumper
($txn), $txn->amount, "\n";
140 my @ret = HomeBank-
>hook("my_hook", @_, $temp, [qw
/foo bar baz/, $txn], { asf
=> 42, quux
=> \
1, meh
=> HomeBank-
>main_window });
141 #my @ret = HomeBank->hook("my_hook", @_, HomeBank->main_window, {
142 #foo => 'bar', baz => 42
146 print "adding back account...\n";
147 $ACC->name("vacation with a different name");
149 HomeBank
::Account-
>compute_balances;
150 print "account name is ", $ACC->name, " and balance is ", $ACC->balance, "\n";
151 print Dumper
($ACC->transactions);
153 my $cloned = $ACC->clone;
154 $cloned->name("vacation copy");
156 #my $asdf = $cloned->open;
157 #$asdf->set_title("this is a new friggin account");
159 #my $z = HomeBank::Account->get_by_name('Checking');
160 for my $xc (HomeBank
::File-
>transactions) {
163 my $date = DateTime-
>new($xc->date)->datetime;
164 print "transaction of amount: ", $xc->amount, "\t", $xc->wording, ", ", $xc->info, ", $num, $date\n";
167 HomeBank
::File-
>owner('Billy Murphy');
168 #HomeBank::File->anonymize;
169 print HomeBank
::File-
>owner, "\n";
171 HomeBank
::File-
>baz($ACC);
174 sub on_deep_hook_recursion
{
177 print STDERR
"recursion is too deep ($level)\n";
183 print "This is MY HOOK!!!!!!\n";
191 if ($_[2]->isa('HomeBank::Boolean')) {
192 print "it is a home;;boolean\n";
194 if ($_[2]->isa('Types::Serialiser::Boolean')) {
195 print "it is a types serialiser thingy\n";
197 if ($_[2]->isa('HomeBank::BooleanBase')) {
198 print "it is a base bool\n";
202 if ($win && ref($win) eq 'HASH') {
205 $w->set_title("this is MY HOOK setting a window title");
209 #print "transferred account: ", $acc->name, "\n";
211 #my $fff = HomeBank::File->foo({foo => 'asdf', bar => 123456789});
212 my $fff = HomeBank
::File-
>meh([qw
/hello this is a test 82/, \
1, {foo
=> 'bar'}, 48]);
215 print "my hook done\n";
219 my ($self, $hook) = @_;
220 warn "Unhandled hook '$hook'\n";
221 #HomeBank->warn($hook, 'Hook not handled.');
224 sub on_main_window_disposal
{
226 print "main window disposed so forgetting about merge id et al.\n";
227 delete $self->{merge_id
};
228 delete $self->{action_group
};
233 print "DESTROYING HELLO WORLD!!!!!!\n";
235 print "there is a test_win...\n";
237 $test_win->destroy if $test_win;
239 $self->destroy_menuitem;
242 sub destroy_menuitem
{
245 return unless $self->{merge_id
};
247 my $ui_manager = HomeBank-
>main_ui_manager;
248 $ui_manager->remove_action_group($self->{action_group
});
249 $ui_manager->remove_ui($self->{merge_id
});
252 sub create_menuitem
{
255 return if $self->{merge_id
};
259 my $ui_manager = HomeBank-
>main_ui_manager;
260 print Dumper
($ui_manager);
261 return unless $ui_manager;
263 $self->{merge_id
} = $ui_manager->new_merge_id;
264 $self->{action_group
} = Gtk2
::ActionGroup-
>new('HelloActionGroup');
266 my $action = Gtk2
::Action-
>new(name
=> 'HelloPlugin', label
=> 'Booyah!', stock_id
=> 'prf-plugins', tooltip
=> 'blaaaargh');
267 $action->signal_connect(activate
=> sub { print "hello!!!!!!!!\n" });
268 $self->{action_group
}->add_action($action);
270 $ui_manager->insert_action_group($self->{action_group
}, -1);
271 $ui_manager->add_ui($self->{merge_id
}, 'ui/MenuBar/PluginMenu', 'HelloPlugin', 'HelloPlugin', 'auto', '');
272 #$self->{merge_id} = $ui_manager->new_merge_id;
273 $ui_manager->add_ui($self->{merge_id
}, 'ui/ToolBar', 'HelloPluginTool', 'HelloPlugin', 'auto', '');
277 print "the perl plugin is being configured.....\n";
278 HomeBank-
>info("Hello Prefs", "YEEEEEARGGH!!!!!");
281 #__PACKAGE__->meta->make_immutable;
This page took 0.052813 seconds and 4 git commands to generate.