TVision

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

tvision.git/source/tvision/nmwindow.cpp
tvision.git/source/tvision/palette.cpp
tvision.git/source/tvision/popupmnu.cpp
tvision.git/source/tvision/prntcnst.cpp
tvision.git/source/tvision/sbkgrnd.cpp
tvision.git/source/tvision/sbutton.cpp
tvision.git/source/tvision/schdrdlg.cpp
tvision.git/source/tvision/scheckbo.cpp
tvision.git/source/tvision/sclrsel.cpp
tvision.git/source/tvision/scluster.cpp
tvision.git/source/tvision/sdesktop.cpp
tvision.git/source/tvision/sdialog.cpp
tvision.git/source/tvision/sdircoll.cpp
tvision.git/source/tvision/sdirlist.cpp
tvision.git/source/tvision/seditors.cpp
tvision.git/source/tvision/sfilcoll.cpp
tvision.git/source/tvision/sfildlg.cpp
tvision.git/source/tvision/sfilelst.cpp
tvision.git/source/tvision/sfinfpne.cpp
tvision.git/source/tvision/sfinputl.cpp
tvision.git/source/tvision/sframe.cpp

MANIFEST  view on Meta::CPAN

tvision.git/source/tvision/sysint.asm
tvision.git/source/tvision/tapplica.cpp
tvision.git/source/tvision/tbkgrnd.cpp
tvision.git/source/tvision/tbutton.cpp
tvision.git/source/tvision/tchdrdlg.cpp
tvision.git/source/tvision/tcheckbo.cpp
tvision.git/source/tvision/tclipbrd.cpp
tvision.git/source/tvision/tcluster.cpp
tvision.git/source/tvision/tcmdset.cpp
tvision.git/source/tvision/tcollect.cpp
tvision.git/source/tvision/tdesktop.cpp
tvision.git/source/tvision/tdialog.cpp
tvision.git/source/tvision/tdircoll.cpp
tvision.git/source/tvision/tdirlist.cpp
tvision.git/source/tvision/teditor1.cpp
tvision.git/source/tvision/teditor2.cpp
tvision.git/source/tvision/teditwnd.cpp
tvision.git/source/tvision/tevent.cpp
tvision.git/source/tvision/textview.cpp
tvision.git/source/tvision/tfildlg.cpp
tvision.git/source/tvision/tfilecol.cpp

TVision.xs  view on Meta::CPAN

        *new TMenuItem( "~N~ext", cmNext, kbF6, hcWNext, "F6" ) +
        *new TMenuItem( "~C~lose", cmClose, kbAltF3, hcWClose, "Alt-F3" ) +
        *new TMenuItem( "~T~ile", cmTile, kbNoKey, hcWTile ) +
        *new TMenuItem( "C~a~scade", cmCascade, kbNoKey, hcWCascade );

    TSubMenu& sub4 =
      *new TSubMenu( "~O~ptions", 0, hcOptions ) +
        *new TMenuItem( "~M~ouse...", cmMouseCmd, kbNoKey, hcOMouse ) +
        (TMenuItem&) (
            *new TSubMenu( "~D~esktop", 0 ) +
            *new TMenuItem( "~S~ave desktop", cmSaveCmd, kbNoKey, hcOSaveDesktop ) +
            *new TMenuItem( "~R~etrieve desktop", cmRestoreCmd, kbNoKey, hcORestoreDesktop )
        );

    r.b.y =  r.a.y + 1;
    return (new TMenuBar( r, sub1 + sub2 + sub3 + sub4 ) );
}

ushort spin_loop() {
    ushort endState;
    do  {
        endState = 0;

demo/demo1.pl  view on Meta::CPAN

use strict;
use TVision;

my $tapp = tnew 'TVApp';
my $desktop = $tapp->deskTop;
my $w = tnew TWindow=>([1,1,120,15],'моё окно, товарищи',5);
my $w2 = tnew TWindow => ([16,1,120,30],'моё окно, товарищи',5);
my $d = tnew TDialog => ([52,13,90,19],'dialog');
my $b2 = tnew TButton => ([1,1,30,3],'кнопка2',125,0);
my $b = tnew TButton => ([100,2,118,4],'кнопка',123,0);
my $checkboxes = tnew TCheckBoxes => ([3,3,81,9],['a'..'s']);
my $radiobtns = tnew TRadioButtons => ([3,23,81,29],['z'..'dt']);
my $e = tnew TInputLine => ([3,31,81,32],100);
my $st = tnew TStaticText => ([5,10,100,11],"стат.текст");
my $sb1 = tnew TScrollBar => ([51,11,100,11]);
my $sb2 = tnew TScrollBar => ([1,1,20,1]);
my $ind = tnew TIndicator => ([1,21,10,21]);
#my $tedit = tnew TEditor => (50,6,110,36,  $TVision::NULL, $TVision::NULL, $TVision::NULL, 1000);
my $tedit = tnew TEditor => ([1,1,110,16],  $sb1, $sb2, $ind, 1000);
$desktop->insert($w);
$desktop->insert($w2);
$desktop->insert($e);
$desktop->insert($radiobtns);
$desktop->insert($d);
$w->insert($b2);
$w->insert($checkboxes);
$w->insert($st);
$desktop->insert($b);
$w2->insert($tedit);
$tapp->on_idle(sub {$::e++});
#$tapp->handleEvent(sub {print "handleEvent\n"});
$tapp->onCommand(sub {
    my ($cmd, $arg) = @_;
    print "command[@_]\n";
    if ($cmd == 123) {
	#button pressed
	$e->setData("[".$e->getData."]");
	$b->setTitle("перекнопка");

demo/forms.pl  view on Meta::CPAN

    $x = $formWd - 1 * ($buttonWd + 2);
    $r = TRect($x, $y, $x + $buttonWd, $y + 2);
    $f->insert(tnew TButton=>($r, "Cancel", cmCancel, bfNormal));
    $f->selectNext(0);      #/ Select first field 

    return $f;
}


my $tapp = tnew('TVApp');
my $desktop = $tapp->deskTop;

$desktop->insert(makeForm($_,$_)) for 1 .. 20;

$tapp->run;

demo/menu.pl  view on Meta::CPAN

        -> plus ( TVision::TMenuItem::new( "~C~lose", cmClose, kbAltF3, hcWClose, "Alt-F3" ) )
        -> plus ( TVision::TMenuItem::new( "~T~ile", cmTile, kbNoKey, hcWTile ) )
        -> plus ( TVision::TMenuItem::new( "C~a~scade", cmCascade, kbNoKey, hcWCascade ) )
     )
;
print "last mnam is $mnam\n";

my $menubar = tnew TMenuBar=>([0,0,179,1],$sub1);
my $tapp = tnew TVApp => $menubar;

my $desktop = $tapp->deskTop;
$tapp->onCommand(sub {
    my ($cmd, $arg) = @_;
    print "command[@_]\n";
    if ($cmd == 123) {
	#button pressed
	#$b->locate(15,15,30,17);
    }
    elsif ($cmd == 125) {
    }
});

demo/pack.pl  view on Meta::CPAN

use strict;
use TVision('tnew');

$|=1;
my $tapp = tnew('TVApp');
my $desktop = $tapp->deskTop;
$desktop->[1] = '.';
$desktop->[2] = '.';

my $btn = tnew('TButton', [1,2,3,4], 'text on the button', 100,0);
$desktop->insert($btn);
print   $btn->[2],"\n";

print TVision::pack($btn, -side => 'left');
#print TVision::pack($btn, 'configure', '.btn', -side => 'left');
#print TVision::pack("rb", -side => 'left');

#$tapp->run;

demo/tdialog.pl  view on Meta::CPAN


    $d->insert( tnew (TButton=> [ 17, 13, 27, 15 ], "O~K~", cmOK, bfDefault ) );
    $d->insert( tnew (TButton => [ 28, 13, 38, 15 ], "Cancel", cmCancel, bfNormal ) );

    #$d->selectNext( 0 );
    return $d;
}


my $tapp = tnew 'TVApp';
my $desktop = $tapp->deskTop;

$desktop->insert(createFindDialog);
$desktop->insert(createReplaceDialog);

$tapp->run;

demo/tedit.pl  view on Meta::CPAN

use strict;
use TVision('tnew');

my $tedit = tnew(TEditor=>[1,1,110,16]); #,  $sb1, $sb2, $ind, 1000);
my $sb1 = tnew(TScrollBar=>[51,11,100,11]);
my $sb2 = tnew(TScrollBar=>[1,1,20,1]);
my $ind = tnew(TIndicator=>[1,21,10,21]);
my $tedit2 = tnew(TEditor=>[1,21,110,36], $sb1, $sb2, $ind, 100000);

my $tapp = tnew('TVApp');
my $desktop = $tapp->deskTop;
my $r = $desktop->getExtent;
print "e=[@$r]\n";

$desktop->insert($tedit);
$desktop->insert($tedit2);

$tapp->onCommand(sub {
    my ($cmd, $arg) = @_;
    print "command[@_]\n";
    if ($cmd == 123) {
    }
    elsif ($cmd == 125) {
    }
});

demo/teditwindow.pl  view on Meta::CPAN

use strict;
use TVision('tnew');

# TRect r = deskTop->getExtent();
# TView *p = validView( new TEditWindow( r, fileName, wnNoNumber ) );
# if( !visible )
#     p->hide();
# deskTop->insert( p );

my $tapp = tnew('TVApp');
my $desktop = $tapp->deskTop;
my $teditw = tnew(TEditWindow=>$desktop->getExtent, '', 0);

my $editor = $teditw->get_editor; 
my $s = join("\n",'a'..'zzz');
$editor->insertMultilineText($s,length($s));

$desktop->insert($teditw);

$tapp->onCommand(sub {
    my ($cmd, $arg) = @_;
    print "command[@_]\n";
    if ($cmd == 123) {
    }
    elsif ($cmd == 125) {
    }
    elsif ($cmd == 1) {
	print("cmd=1, exit");

demo/toutline.pl  view on Meta::CPAN

my $node1 = tnew(TNode=>"нодв1");
my $node2 = tnew(TNode=>"нодв2");
my $node3 = tnew1(TNode=>"нодв2",$node1,$node2);
my $noder = tnew1(TNode=>"к",$node1,$node3);
my $sb1 = tnew(TScrollBar=>[51,11,100,11]);
my $sb2 = tnew(TScrollBar=>[1,1,20,1]);
my $to = tnew(TOutline=>[1,1,15,5],$sb1,$sb2,$noder);


my $tapp = tnew('TVApp');
my $desktop = $tapp->deskTop;
$desktop->insert($to);

$tapp->run;

lib/Devel/tvdb.pm  view on Meta::CPAN

 Vadim Konovalov

=cut


BEGIN {
    $Devel::tvdb::linenumber_length = 5;
}

my $tapp;
my $desktop;
my $log_window;
my $log_window_e;
my $cur_editor;
my $evil_window;
my $extent;

sub ::_log($) {
    if ($log_window_e) {
        $log_window_e->insertMultilineText($_[0]."\n",length($_[0])+1);
        $log_window_e->scrollTo(0, 100000);

lib/Devel/tvdb.pm  view on Meta::CPAN

    TVision::messageBox("program ended.",mfOKButton);
}
my $wnd_cnt=-1;
sub showfile {
    my ($self, $filename, $line) = @_;
    init1() unless $tapp;
    #DEBUG ::_log "$filename $line \$#dbline=$#DB::dbline";
    unless ($files{$filename}) {
        $wnd_cnt++;
        $files{$filename} = TVision::tnew('TEditWindow', 
                0 ? $desktop->getExtent : [$wnd_cnt,$wnd_cnt,80+$wnd_cnt,50+$wnd_cnt],
                "$filename.debug", 0
            );
        $desktop->insert($files{$filename});
        $cur_editor = $files{$filename}->get_editor;
        $cur_editor->store_user_value($filename);
        my $i0 = "0" x $Devel::tvdb::linenumber_length;
        if ($#DB::dbline > -1) {
            for (@DB::dbline[1 .. $#DB::dbline]) {
                my $str = s/\n$//r;
                my $i1 = ++$i0;
                my $s = "$i0 " . ($i1==$line? '[*]' : '[ ]') . ($_==0? ' ':'.') . " $str";
                $pos{$filename}->[$i1] = $cur_editor->get_curPtr;
                $cur_editor->insertBuffer($s, 0, length($s),0,0);

lib/Devel/tvdb.pm  view on Meta::CPAN

            -> plus ( TVision::TMenuItem::new( "~R~esize/move", cmResize, kbCtrlF5, 0, "Ctrl-F5" ) )
            -> plus ( TVision::TMenuItem::new( "~Z~oom", cmZoom, kbF5, 0, "F5" ) )
            -> plus ( TVision::TMenuItem::new( "~N~ext", cmNext, kbF6, 0, "F6" ) )
            -> plus ( TVision::TMenuItem::new( "~C~lose", cmClose, kbAltF3, 0, "Alt-F3" ) )
            -> plus ( TVision::TMenuItem::new( "~T~ile", cmTile, kbNoKey, 0 ) )
            -> plus ( TVision::TMenuItem::new( "C~a~scade", cmCascade, kbNoKey, 0 ) )
        );
    my $menubar = tnew TMenuBar=>([0,0,179,1],$submenu);

    $tapp = tnew TVApp => $menubar;
    $desktop = $tapp->deskTop;
    $extent = $desktop->getExtent;

    $log_window = tnew(TEditWindow=> [82,1,162,20], 'log.txt', 0);
    $desktop->insert($log_window);
    $log_window_e = $log_window->get_editor;
    $evil_window = tnew(TEditWindow=> [82,21,162,40], 'evil.txt', 0);
    $desktop->insert($evil_window);

    $tapp->onCommand(sub {
	my ($cmd, $arg) = @_;
	if ($cmd == 201) { # step-in
            __PACKAGE__->step;
            __PACKAGE__->ready;
	} elsif ($cmd == 202) { # step-over
            __PACKAGE__->next;
            __PACKAGE__->ready;
	} elsif ($cmd == 203) { # run

t/f.t  view on Meta::CPAN

    $x = $formWd - 1 * ($buttonWd + 2);
    $r = TRect($x, $y, $x + $buttonWd, $y + 2);
    $f->insert(tnew TButton=>($r, "Cancel", cmCancel, bfNormal));
    $f->selectNext(0);      #/ Select first field 

    return $f;
}


my $tapp = tnew 'TVApp';
my $desktop = $tapp->deskTop;


my @f = map {makeForm($_,$_, $data->[$_ % 4])} 1 .. 45;
$desktop->insert($_) for @f;

$tapp->on_idle(sub {
    $::e++;
    if ($::e % 10 == 0) {
	$f[int(rand($#f))]->focus();
    }
    if ($::e>250) {
	$tapp->endModal(42+42+42+42+42);
    }
});

tvision.git/README.md  view on Meta::CPAN


* Screen writes are buffered and are usually sent to the terminal once for every iteration of the active event loop (see also `TVISION_MAX_FPS`). If you need to update the screen during a busy loop, you may use `TScreen::flushScreen()`.
* `TDrawBuffer` is no longer a fixed-length array and its methods prevent past-the-end array accesses. Therefore, old code containing comparisons against `sizeof(TDrawBuffer)/sizeof(ushort)` is no longer valid; such checks should be removed.
* `TApplication` now provides `dosShell()`, `cascade()` and `tile()`, and handles `cmDosShell`, `cmCascade` and `cmTile` by default. These functions can be customized by overriding `getTileRect()` and `writeShellMsg()`. This is the same behaviour as ...
* Mouse wheel support: new mouse event `evMouseWheel`. The wheel direction is specified in the new field `event.mouse.wheel`, whose possible values are `mwUp`, `mwDown`, `mwLeft` or `mwRight`.
* Middle mouse button support: new mouse button flag `mbMiddleButton`.
* The `buttons` field in `evMouseUp` events is no longer empty. It now indicates which button was released.
* Triple-click support: new mouse event flag `meTripleClick`.
* `TRect` methods `move`, `grow`, `intersect` and `Union` now return `TRect&` instead of being `void` so that they can be chained.
* `TOutlineViewer` now allows the root node to have siblings.
* New function `ushort popupMenu(TPoint where, TMenuItem &aMenu, TGroup *receiver=0)` which spawns a `TMenuPopup` on the desktop. See `source/tvision/popupmnu.cpp`.
* New virtual method `TMenuItem& TEditor::initContextMenu(TPoint p)` that determines the entries of the right-click context menu in `TEditor`.
* `fexpand` can now take a second parameter `relativeTo`.
* New class `TStringView`, inspired by `std::string_view`.
    * Many functions which originally had null-terminated string parameters now receive `TStringView` instead. `TStringView` is compatible with `std::string_view`, `std::string` and `const char *` (even `nullptr`).
* New class `TSpan<T>`, inspired by `std::span`.
* New classes `TDrawSurface` and `TSurfaceView`, see `<tvision/surface.h>`.
* The system integration subsystems (`THardwareInfo`, `TScreen`, `TEventQueue`...) are now initialized when constructing a `TApplication` for the first time, rather than before `main`. They are still destroyed on exit from `main`.
* New method `TVMemMgr::reallocateDiscardable()` which can be used along `allocateDiscardable` and `freeDiscardable`.
* New method `TView::textEvent()` which allows receiving text in an efficient manner, see [Clipboard interaction](#clipboard).
* New class `TClipboard`, see [Clipboard interaction](#clipboard).

tvision.git/examples/palette/README.md  view on Meta::CPAN


                                Table I
```

All numbers used in the palettes in this document are in
hexadecimal (it is easier to understand attributes in that base).

Here is a concrete case of a "palette" walk, taken from the code
supplied with this document.  Suppose there is a view of type
`TTestView` inserted inside a window of type `TTestWindow`, itself
inserted in the desktop.  The palettes for these views are shown
above.  To draw something with color `0x01`, simply use `0x01` as the
parameter to the write functions used in `TTestView::draw()`.
`TTestView`'s palette contains the number `0x09` at index `0x01` and
`TTestView`'s owner is `TTestWindow`.  Index `0x09` in `TTestWindow`'s
palette contains `0x88`.  `TTestWindow`'s owner is `TDesktop` which has
a `NULL` palette and is skipped (see notes). `TDesktop`'s owner is
`TTestApp` and it's palette contains `0x3E` at index `0x88`.  So the
color that will be used is `0x3E` or yellow on cyan.

The `writeXXX` functions in TView all take color index values in

tvision.git/examples/palette/palette.h  view on Meta::CPAN

    TTestView( TRect& r );
    virtual ~TTestView() {}
    virtual void draw();
    virtual TPalette& getPalette() const;
private:
};

//
// TTestWindow - provides encapsulation for TTestView, as well as
// the ability to move the view around the screen and remove it
// from the desktop with little coding (since TWindow's
// automatically call cmClose)
//
// Member functions:
//      TTestWindow - constructor
//      getPalette  -
//      sizeLimits  - so we can have a smaller than regulation
//                    TWindow.
//

#define TEST_WIDTH   42

tvision.git/examples/tvdemo/tvdemo.h  view on Meta::CPAN

    void calculator();                // Calculator
    void eventViewer();
    void printEvent(const TEvent &);
    void chBackground();              // Background pattern
    void openFile( const char *fileSpec );  // File Viewer
    void changeDir();                 // Change directory
    void mouse();                     // Mouse control dialog box
    void colors();                    // Color control dialog box
    void outOfMemory();               // For validView() function
    void loadDesktop(fpstream& s);    // Load and restore the
    void retrieveDesktop();           //  previously saved desktop
    void storeDesktop(fpstream& s);   // Store the current desktop
    void saveDesktop();               //  in a resource file

};

#endif // __TVDEMO_H

tvision.git/examples/tvdemo/tvdemo1.cpp  view on Meta::CPAN

}


//
// retrieveDesktop() function ( restores the previously stored Desktop )
//

void TVDemo::retrieveDesktop()
{
    if (!ifstream("TVDEMO.DST").good())
        messageBox("Could not find desktop file", mfOKButton | mfError);
    else 
        {
        fpstream *f = new fpstream("TVDEMO.DST", ios::in|ios::binary);
        if( !f )
            messageBox("Could not open desktop file", mfOKButton | mfError);
        else
           {
           TVDemo::loadDesktop(*f);
           if( !f )
               messageBox("Error reading desktop file", mfOKButton | mfError);
           }
        delete f;
        }
}

//
// saveDesktop() function ( saves the DeskTop by calling storeDesktop function )
//

void TVDemo::saveDesktop()

tvision.git/examples/tvdemo/tvdemo2.cpp  view on Meta::CPAN

                break;

            case cmMouseCmd:            //  Mouse control dialog box
                mouse();
                break;

            case cmColorCmd:            //  Color control dialog box
                colors();
                break;

        case cmSaveCmd:             //  Save current desktop
                saveDesktop();
                break;
 
        case cmRestoreCmd:          //  Restore saved desktop
                retrieveDesktop();
                break;

            default:                    //  Unknown command
                return;

            }
        clearEvent (event);
        }
}

tvision.git/examples/tvdemo/tvdemo3.cpp  view on Meta::CPAN

        &newcolor,
        &newblackwhite,
        &newmonochrome
        };
    return *(palettes[appPalette]);

}
*/

//
// isTileable() function ( checks a view on desktop is tileable or not )
//

static Boolean isTileable(TView *p, void * )
{
   if( (p->options & ofTileable) != 0)
       return True;
   else
       return False;
}

tvision.git/examples/tvdemo/tvdemo3.cpp  view on Meta::CPAN

//
// loadDesktop() function 
//

void TVDemo::loadDesktop(fpstream &s)
{
    TView  *p;

    if (deskTop->valid(cmClose))
        { 
        deskTop->forEach(::closeView, 0);  // Clear the desktop
        do {
           s >> p;
           deskTop->insertBefore(validView(p), deskTop->last);
           }
           while (p != 0);
        }
}

//
// Menubar initialization.

tvision.git/examples/tvdemo/tvdemo3.cpp  view on Meta::CPAN

        *new TMenuItem( "~T~ile", cmTile, kbNoKey, hcWTile ) +
        *new TMenuItem( "C~a~scade", cmCascade, kbNoKey, hcWCascade );

    TSubMenu& sub4 =
      *new TSubMenu( "~O~ptions", 0, hcOptions ) +
        *new TMenuItem( "~M~ouse...", cmMouseCmd, kbNoKey, hcOMouse ) +
        *new TMenuItem( "~C~olors...", cmColorCmd, kbNoKey, hcOColors ) +
        *new TMenuItem( "~B~ackground...", cmChBackground, kbNoKey ) +
        (TMenuItem&) (
            *new TSubMenu( "~D~esktop", 0 ) +
            *new TMenuItem( "~S~ave desktop", cmSaveCmd, kbNoKey, hcOSaveDesktop ) +
            *new TMenuItem( "~R~etrieve desktop", cmRestoreCmd, kbNoKey, hcORestoreDesktop )
        );

    r.b.y =  r.a.y + 1;
    return (new TMenuBar( r, sub1 + sub2 + sub3 + sub4 ) );
}



tvision.git/examples/tvforms/listdlg.cpp  view on Meta::CPAN


            // Base listbox width on key width. Grow entire dialog if required
        if (f->keyWidth > defaultListWd)
            {
            listWd = f->keyWidth;
            growTo((short)(formWd + listWd - defaultListWd), (short)formHt);
            }
        else
            listWd = defaultListWd;

        // Move to upper right corner of desktop
        TRect r (TProgram::deskTop->getExtent());   // Desktop coordinates
        moveTo((short)(r.b.x - size.x), 1);

        destroy(f);

        // Read data collection into memory
        dataCollection = (TDataCollection *)formDataFile->get("FormData");
        if (dataCollection != NULL)
            {
            // Loaded successfully: build ListDialog dialog

tvision.git/examples/tvforms/listdlg.cpp  view on Meta::CPAN

    if (formDataFile != NULL)
        destroy(formDataFile);
    if (fileName != NULL)
        delete[] fileName;
}

void TListDialog::close(void)
{
    if (valid(cmClose))
        {
        // Stop desktop video update in case there are scores of attached forms 
        TProgram::deskTop->lock();
        message(TProgram::deskTop, evBroadcast, cmCloseForm, this);
        TProgram::deskTop->unlock();
        destroy(this);
        }
}

TForm *TListDialog::editingForm()
{
    // Return pointer to the form that is editing the current selection

tvision.git/examples/tvforms/listdlg.cpp  view on Meta::CPAN

        f->moveTo(topForm->origin.x + 1, topForm->origin.y + 1);
    else
        {
        // Stack right or left of ListDialog
        if (origin.x > f->size.x)
            f->moveTo(0, origin.y);
        else
            f->moveTo(origin.x + size.x + 1, origin.y);
        }

    // Visible on desktop? Make sure at least half of form is visible
    TRect r = owner->getExtent();                      // Desktop coordinates
    if (f->origin.x + size.x / 2 > r.b.x) 
        f->moveTo(0, 1);
    if (f->origin.y + size.y / 2 > r.b.y)
        f->moveTo(f->origin.x, 1);
}

Boolean TListDialog::valid(ushort command)
{
    Boolean ok;

tvision.git/examples/tvhc/demohelp.txt  view on Meta::CPAN

.topic SAsciiTable
 ð³ASCII table Ü
  ßßßßßßßßßßßßßß
The ASCII menu items opens an {ASCII Table:AsciiTable} that
displays the IBM PC character set.

.topic SCalculator
 ð³Calculator Ü
  ßßßßßßßßßßßßß
When you choose Calculator, a four-function {Calculator} is
opened on the desktop.

.topic File
 File  (Alt-F) Ü
  ßßßßßßßßßßßßßß
The File menu offers choices for opening files, changing
directories, and exiting the program.

 {Open:FOpen}          {Change Dir:FChangeDir}    {FExit}

.topic FOpen

tvision.git/examples/tvhc/demohelp.txt  view on Meta::CPAN

Choose Zoom to resize the active window to the maximum size. If
the window is already zoomed, you can choose this command to
restore it to its previous size.

You can also double-click anywhere on the window's title bar
(except where an icon appears) to zoom or unzoom the window.

.topic WTile
 Window³Tile Ü
  ßßßßßßßßßßßß
Choose Window³Tile to tile all file viewers on the desktop.

 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 ³ ÉÍÍÍÍÍÍÍÍÍÍÍÍ1ÍÍ»ÚÄÄÄÄÄÄÄÄÄÄÄÄ2ÄÄ¿ ³
 ³ º               º³               ³ ³
 ³ º               º³               ³ ³
 ³ º               º³               ³ ³
 ³ º               º³               ³ ³
 ³ ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³
 ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄ3ÄÄ¿ÚÄÄÄÄÄÄÄÄÄÄÄÄ4ÄÄ¿ ³
 ³ ³               ³³               ³ ³
 ³ ³               ³³               ³ ³
 ³ ³               ³³               ³ ³
 ³ ³               ³³               ³ ³
 ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³
 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
             Tiled Windows

.topic WCascade
 Window³Cascade Ü
  ßßßßßßßßßßßßßßß
Choose Window³Cascade to stack all file viewers on the desktop.

 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ1Ä¿
 ³ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ2Ä¿
 ³³ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ3Ä¿
 ³³³ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ4Í»
 ³³³º                         º
 ³³³º                         º
 ³³³º                         º
 ³³³º                         º
 ³³³º                         º
 ÀÀÀÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

        Cascaded Windows

.topic WNext
 Window³Next Ü
  ßßßßßßßßßßßß
Choose Next to cycle forwards through the windows on the desktop.

.topic WPrevious
 Window³Previous Ü
  ßßßßßßßßßßßßßßßß
Choose Previous to cycle backwards through the windows on the desktop.

.topic WClose
 Window³Close Ü    (Alt-F3)
  ßßßßßßßßßßßßß
Choose Close to close the active window.

You can also click the Close box in the upper right corner to
close a window.

.topic Options

tvision.git/examples/tvhc/demohelp.txt  view on Meta::CPAN

On monochrome systems, you use the Colors set of radio buttons
systems to modify the character attributes.

 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 ³ Text Text Text ³
 ³ Text Text Text ³
 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
On all systems, the display text (above the Help button) shows
the current color or attribute settings.

Changes do not take effect on the desktop until you close the
Colors dialog box by choosing OK.


tvision.git/source/tvision/popupmnu.cpp  view on Meta::CPAN

#define Uses_TMenuPopup
#define Uses_TMenu
#define Uses_TProgram
#define Uses_TDeskTop
#include <tvision/tv.h>

/*------------------------------------------------------------------------*/
/*                                                                        */
/*  popupMenu                                                             */
/*                                                                        */
/*  Spawns and executes a TMenuPopup on the desktop.                      */
/*                                                                        */
/*  arguments:                                                            */
/*                                                                        */
/*      where   - Reference position, in absolute coordinates.            */
/*                The top left corner of the popup will be placed         */
/*                at (where.x, where.y+1).                                */
/*                                                                        */
/*      aMenu   - Chain of menu items. This function takes ownership      */
/*                over the items and the reference becomes dangling       */
/*                after the invocation.                                   */

tvision.git/source/tvision/popupmnu.cpp  view on Meta::CPAN

    }
    return res;
}

static void autoPlacePopup(TMenuPopup *m, TPoint p)
// Pre: TMenuPopup was constructed with bounds=TRect(p, p).
{
    TGroup *app = TProgram::application;
    // Initially, the menu is placed above 'p'. So we need to move it.
    TRect r = m->getBounds();
    // But we must ensure that the popup does not go beyond the desktop's
    // bottom right corner, for usability.
    {
        TPoint d = app->size - p;
        r.move(min(m->size.x, d.x),
               min(m->size.y + 1, d.y));
    }
    // If the popup then contains 'p', try to move it to a better place.
    if (r.contains(p) && r.b.y - r.a.y < p.y)
        r.move(0, -(r.b.y - p.y));
    m->setBounds(r);

tvision.git/source/tvision/sdesktop.cpp  view on Meta::CPAN

/*------------------------------------------------------------*/
/* filename -       sdesktop.cpp                              */
/*                                                            */
/* Registeration object for the class TDeskTop                */
/*------------------------------------------------------------*/
/*
 *      Turbo Vision - Version 2.0
 *
 *      Copyright (c) 1994 by Borland International
 *      All Rights Reserved.
 *
 */

tvision.git/source/tvision/tdesktop.cpp  view on Meta::CPAN

/*------------------------------------------------------------*/
/* filename -       tdesktop.cpp                              */
/*                                                            */
/* function(s)                                                */
/*                  TDeskTop member functions                 */
/*------------------------------------------------------------*/
/*
 *      Turbo Vision - Version 2.0
 *
 *      Copyright (c) 1994 by Borland International
 *      All Rights Reserved.
 *



( run in 1.233 second using v1.01-cache-2.11-cpan-299005ec8e3 )