horzi. & vertical alignment of widgets, size of Text-fields

This commit is contained in:
Ralf Becker 2002-02-20 21:34:52 +00:00
parent 8344eff5fa
commit d9c78866ac

View File

@ -38,6 +38,7 @@
'raw' => True, 'raw' => True,
'template' => True 'template' => True
); );
var $font_width=8;
/*! /*!
@function etemplate @function etemplate
@ -191,6 +192,7 @@
case 'int': case 'int':
case 'float': case 'float':
case 'text': case 'text':
case 'textarea':
$set['var'] = $widget->get_chars(0,-1); $set['var'] = $widget->get_chars(0,-1);
break; break;
case 'checkbox': case 'checkbox':
@ -216,7 +218,6 @@
} }
} }
break; break;
case 'textarea':
case 'date': case 'date':
} }
echo " = '$set[var]'\n"; echo " = '$set[var]'\n";
@ -308,7 +309,18 @@
else else
{ {
$height = $this->data[0]["h$row"]; $height = $this->data[0]["h$row"];
$class = $this->data[0]["c$row"]; list($class,$valign) = explode(',',$this->data[0]["c$row"]);
switch($valign)
{
case 'top':
$valign = 0.0;
break;
case 'bottom':
$valign = 1.0;
break;
default:
$valign = 0.5;
}
} }
$row_data = array(); $row_data = array();
for ($c = 0; True /*list($col,$cell) = each($cols)*/; ++$c) for ($c = 0; True /*list($col,$cell) = each($cols)*/; ++$c)
@ -326,7 +338,8 @@
$col = $this->num2chrs($c); $col = $this->num2chrs($c);
//$row_data[$col] = $this->show_cell($cell,$content,$sel_options,$readonlys,$cname,$c,$r,$span); //$row_data[$col] = $this->show_cell($cell,$content,$sel_options,$readonlys,$cname,$c,$r,$span);
$widget = $this->show_cell($cell,$content,$sel_options,$readonlys,$cname,$c,$r,$span,$result); $widget = &$this->show_cell($cell,$content,$sel_options,$readonlys,$cname,$c,$r,$span,$result);
if (($colspan = $span == 'all' ? $this->cols-$c : 0+$span) < 1) if (($colspan = $span == 'all' ? $this->cols-$c : 0+$span) < 1)
{ {
$colspan = 1; $colspan = 1;
@ -334,7 +347,23 @@
if ($widget) if ($widget)
{ {
$widget->show(); $widget->show();
$table->attach($widget, $c, $c+$colspan, $r, $r+1,GTK_FILL,GTK_FILL,0,0); if ($align = ($cell['align'] || $valign))
{
switch ($cell['align'])
{
case 'center':
$align = 0.5;
break;
case 'right':
$align = 1.0;
break;
default:
$align = 0.0;
}
$align = &new GtkAlignment($align,$valign,$cell['type'] == 'hrule' ? 1.0 : 0.0,0.0);
$align->add($widget);
}
$table->attach($align ? $align : $widget, $c, $c+$colspan, $r, $r+1,GTK_FILL,GTK_FILL,0,0);
} }
if ($row_data[$col] == '' && $this->rows == 1) if ($row_data[$col] == '' && $this->rows == 1)
{ {
@ -448,6 +477,10 @@
if ($value) if ($value)
{ {
$widget = &new GtkLabel($value); $widget = &new GtkLabel($value);
if ($cell['align'] != 'center')
{
$widget->set_justify($cell['align'] == 'right' ? GTK_JUSTIFY_RIGHT : GTK_JUSTIFY_LEFT);
}
} }
break; break;
case 'raw': case 'raw':
@ -478,11 +511,15 @@
$widget->set_max_length($max); $widget->set_max_length($max);
} }
$widget->set_editable(!$readonly); $widget->set_editable(!$readonly);
if ($len)
{
$widget->set_usize($len*$this->font_width,0);
}
break; break;
case 'textarea': // Multiline Text Input, size: [rows][,cols] case 'textarea': // Multiline Text Input, size: [rows][,cols]
//$html .= $this->html->textarea($form_name,$value,$options.$this->html->formatOptions($cell['size'],'ROWS,COLS')); //$html .= $this->html->textarea($form_name,$value,$options.$this->html->formatOptions($cell['size'],'ROWS,COLS'));
$widget = &new GtkText(null,null); $widget = &new GtkText(null,null);
//$widget->set_text($value); $widget->insert_text($value,strlen($value));
$widget->set_editable(!$readonly); $widget->set_editable(!$readonly);
break; break;
/* case 'date': /* case 'date':
@ -595,19 +632,25 @@
$sel_options = $content["options-$name"]; $sel_options = $content["options-$name"];
} }
//$html .= $this->sbox->getArrayItem($form_name.'[]',$value,$sel_options,$cell['no_lang'],$options,$cell['size']); //$html .= $this->sbox->getArrayItem($form_name.'[]',$value,$sel_options,$cell['no_lang'],$options,$cell['size']);
if (!$cell['no_lang'])
reset($sel_options);
for ($maxlen=0; list($key,$val) = each($sel_options); )
{ {
reset($sel_options); if (!$cell['no_lang'])
while (list($key,$val) = each($sel_options))
{ {
$sel_options[$key] = lang($val); $sel_options[$key] = lang($val);
} }
if (($len = strlen($sel_options[$key])) > $maxlen)
{
$maxlen = $len;
}
} }
$widget = &new GtkCombo(); $widget = &new GtkCombo();
$widget->set_popdown_strings($sel_options); $widget->set_popdown_strings($sel_options);
$entry = $widget->entry; $entry = $widget->entry;
$entry->set_text($sel_options[$value]); $entry->set_text($sel_options[$value]);
$entry->set_editable(False); $entry->set_editable(False);
$entry->set_usize($maxlen*$this->font_width,0);
break; break;
/* case 'select-percent': /* case 'select-percent':
$html .= $this->sbox->getPercentage($form_name,$value,$options); $html .= $this->sbox->getPercentage($form_name,$value,$options);
@ -644,6 +687,7 @@
*/ default: */ default:
//$html .= '<i>unknown type</i>'; //$html .= '<i>unknown type</i>';
$widget = &new GtkLabel('unknown type: '.$cell['type']); $widget = &new GtkLabel('unknown type: '.$cell['type']);
$widget->set_justify(GTK_JUSTIFY_LEFT);
break; break;
} }
if ($widget && !$readonly && !$this->no_result[$cell['type']]) if ($widget && !$readonly && !$this->no_result[$cell['type']])