PSM - Public Screen Manager v1.0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Copyright (C)1993 by Dianne Hackborn. ========================================================================= This program is shareware. If you like it and find it useful, please consider sending a donation of $5 or whatever you think it is worth. My address is at the end of this file. Taking a clue from Microsoft and their MSDOG 6.0, if you become a register developer of my gadoutline.library, you will also become registered for this program at NO EXTRA CHARGE! Wow. :) This program is freely distributable as long as all of its files are included, with no modifications to them. It is provided as-is, and has warranties of any kind. ========================================================================= INTRODUCTION PSM is Yet Another Public Screen Program. It was primarily written as a demonstration of my gadoutline.library, and is thus currently very GUIcentric - it does no command line parsing for CLI users or even look at its Workbench tooltypes. On the other hand, it does have a very sophisticated multi-window user interface and allow almost complete control over the creation of screens. This program requires gadoutline.library to run, which is included in the archive. You may either place the library in your LIBS: directory or in the same directory as PSM; if it can't find it in LIBS: it will attempt to load it from its program directory. The included program "AboutGadOutline" displays information about the gadoutline.library file currently installed. Complete documentation and programming information for gadoutline.library is available in a separate distribution. GETTING STARTED There are three different windows used by PSM: The MAIN WINDOW, the EXAMINE WINDOW and the NEWSCREEN WINDOW. PSM allows multiple windows - limited only by memory - to be open and active at the same time. You could, for example, open a newscreen window and, while filling it in, get information from another screen by opening an examine window or even another newscreen window; the first window will not be disturbed in any way. The only exception to this independence is the main window, as discussed below. THE MAIN WINDOW PSM's main window is the first thing you should see after running the program, and is the main control panel for everything else. You can only have one main window open for a single invocation of the program, and closing this window will cause all other windows currently opened by the application to be closed and the program to exit. In addition, all other windows are opened from the main window, and all open windows [with the exception noted later] follow the main window to whatever screen it is on. There are two primary components of the window - the top 3/4 of the window allows the viewing and selection of all available public screens, while the bottom 2 lines contain other miscellaneous functions. At the very top of the window is a list of public screens; each entry corresponds to one public screen, and contains three distinct fields: F## Name... | | | | | +------------ Public screen's name | +----------Number of locks on the screen +-----Screen state. P=Private, *=A PSM Screen, blank is 'normal.' Directly below this list is a box labeled "Owner", which identifies any task which will be notified when the last window on the screen closes; if there is no task, it will display "None." The screen list is used to selecte which screen an operation is to be performed on. The next three lines contain buttons for the following operations: Close - Attempts to close the selected screen. This gadget will be disabled if there are any locks on the screen. Jump to - Move to the selected screen; the main window and all other opened windows will jump to that screen. Examine - Open examine window for selected screen. Dup Scrn - Open NewScreen window, with defaults from selected screen. Mod Scrn - Open NewScreen window in special modify mode on the selected screen. Disabled if the screen has any locks. Default - Select screen as the default public screen. To the right it displays the current default screen. Finally, the last two lines contain four miscellaneous control gadgets: Shanghai - Select shanghai mode; when on, all windows trying to open on the workbench screen will be forced on to the default public screen. AutoPop - Select auto pop mode; when on, a public screen will automatically move to the front when a window opens on it. New Scrn - Bring up NewScreen window based on default public screen. Quit - Exit program. Same as selecting the window's close gadget. THE EXAMINE WINDOW This window is used to look at basic information about a screen; it is opened by selecting "Examine" from the main window. Note that the information in the window is only a snapshot created at the time the window is opened; any later changes to the screen will not be reflected in the window. THE NEWSCREEN WINDOW This window is used to open a new public screen. At the top are two string gadgets, used to specify the public name the screen will be refered to by, and the title to place in the screen's title bar. Note that the public screen name must be unique to this screen and is case sensitive. Below these are two large boxes; the left is a standard list of display modes which the screen can be opened in, and the box to the right shows general information about the currently selected display mode. Below the display mode is a group of gadgets used to specify the screen's overscan information. At the top is a cycle gadget of standard overscan regions. If you select "Custom" for the region, the four gadgets below it will be activated, allowing you to specify the top-left and bottom-right corners of the display region. To the right of the overscan gadgets are the screen size gadgets. You may either choose to use the default dimension or a custom dimension for both the screen's width and height. Using a custom dimension, you may create a screen either larger or smaller than the selected overscan region. Below these gadgets is a single checkbox used to turn autoscroll on and off. When opening a screen larger than the overscan size, turning this on will allow the screen to automatically scroll when you move the pointer to its edge. At the bottom is a group of gadgets used to select the screen's font, and the "Open" button which will actually create the screen. Finally, at the far right is two groups of gadgets used to control the screen's depth, palette and drawing pens. THE MODIFY WINDOW There is a special mode of the NewScreen window called "Modify." This mode is enabled whenever the Modify button is selected from the main window, or after a screen is opened with NewScreen and the window pops up on the newly created screen. This window has some special characteristics: - It is attached to the screen it is on, and will not move from it when you select "Jump to" from the main window. - It changes the screen's palette as the window's palette gadgets are played with by the user. - The "Open" gadget is replaced with a "Modify" gadget, which closes the screen and then reopens it with any changes that have been made through the window. This makes it very easy to try out different overscan, screen mode, font, size, depth and draw pen settings until you find something that you like. Be aware that this window's attachment to its screen is _only_ through its "Public Name" gadget at the top; when changing the palette or selecting the modify gadget, this is the screen which is taken to be the one being modified. SCREEN TRACKING When opening a screen, a program needs to provide Intuition with some information that remains valid throughout the screen's lifetime. Because of this, PSM employs a method of tracking screens it has opened, which allows it to free these resources when closing the screen. Screens that are currently being tracked by it are marked with the '*' flag in the main window; if one of these screens is closed by anything besides PSM, you will loose the 100-200 bytes of memory being tracked until you reboot your computer. The method that PSM uses to track these screens allows it to track them between separate invocations of the program or even among multiple invocations of the program running at the same time. THE SOURCE CODE This archive includes all source code needed to create the program. If you own SAS/C v6.0 or later, you should be able to compile it by simply double clicking on the build icon in the source directory. Note that you will need the gadoutline.library include files in the compiler's search path in order to get it to compile. HOW TO REACH ME EMail - BIX: dhack@bix.com SCHOOL: hackbod@xanth.cs.orst.edu SnailMail - Dianne Hackborn 2895 Los Altos Drive Meridian, ID 83642 FINALLY Have fun, and I hope you find the program useful. All comments, suggestions and bug reports are more than welcome.