DBIx-DBStag
view release on metacpan or search on metacpan
scripts/ubiq view on Meta::CPAN
# Bind <CTRL+X> to menubar.
$cui->set_binding( sub{ shift()->root->focus('menu') }, "\cX" );
if ($dbname) {
set_dbname($dbname);
}
if ($template_name) {
set_template($template_name);
}
update_varwin();
setup_query_options();
$cui->MainLoop;
$cui->dialog("ubiq quitting!");
sub set_template {
my $tn = shift;
$template = $sdbh->find_template($tn);
if ($template) {
$varnames = $template->get_varnames;
update_varwin();
setup_query_options();
$w{query}->intellidraw;
my $detail = $w2->getobj('label_detailwin');
my $sp = $template->stag_props;
my $desc = $sp->get_desc;
$detail->text($desc);
$w2->intellidraw;
}
else {
$cui->dialog("no such template $tn");
}
update_varwin();
}
sub set_dbname {
my $set = shift;
$dbname = $set;
my $res = $resources_hash->{$dbname};
if ($res) {
$schema = $res->{schema} || '';
$loc = $res->{loc} || '';
if ($schema) {
$templates = $sdbh->find_templates_by_schema($schema);
}
else {
$templates = $sdbh->template_list;
}
}
else {
$cui->dialog("Unknown $dbname");
}
$dbh = DBIx::DBStag->connect($dbname);
my $w = $cui->getobj('window_select_template');
my $chooser = $w->getobj('chooser_select_template');
my @tnames = map {$_->name} @$templates;
$chooser->values(\@tnames);
update_varwin();
}
sub update_varwin {
my $label = $w1->getobj('label_varwin');
$label->text(sprintf("DBNAME:%-20s SCHEMA:%-20s\nLOC:%-20s TMPL:%-20s",
$dbname || '', $schema, $loc,
$template ? $template->name : ''));
$w1->intellidraw;
}
sub setup_query_options {
for (my $i=0; $i<@$varnames; $i++) {
my $y = $i;
my $vn = $varnames->[$i];
# replace_widg($w{query},
# "query_label$i", 'TextViewer',
# -readonly => 1,
# -singleline => 1,
# -x => 1,
# -y => $y,
# -text => $vn,
# -width => 20,
# -sbborder => 1,
# );
my $label =
replace_widg($w{query},
"query_label$i", 'Label',
-x => 1,
-y => $y,
-width => 40,
-height => 1,
-bold => 1,
);
$label->text($vn);
replace_widg($w{query},
"query_val_popup$i", 'TextEntry',
-x => 42,
-y => $y,
-width => 30,
-sbborder => 1,
-onchange=> sub {
my $v = shift->get;
$exec_argh{$vn} = $v;
if (!$v) {
delete $exec_argh{$vn};
}
}
);
}
}
sub execute_query {
$qr_obj =
$dbh->selectall_stag(-template=>$template,
-bind=>\%exec_argh);
show_qr();
}
sub show_qr {
my $txt = $qr_obj->xml;
open(F, ">z");
print F $txt;
close(F);
( run in 0.923 second using v1.01-cache-2.11-cpan-6aa56a78535 )