PM Designer



PM Designer (PMD) is an object-oriented GUI development tool designed to allow the fast, easy design of PM applications. It supports the creation of sophisticated applications with menus, multiple windows, toolbars, tool palettes, status bars, and dialog boxes, and custom controls. It's just as easy as using the other visual development environments, except that with PMD, the language is compiled C++, not an interpreted or translated language.

Version 2.0
Version 2.0 is a complete rewrite of the original PMD, and now features an architecture similar to Visual Basic, Delphi, and other popular RAD tools. Version 2.0 supports custom controls and a variety of compilers and GUI class libraries. A new Project manager window lets you organize your project's files for easy access. A Toolbox of controls lets you build forms quickly and easily using drag-and-drop techniques. You can create your own custom controls for this toolbox.

Forms
A PMD project is centered around the concept of the Form. A Form file is a binary image that describes everything about the form, the controls on it, and the code attached to it and it's controls. You create forms and include them in the project, and at build time, a complete set of resource files and source files is generated for each form. These contain the resource statements for the controls on a form(for example, if the form you create is a dialog box), and a class definition and implementation for the form object as it will appear in the program. (The class definition and implementation file are always generated for the class library you've chosen to use, so you get total flexibility). Forms can be used across projects, so you can quickly build up a library of pre-fabricated components, thus simplifying your development efforts. PMD features an integrated Form Designer which lets you build dialog boxes and windows by dragging and dropping controls on a form. Once you've dropped a control on a form, you can move it, size it, set it's style, color, text, help text, and position, and attach code to any event the control supports.

Code
Where earlier versions of PMD let you select one of 5 types of "links" for a button control or menu item, PMD 2.0 puts you into the source code for the event you select, and lets you edit it on the fly. Where PMD 1.x only let you link items to commands, PMD 2.0 lets you attach code to any event generated by any object, such as an item in a container control being selected, or the mouse pointer being moved over a form's surface.

Writing code attached to an object is easy with the integrated editor. It can optionally insert code for common actions, such as opening a file, etc. and at any time, you can add to the library of code that can be inserted. Context sensitive API help is just a mouse-click away, and navigating between sections of code is as easy as selecting an object or procedure name from a list.

Custom Controls
PMD supports the creation and use of custom controls, contained in special libraries(CTLs). These are similar in concept to VBXes supported by some Windows programming environments, only better. For one thing, unlike a VBX, custom methods are supported, as well as events, properties, and control styles. Anything that can be expressed in C or C++ code and compiled in a DLL can be made into a CTL file and dropped on a form, giving the programmer total control over the object's behaviour and attributes.

Any number of custom controls can be contained in a CTL library. In the application code, a control object is handled as a normal C++ object, but the CTL file's internal implementation is compiler and class library-independent, so you're not tied to our class library, or anyone elses. At generation time, the code generator DLL you use to generate code for your project queries the CTL for the required information, and generates the appropriate C++ class definitions and implementation files for it automatically. This allows you to create a CTL file and distribute it for resale, without having to worry about supplying import libraries for every C++ compiler supported by PMD.

PMD's controls don't even tie you to the PMD environment. The Professional Edition of PMD comes with a control design toolkit. For a limited time, this toolkit is free to registered users of the Base edition of PMD.

Redistribution of Control Libraries
A common problem with environments that support custom controls that exist in separate files is that when it's time to distribute your application to users that have newer or older versions of the controls already on their systems, the application may fail with obscure error messages such as "File Not Found", or may crash outright. Anyone who has tried to distribute an application of this type in the Windows environment has more than likely seen this. PMD applications offer several options for avoiding this problem, such as requiring their controls to be in the same directory as the executable, version checking, and, if the control still fails to load properly, an informative error message is displayed, and suggests actions you should take to rectify the problem.

Class Library
PMD includes the VacNat Interface Classes (VIC) library that wraps the "gory details" of PM programming in a comprehensive set of C++ classes that includes windowing APIs, controls, threads, the help subsystem, Profile files, and more. This can, of course, be used independently of PMD, and was used to write PMD itself. Smaller and simpler than some other GUI class libraries, it places an emphasis on performance, letting you write object-oriented applications that are as fast as applications written to the "raw" API. Source code is included(Professional Edition only), as well as makefiles for all of the supported compilers and toolkits. A version of this library that allows you to use a single source for OS/2, Win95, and Windows NT is also under development, but will not be released until it works exactly as advertised.

Code Generation
PMD supports an open architecture, letting you use it to design applications based on any class library that a code generator exists for. A toolkit for building your own generators is included in the Professional Edition, and, like the Control Design toolkit, is free to registered users of PMD for a limited time. Custom code generators, like custom controls, can be freely distributed as the author sees fit.

The code generator that ships with PMD generates code for the VIC library, and generates all source files, resource scripts, resource headers, and makefiles required to build your application. It also includes a hierarchical project window so you can view the generated source files directly.

We are planning to release a number of additional code generators soon, to support other available class libraries, and the PM API directly.

Features
PMD, Standard Edition, includes the following:
 * PMD Design environment with integrated Form and Menu Designers.
 * VIC code generator module.
 * VIC class library with support for the compilers and toolsets listed below.
 * Sample programs.
 * Online documentation.

The Professional Edition includes all of the above, plus the following:
 * Custom Control Design tools and documentation.
 * Generator development toolkit and documentation.
 * VIC library source code and makefiles.
 * Icon library.
 * Bitmap library.
 * More controls.

System Requirements
PM Designer, Professional Edition, requires approximately 8 MB of disk space for a full installation.

At least 8 MB of RAM is recommended. To generate OS/2 applications, an OS/2-compatible compiler and toolkit are required, such as Borland C++ for OS/2, IBM C/Set++, MetaWare High C/C++, or Watcom C++ 10.0a or better. A mouse or other pointing device is highly recommended.

Supported Systems
The following systems are supported by PMD:
 * IBM C/Set++ 2.0 and up
 * Borland C++ 1.5 and up
 * Watcom C/C++ 10.0a and up
 * MetaWare High C/C++ 3.x

Download

 * Demo Version 2.0d

License
Discontinued. Commercial Software.

Author

 * Kelly Schrock