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 )