# ObjEditor - A widget to edit data and object

use Tk ;
use Tk::ObjEditor ;

# sample object to edit
package Toto ;

sub new
  {
    my $type = shift ;
    my $tkstuff = shift ;
    my $scalar = 'dummy scalar ref value';
    my $self = 
      {
       'key1' => 'value1',
       'array' => [qw/a b sdf/, {'v1' => '1', 'v2' => 2},'dfg'],
       'key2' => {
                  'sub key1' => 'sv1',
                  'sub key2' => 'sv2'
                 },
       'piped|key' => {a => 1 , b => 2},
       'scalar_ref_ref' => \\$scalar,
       'empty string' => '',
       'pseudo hash' => [ { a => 1, b => 2}, 'a value', 'bvalue'],
       'non_empty string' => ' ',
       'long' => 'very long line'.'.' x 80 ,
       'is undef' => undef,
       'some text' => "some \n dummy\n Text\n",
      } ;
    bless $self,$type;
  }


package main;

sub obj_ed
  {
    my($demo) = @_;
    $TOP = $MW->WidgetDemo
      (
       -name => $demo,
       -text => 'ObjEditor - data and object editor.',
       -geometry_manager => 'grid',
       -title => 'A widget to edit data or object',
       -iconname => 'ObjEditorDemo'
      ) ;

    $TOP->Label(text => "Please click on right button on any item to modify the data")->pack ;

    my $dummy = new Toto ();

    $TOP -> ObjEditor 
      (
       caller => $dummy, 
       direct => 1,
       destroyable => 0
      ) -> pack;

  }


