DBIx-DBStag

 view release on metacpan or  search on metacpan

scripts/ubiq  view on Meta::CPAN

    }

    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);
#	$txt = substr($txt, 0, 100);
	replace_widg($w{qr},
		     "qr_textviewer", "TextViewer",
		     -sbborder=>1,
#		     -text=>"x\ny\n z\n  123\n",
		     -text=>$txt,
		     -wrapping=>1,
		     -showoverflow=>0,
		    );
	$w{qr}->draw;
	$w{qr}->focus;
    }
    sub setup_complex_query_options {
        for (my $i=0; $i<10; $i++) {
            my $y = $i;
            replace_widg($w{cquery},
                         "cquery_att_popup$i", 'Popupmenu',
                         -y => $y,
                         -sbborder => 1, 
                         -values => $varnames,
                      );

            replace_widg($w{cquery},
                       "cquery_val_popup$i", 'TextEntry',
                       -x => 20,
                       -y => $y,
                       -width => 20,
                       -sbborder => 1, 
                      );
        
            replace_widg($w{cquery},
                       "cquery_bool_popup$i", 'Popupmenu',
                       -x => 50,
                       -y => $y,
                       -sbborder => 1, 
                       -values => [ qw(AND OR) ],
                      );
        }
    }
    sub replace_widg {
        my $w = shift;
        my $id = shift;
        my @args = @_;
        my $obj = $w->getobj($id);
        if ($obj) {
            $w->delete($id);
        }
        $w->add($id, @args);
        return $w->getobj($id);
    }

    sub select_screen {
        my $screen = shift;
        $w{$screen}->focus;
    }
    sub dialog_template {
        my $pop = shift;
        my $tn = $pop->get_active_value;
        my $t = $sdbh->find_template($tn);
        if ($t) {
            $cui->dialog("TEMPLATE: $tn\n");
        }
        else {
            $cui->dialog("No data");
        }
    }
}



( run in 2.028 seconds using v1.01-cache-2.11-cpan-364913b4093 )