App-Chart
view release on metacpan or search on metacpan
lib/App/Chart/Gtk2/View.pm view on Meta::CPAN
'', # default
Glib::G_PARAM_READWRITE),
Glib::ParamSpec->string
('timebase-class',
'timebase-class',
'Blurb.',
DEFAULT_TIMEBASE_CLASS,
Glib::G_PARAM_READWRITE),
Glib::ParamSpec->object
('statusbar',
'statusbar',
'Blurb.',
'Gtk2::Statusbar',
Glib::G_PARAM_READWRITE),
Glib::ParamSpec->scalar
('viewstyle',
'viewstyle',
'Blurb.',
Glib::G_PARAM_READWRITE),
];
# FIXME: adjust_splits breaks AnnDrag
use constant DEFAULT_VIEWSTYLE =>
{ adjust_splits => 0,
adjust_dividends => 0,
adjust_imputation => 1,
adjust_rollovers => 0,
graphs => [ { size => 4,
linestyle => 'Candles',
indicators => [{ key => 'SMA', },
],
},
{ size => 1,
indicators => [{ key => 'Volume', }
],
},
],
};
sub viewstyle_read {
require App::Chart::DBI;
my $str = App::Chart::DBI->read_single
('SELECT value FROM preference WHERE key=\'viewstyle\'');
if (! defined $str) { return DEFAULT_VIEWSTYLE; }
my $viewstyle = eval $str;
if (! defined $viewstyle) {
print "chart: oops, bad viewstyle in database, using default: $@";
return DEFAULT_VIEWSTYLE;
}
return $viewstyle;
}
# viewstyle_write(DEFAULT_VIEWSTYLE);
# print viewstyle_read(DEFAULT_VIEWSTYLE);
# exit 0;
sub viewstyle_write {
my ($viewstyle) = @_;
require App::Chart::DBI;
require Data::Dumper;
my $str = Data::Dumper->new([$viewstyle],['viewstyle'])->Indent(1)->Terse(1)->Sortkeys(1)->Dump;
require App::Chart::DBI;
my $dbh = App::Chart::DBI->instance;
$dbh->do ('INSERT OR REPLACE INTO preference (key, value)
VALUES (\'viewstyle\',?)', {}, $str);
App::Chart::chart_dirbroadcast()->send ('viewstyle-changed');
}
#------------------------------------------------------------------------------
sub INIT_INSTANCE {
my ($self) = @_;
$self->{'symbol'} = ''; # per property default above
$self->{'series_list'} = [];
$self->{'timebase_class'} = DEFAULT_TIMEBASE_CLASS;
$self->{'graphs'} = [];
$self->set(n_rows => 9,
n_columns => 3);
App::Chart::chart_dirbroadcast()->connect_for_object
('data-changed', \&_do_data_changed, $self);
# FIXME: this induces a rescale at a good time, but otherwise not wanted
App::Chart::chart_dirbroadcast()->connect_for_object
('latest-changed', \&_do_data_changed, $self);
App::Chart::Gtk2::GUI::chart_style_widget ('AppChartViewLabel');
my $ebox = $self->{'initial'} = Gtk2::EventBox->new;
$ebox->set_name ('AppChartViewLabel');
my $label = Gtk2::Label->new
(__('Use File/Open to open or add a symbol'));
$label->set_name ('AppChartViewLabel');
$ebox->add ($label);
$ebox->show_all;
$self->attach ($ebox, 0,3, 0,9,
['fill','shrink','expand'],
['fill','shrink','expand'], 0,0);
}
sub GET_PROPERTY {
my ($self, $pspec) = @_;
my $pname = $pspec->get_name;
if ($pname eq 'viewstyle') {
if (! $self->{'init_graphs'}) {
return viewstyle_read();
}
}
return $self->{$pname};
}
sub SET_PROPERTY {
my ($self, $pspec, $newval) = @_;
my $pname = $pspec->get_name;
my $oldval = $self->{$pname};
### View SET_PROPERTY: $pname
### $newval
if ($pname eq 'symbol') {
$self->set_symbol ($newval);
return;
( run in 0.585 second using v1.01-cache-2.11-cpan-39bf76dae61 )