[Table of Contents]
[Previous Chapter]
[Next Chapter]
[Object Central Home]
The V C++ GUI Reference Manual - Vers. 1.20 - 6/30/98
Copyright © 1998, Bruce E. Wampler
The
V directory structure has been designed to allow you to either
install
V in a personal directory, or at a higher system level.
By defining an appropriate search path in the Makefile, your
applications can find the required
V files.
You should download the standard distribution file
vx-1.00.tar.gz1,
which is a gzip GNU Zipped tar file (or the full combined version,
v-1.00.tar.gz). After you unzip the file
(with gunzip, or the -z switch on some versions of tar),
you can extract the file to wherever you want it. It will build
a /v subdirectory from the directory containing the vx-1.00.tar
file. The file hierarchy is:
The makefile provided with
V uses the GNU C++ compiler,
g++.
V does not use templates or other C++ features that
can cause portability problems. The current version has been
built and tested using g++ Version 2.8 although it
did work back to Version 2.6.3, but
not earlier versions. There is no inherent reason that
V should
not compile with other C++ compilers.
To date,
V has successfully been compiled on several platforms,
including Linux, SunOS, Solaris, AIX, SGIs, and DEC Alphas. The standard distribution
includes a Makefile
that can be easily configured for several platforms. The makefile requires
GNU make! The secret is to examine Config.mk and add and modify
the definitions at the beginning as needed for your platform. (For Linux,
this will usually be a no op, since Linux is the default configuration.)
Examine the definitions already there, and then add a section with
the locations defined as needed for your platform. Then use an ARCH=
definition on the make line (or make your platform the default.)
The X program name is the name you supply to the vApp constructor.
The PostScript print driver does not draw shapes with hatched
brushes.
The PostScript drawing canvas does not support CopyFromMemoryDC.
Source code uses two naming conventions - .cxx and
.cpp. Gnu g++ version 2.6 and later support both
file extensions. G++ version 2.5 doesn't like .cpp,
so you might have to rename those files to .cxx,
There seems to be problems with colors on X Pseudocolor systems.
The directory structure of
V under MS-Windows is similar to the X version.
On the distribution, the MS-Windows hierarchy is found under the /v
directory. (We will use Unix / notation for files instead of the
usual MS-Windows backslash notation. Most MS-Windows compilers handle
the / correctly, and / is used throughout the
V source files.)
When you unzip the archive, a subdirectory /v will be
built.
Under /v are /bin/win for the example
V MS-Windows
binaries, /draw for the VDraw example program, /examp
for a simple example program, /includew/v for the
V\
.h header files, /lib/win for the MS-Windows compiled
library, /obj/win* for the object files, /srcwin
for the MS-Windows version of the source code, /test for the
test driver program, and /tutor for the source code to the
tutorial included in this reference manual.
For MS-Windows, the
V library source files use a .cpp extension.
The example programs also use .cpp. The source for most of the
example programs is identical for the MS-Windows and X versions! However,
the source for the library .cpp and .h files are different
for each platform, so you must be careful not to mix the X and MS-Windows
versions of source code and header files.
Vhas been successfully been compiled using Borland C++ 4.5 for
Win3.1 and WIN32; Borland C++ 5.02 for WIN32; Watcom 10.6 for Win3.1 and WIN32;
the GNU-WIN32 gnu g++ compiler (both with Cygwin and mingw32);
and Microsoft VisualC++ under several versions.
Several Borland .ide files are included on the directory
/vwin/bccide. The .ide files assume
V is built on
drive C:, so you may have to modify it if you want to build
V\
on your own system. If you are using another compiler, then you
need to compile
every .cpp file found on the
/srcwin directory.
Project files for compiling with Watcom C++ are included in
the directory v/watcom. Unlike the Borland versions,
the object code and libraries are built directly on these
watcom directories.
The required changes and makefiles required for the mingw32 compiler
will be made available on the
Vweb site.
V will automatically append a Window menu item to the main
menu. The built in Window menu supports the standard cascade
and tile MDI operations, as well as showing a list of MDI children.
You can also get MS-Windows applications to look like the standard
SDI model. If you want an SDI app, you control this in the
static declaration of the vApp object:
Since X doesn't have an MDI/SDI equivalent, it is harmless
to specify SDI to an X version of your app.
As stated in the main part of this manual,
V does not use resource files.
This is true for the MS-Windows versions. However, there is one reason you
might want to include a .RC file with a
V MS-Windows application,
and that is to allow you to define the icons used with the application.
(These are MS-Windows icons, and are
not the same things as
vIcons.)
Typical MS-Windows MDI applications use two icons - one for when the whole application
is iconized, and one when each child window is iconized. If you don't supply a
.RC file, you will get the default MS-Windows icons. The
V distribution
supplies two default icons of its own, called vapp.ico and vwindow.ico.
By including the definitions vAppIcon ICON vapp.ico and
vWindowIcon ICON vwindow.ico in the .RC file,
V will load and use those icons for the application and each child window
respectively. You can substitute whatever two icons you want for your application
by specifying different .ico files for
the vAppIcon and vWindowIcon names in the .RC file.
MS-Windows applications are typically compiled using a .DEF file. You
can modify any of the .DEF files included with
V sample programs.
This was an X only release, and added 3D controls.
This release was never formally announced, and included some
of the changes listed for version 1.07.
The 4/15/96 release added several significant features to
V:
The 7/4/96 release of
V has several minor bug fixes for the
MS-Windows and X versions. It also adds the WorkSlice methods
to support applications that require computations to continue
even if the user is not entering commands to the application.
This was a bug fix release for MS-Windows. The X version was
unchanged, but renumbered for consistency.
This 8/24/1996 release of
V is a major release with several
new features, and some significant bug fixes that can change
the behavior of existing
Vapplications. The following includes
a list of changes:
The major addition to 10/6/96
VRelease 1.14 is the addition of
the vTextEditor class, which is a very good first pass at
a complete editing canvas. The editor is complete, can be
extended to support custom command sets or file management.
It is missing cut, copy, and paste, which will be implemented
as general support for these is added to
V. The code for
vTextEditor is based on vTextCanvasPane, and
is identical for the X and MS-Windows versions.
Also, for the X Version, support for OpenGL has been added.
This support is found in the distribution directory
v/vxgl. While the
VOpenGL canvas pane seems
very robust, it is still somewhat experimental. I would
like any feedback on its use and design.
Other changes, mostly bug fixes, include:
Release of V Version 1.15 has some non-backward compatible
changes. In previous versions of V, there were inconsistencies in
the order of width and height parameters. These have all been now
changed to consistently use a width/height order. (Except for
vIcon, which still use height/width.) The decision to fix this
order came from a general consensus of the V mail list.
You will need to change your code to reflect the new changes.
The following things must be changed:
1. Any calls to the constructor of a base or derived vCmdWindow
will need the width and height order swapped.
2. Calls or overrides of vApp::NewAppWin need the
order of width and height swapped.
3. Calls to vCanvasPane::SetHeightWidth(h,w) need to be
changed to vCanvasPane::SetWidthHeight(w,h).
4. Calls or overrides of all versions of Redraw(x,y,h,w)
need to be changed to Redraw(x,y,w,h).
5. Calls or overrides of all versions of Resize(h,w)
need to be changed to Resize(w,h). (The vTextCanvas
row/column versions retain their row/column order.)
Also, the makefiles have been revised for more flexible
building on different *nix platforms.
A new method, vDialog::DialogDisplayed has been added to
allow dynamic setting of dialog control values.
Version 1.16 has no significant changes in V functionality.
It mostly has some bug fixes. The only major change is
the release of a completely new set of Makefiles for
the Unix version. These new makefiles were contributed by
a V user, and are much cleaner than the old versions.
A summary of the changes:
Version 1.16 has proven to be remarkably stable. A few minor bugs
have been reported and corrected for Version 1.17. Some
enhancements have been added, the most significant allows you
to specify the number of rows displayed in a list box.
A summary of the changes:
Release 1.18 has a major enhancements to
V. The main addition is
support for Tool Tips - little boxes with text info that are automatically
displayed when the user holds the mouse over a control. Tool Tip
support is
very trivial to add to your programs, and greatly
enhances the user interface.
There are some minor enhancements, and a few bug fixes. Beginning with
the 1.18 release, there will be a separate document that summarizes
the changes for that version. This will simplify the upgrade path for
past users.
Release 1.19 has some minor enhancements, and a few bug fixes. The main
enhancement is the addition of password support for text in controls.
There have also been some improvements to vgen, especially for
support for the mingw32 MS-Windows compiler. The support for
the mingw32 compiler has been improved.
Release 1.20 is has some major new features.
Appendix E
V is usually found in one of several archives: v-1.00.tar.gz,
the full distribution of all current versions of V; vx-1.00.tar.gz,
the X only distribution; and vwin100.zip, the MS-Windows only distribution.
Note the version (1.00) will change as V is updated.
Release NotesE.1 X Window System
The current X implementation of
V uses the Athena widget set with
some modified versions of some widgets from the Xaw3d widget set.
The code has about 95% of what is needed to work on Motif, but this
effort has been largely abandoned. If someone out there
really wants
Motif, please work on it.
Directories
Compilers
The X Makefile
The Makefile is the main way to build X versions of
V.
It has comments that should help you to build the X version of
V.
See the file README.TXT for more instructions for installing
V
on a *nix platform. All of the customizations for a given platform
have been isolated into the file [Config.mk].
X Resources
V makes limited used of X resources. The main use is to define
the basic color schemes for controls and dialogs. The following
resources are used:
By varying just the above X resources, you can really change
the visual look of your
V app.
The /v/srcx directory contains several files of the
form vRes* that contain various color schemes.
The default color scheme is contained in vResDefault
(but you don't need to load it - it is the default).
The file vResBlueMtf contains the color scheme similar
to Motif. This is the contents of vResDefault:
*vDialogBG: gray75
*vStatusBarBG: gray80
*vMenuBarBG: gray70
*vControlBG: gray80
*vControlFace: gray70
*vLightControlShadow: gray87
*vDarkControlShadow: gray50
To use one of these, or your own, resource files, you can
use the command xrdb -merge vResColorscheme. You
can also add the lines to your .Xresources file.
X Bugs
E.2 Microsoft Windows
The current implementation of
V for MS-Windows is for Windows 3.1
and WIN32 (Windows 95 and NT). We will refer to this version as Vwin in this
description.
The Windows version of
V is available at as
[vwin100.zip] (a MS-Windows Zip format file) on the
V ftp
site. You will need a version of ZIP or gunzip and
tar to extract
V.
Directories
Compilers
MDI/SDI Models
V for MS-Windows supports both the MS-Windows MDI and SDI models.
By default,
V uses MDI, and will bring up the main MDI window,
and open the first MDI child window. There currently is no way to
have a main MDI window with no active MDI child windows - when
you exit the last window, the application closes. The menu,
command bar, and status bars will change to the ones defined by
each child window as each child window is activated.
static testApp* tApp = new testApp("Vtest",1);
The second parameter controls MDI or SDI. A default parameter
is defined by
Vas 0 to indicate the MDI model. If you specify
a 1, then
Vwill take an SDI look. It actually does this
by using the MDI code, but maximizing the canvas window,
removing the extra buttons from the menu bar, and not
adding the Window menu. It is impossible for the
user to tell that this is really an MDI application, but
Vdoes not strictly enforce this. If you create more than
a single vCmdWindow object, unpredictable things will
happen under the SDI simulation. It is up to you to not do that.
Icons
DEF File
Bugs on MS-Windows
E.3 V Versions
E.4 Future Plans
[Table of Contents]
[Previous Chapter]
[Next Chapter]
[Object Central Home]
1 Or whatever the latest version is...