DrDialog (Doctor Dialog)

Versione: 
3.27
Data rilascio: 
Venerdì, 17 Febbraio, 2017

Categorie:

Licenza:

Interfaccia:

DrDialog è un tool di sviluppo visuale per il linguaggio REXX, pubblicato su IBM Developer Connection e completamente integrato nella Workplace Shell. Consente lo sviluppo di applicazioni grafiche per il PM a 32-bit utilizzando il classico linguaggio REXX nativo di OS/2 e non necessita di alcun runtime. (C) IBM, freeware.

L'esecuzione su sistemi superiori ad OS/2 Warp 3.0 (per i quali il prodotto non era stato concepito inizialmente, interrotto oltretutto prematuramente) è frutto dell'esperienza amatoriale ed è giustificata parte dall'unicità del software, parte da alcuni punti di forza attualmente ancora validi e mai eguagliati da prodotti alternativi, quali:

  • Facilità d'uso e bassa curva di apprendimento.
  • Possiede una implementazione veramente completa di tutti i controlli del PM che sono inoltre editabili dettagliatamente ed ulteriormente espandibili da programmatori esperti.
  • E' basato sul linguaggio Rexx nativo di OS/2, qualsiasi utility o applicazione DrDialog che si interfaccia con il Rexx non necessita di alcun runtime extra se non espressamente richiesta e accede direttamente all'API di OS/2.
  • E' estendibile tramite gli strumenti DrsAide e può incorporare altri linguaggi come ad esempio il C/C++, consentendo quindi di estendere di molto le proprie funzioni, pur necessitando di codice extra.
  • Il codice sorgente e le applicazioni sono molto ridotti quanto a dimensione, anche per progetti consistenti ed il codice eseguibile risulta estremamente efficiente.

In considerazione di tali caratteristiche, ed essendo praticamente l'unico prodotto gratuito e abbastanza completo per la programmazione visuale in linguaggio rexx sotto OS/2, la totale mancanza di supporto ufficiale, non ha minimamente inciso sulla sua diffusione.

Questo software è distribuito con due modalità:
  • come pacchetto compresso, da scaricare e installare manualmente; se ci sono prerequisiti da soddisfare, andranno anch'essi scaricati e installati manualmente;
  • come pacchetto RPM, installabile tramite il gestore pacchetti rpm preferito, che provvederà a scaricare e installare sia il software che gli eventuali prerequisiti.
Scegli la modalità di installazione che preferisci, tenendo conto del fatto che non tutte le versioni del software sono disponibili per entrambe le modalità.

Installazione con rpm

Questo programma si può installare usando il gestore pacchetti rpm. Vedi sotto per la stringa di installazione. I prerequisiti richiesti sono gestiti dal gestore pacchetti e, se necessario, scaricati e installati automaticamente.

DrCtl-0.1.7-3.oc00 (06/06/2018)
Repository: Netlabs stable
DrCtl 0.1.7 final release from Chris Wohlgemuth Final document is from 0.1.4 This Rexx DLL contains new controls for use with DrDialog. Use it by creating a user control when building your dialog in DrDialog. Have a look at the file Demo.res for more information. Four controls are available: -A percent bar (DRD_PERCENTBAR) -A fly overhelp control (DRD_BUBBLEHELP) -New with V01.1.2: An image control (DRD_IMAGE) which displays any image file supported by OS/2. -New with V0.1.2: a directory picker Some functions are included to set the parent<->child relationship between dialogs. History: ------- New with V0.1.4: -Functions to set the parent of a dialog New with V0.1.3: (not publicly available) -Flyover help may have several lines now. Rexx functions -------------- The following Rexxfunctions are available in the DLL: DRCtrlLoadFuncs: Load all functions of this DLL and make them available to Rexx. DRCtrlDropFuncs: Drop all registered functions. DRCtrlRegister: Register the new controls with DrDialog so they can be used. See 'How to use the controls' for more information. DRCtrlVersion: Query the release. SAY DRCtrlVersion() returns "0.1.3" (or any other version number) DRCtrlPickDirectory: Open a dialog to pick a directory DRCtrlSetParent: Set the parent of a dialog. Normaly all dialogs created by DrDialog are childs of the desktop. You may set the owner of these dialogs using a built in function but not the parent. Why do you want to change the parent? For example if you create a dialog containing a lot of controls on top of another dialog the top dialog doesn't move with the bottom dialog when it is dragged using the mouse. If you click into the top dialog the focus switches to that dialog and the titlebar of the bottom dialog becomes inactive even if the top dialog doesn't has a titlebar. That is very confusing to the user. Using this new function it's possible to connect the top dialog to the bottom one eliminating these problems. Example: rc=DRCtrlSetParent( dialogID, newParentID) Returns: 1: success 0: failure Note: The dialogs MUST be main dialogs. This means they're childs of the desktop. This is true for all dialogs created by DrDialog If you want to change parents for other dialogs use DRCtrlSetParentFromHWND(). If you change the parent of a dialog hints and bubblehelp no longer work for that dialog. DRCtrlGetHWND: Get the window handle of a dialog. This handle is used internally by PM. Example: rc=DRCtrlSetParentFromHWND( hwnd, newParentHWND) Returns: 0: failure other: the window handle (HWND) Note: If hwnd==0 it's assumed the dialog is a child of the desktop. This is the case for dialogs initially created by DrDialog. DRCtrlSetParentFromHWND: Sets the parent<->child relationship of dialogs using window handles. The dialogs may be child dialogs of a dialog. Use DRCtrlGetHWND() to query the HWND of a dialog. Example: rc=DRCtrlSetParentFromHWND( hwnd, newParentHWND) Returns: 1: success 0: failure Note: If you change the parent of a dialog hints and bubblehelp no longer work for that dialog. How to use the controls ---------------------- In your init function register the new Rexx function "DRCtrlRegister" with Rexx and then call it to register the new controls with your DrDialog application. The controls must be registered in every application because this call is local to the calling process. NOTE: The DLL must be in the current directory, the libpath or where the DrRexx.exe is. The default DrDialog installation sets the working dir for DrRexx.exe to the installation directory. So loading may fail if you start your app with a double click. Copy the DLL to your DrDialog installation directory or change the working directory then. Example: /***************************************/ /* Register the new function with Rexx */ /* This means make the function avaliable to Rexx */ rc=RxFuncAdd("DRCtrlRegister", 'drusrctl' , "DRCtrlRegister") /* Register the new controls with your application */ /* This means make the controls available to DrDialog */ call DRCtrlRegister ... /***************************************/ 1. Percent bars --------------- You may change the colors by using the Color() function of DrDialog: /* Change color of bar */ call Color '-','#255 0 0' /* Change color of text */ call Color '+','#255 255 255' You may change the font of the text by using the Font() function of DrDialog: /* Change font to 18.Helv */ call Font '18.Helv' The value of each bar may be set using the Text() function: /* Set bar to 30% */ call Text '30' The label of each bar may be set using the Text() function: /* Set bar to 30% and label to '3 of 10' */ call Text '30#3 of 10' The first part of the text string must be the value the bar should be set to. Everything after the '#' is printed as the label on the bar. You may use any text for the label or no label at all. If you don't want a label only set the value. 2. Flyover help window --------------------- Create a control of type DRD_BUBBLEHELP and set it as the default for hints: call isDefault 'C' call isDefault 'D' Now any hint specified for a control or dialog is shown as a fly over help at the position of the mouse pointer. Use the following calls to customize the fly over help. You may change the colors by using the Color() function of DrDialog: /* Change background color */ call Color '-','#255 0 0' /* Change foreground color of text */ call Color '+','#255 255 255' You may change the font of the text by using the Font() function of DrDialog: /* Change font to 18.Helv */ call Font '18.Helv' Change the delay until the bubble opens using the Text() function: /* Change the delay to 300 ms untill the bubble is opened */ call Text "#delay 300" Change the time the bubble is shown: /* Show the bubble for 2500 ms */ call Text "#show 2500" If you want to have multiline hints use '0a'x to indicate a break. /* Show a two line hint */ call hint "As you can see hints"||'0a'x||"may use several lines..." Note: DrDialog limits the length of a hint to 127 characters. 3. Image control --------------- The image control displays any image file known to OS/2. Create a control of type DRD_IMAGE and load an image on it using the text() function. call text "x:\the_path\image.jpg" The image will be stretched to fit the control. There's a function to select parts of the displayed image. A thin rectangle will be drawn and the user may change and move the selection using the mouse. By using the text function it's possible to set and query the current selection. You have to enable this feature by sending the following control string to the control. /* Enable the select feature */ call text "#E 1" To disable the feature use the string /* DisAble the select feature */ call text "#E 0" Query the current selection: /* Get the current slected area */ selection=text() The format of the returned string is: xLeft yBottom xRight yTop If there's no selection the string will contain zeros: 0 0 0 0 To preset a selection area use the text function with a control string. call text "#s xLeft yBottom xRight yTop" for example: call text "#s 12 22 100 145" 4. Directory picker ------------------- Use this REXX function to pick a directory. theDir=DRCtrlPickDirectory("x:\the_path\directory", "Title of directory") When the first parameter is given, the directory dialog will be prefilled with the given path. The second parameter may be omitted. The default Title is "Find directory". The function returns the chosen directory or an empty string if the user selected cancel or an error occurred. License ------- /* * Copyright (c) Chris Wohlgemuth 2001-2003 * All rights reserved. * * http://www.geocities.com/SiliconValley/Sector/5785/ * http://www.os2world.com/cdwriting * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The authors name may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * */ Author ------ Copyright Chris Wohlgemuth 2001-2003 http://www.geocities.com/SiliconValley/Sector/5785/ http://www.os2world.com/cdwriting

Installazione manuale

Il programma è distribuito come pacchetto ZIP: scaricare in una cartella temporanea e scompattare nella cartella di destinazione. Vedi sotto per il(i) link di download.

La procedura di installazione dell'unica versione liberamente disponibile è parziale e la documentazione in merito lacunosa, tuttavia l'esperienza ha portato alla definizione di un'iter che, seppur macchinoso, risulta in una installazione sicuramente vincolante ma funzionante e sopratutto in grado di essere utilizzata con successo anche su sistemi OS/2 Warp 4.0 e superiori. Si suggerisce pertanto di seguire i seguenti passaggi:

  • Decomprimere in cartella di destinazione;
  • applicare le due Fix se si desidera utilizzare anche Object Rexx (per chi usa eCS, aggiornare RC.EXE non è necessario). Il compilatore di risorse (RC.EXE) può essere sostituito anche con il compilatore di risorse incluso con il WATCOM (WRC.EXE), in tal caso è preferibile l'uso di uno script di compilazione personalizzato che imposti le variabili d'ambiente appropriate, oppure si utilizzi semplicemente un makefile;
  • creare due files vuoti di nome DrRexx.RES e DrDialog.RES nella directory di destinazione;
  • eseguire lo script rexx INSTALL.CMD per creare la cartella con gli oggetti;
  • aggiungere in CONFIG.SYS la directory di destinazione alle variabili di ambiente LIBPATH, PATH, DPATH e HELP;
  • riavviare il sistema.

A questo punto l'ambiente di programmazione è correttamente installato, ma la compilazione del codice sorgente tramite la procedura descritta dal manuale incluso può bloccare la WorkPlaceShell di sistemi che eseguono OS/2 Warp 4.0 e superiori, costringendo ad un riavvio forzato del sistema.

Per ovviare al problema, è necessario invocare DrDialog dal prompt con il seguente comando opzionale:

DrDialog.exe -pX:\PATH_TO_DRDIALOG

che imposta la locazione del file DRDIALOG.INI

Se non fosse ancora possibile compilare, controllare che il livello di aggiornamento del compilatore di risorse in uso sia compatibile con i livelli di aggiornamento previsti dal sistema operativo e con gli strumenti di sviluppo eventualmente installati. Se non si conoscono i livelli necessari, per individuare empiricamente la versione corretta o compatibile del compilatore di risorse, è utile provare a salvare il codice sviluppato direttamente all'iterno dell' indirizzario di installazione di DrDialog, unitamente al compilatore di risorse da provare, di modo che il toolkit utilizzi prioritariamente quest'ultimo. Si consiglia comunque di far corrispondere i livelli di aggiornamento previsti per tutti i prodotti in uso, controllando sempre la compatibilità reciproca.

Fondamenti di linguaggio REXX, propedeutici all'utilizzo di un toolkit simile, sono reperibili nel testo "Procedures Language /2 REXX User's Guide", incluso nel sistema operativo, per approfondire, REXX Reference Summary Handbook.

Qui di seguito trovi i link di download per l'installazione manuale del software:

DrDialog (Doctor Dialog) v. 20031102 (2/11/2003, International Business Machines Corporation (IBM), David C. Morrill)
 hobbes.nmsu.edu/download/pub/os2/dev/rexx/drdialog.zip
DrDialog Control v. 0.1.5-.7 (2/11/2003, Chris Wohlgemuth) Readme/What's new
DrCtl 0.1.7 final release from Chris Wohlgemuth Final document is from 0.1.4 This Rexx DLL contains new controls for use with DrDialog. Use it by creating a user control when building your dialog in DrDialog. Have a look at the file Demo.res for more information. Four controls are available: -A percent bar (DRD_PERCENTBAR) -A fly overhelp control (DRD_BUBBLEHELP) -New with V01.1.2: An image control (DRD_IMAGE) which displays any image file supported by OS/2. -New with V0.1.2: a directory picker Some functions are included to set the parent<->child relationship between dialogs. History: ------- New with V0.1.4: -Functions to set the parent of a dialog New with V0.1.3: (not publicly available) -Flyover help may have several lines now. Rexx functions -------------- The following Rexxfunctions are available in the DLL: DRCtrlLoadFuncs: Load all functions of this DLL and make them available to Rexx. DRCtrlDropFuncs: Drop all registered functions. DRCtrlRegister: Register the new controls with DrDialog so they can be used. See 'How to use the controls' for more information. DRCtrlVersion: Query the release. SAY DRCtrlVersion() returns "0.1.3" (or any other version number) DRCtrlPickDirectory: Open a dialog to pick a directory DRCtrlSetParent: Set the parent of a dialog. Normaly all dialogs created by DrDialog are childs of the desktop. You may set the owner of these dialogs using a built in function but not the parent. Why do you want to change the parent? For example if you create a dialog containing a lot of controls on top of another dialog the top dialog doesn't move with the bottom dialog when it is dragged using the mouse. If you click into the top dialog the focus switches to that dialog and the titlebar of the bottom dialog becomes inactive even if the top dialog doesn't has a titlebar. That is very confusing to the user. Using this new function it's possible to connect the top dialog to the bottom one eliminating these problems. Example: rc=DRCtrlSetParent( dialogID, newParentID) Returns: 1: success 0: failure Note: The dialogs MUST be main dialogs. This means they're childs of the desktop. This is true for all dialogs created by DrDialog If you want to change parents for other dialogs use DRCtrlSetParentFromHWND(). If you change the parent of a dialog hints and bubblehelp no longer work for that dialog. DRCtrlGetHWND: Get the window handle of a dialog. This handle is used internally by PM. Example: rc=DRCtrlSetParentFromHWND( hwnd, newParentHWND) Returns: 0: failure other: the window handle (HWND) Note: If hwnd==0 it's assumed the dialog is a child of the desktop. This is the case for dialogs initially created by DrDialog. DRCtrlSetParentFromHWND: Sets the parent<->child relationship of dialogs using window handles. The dialogs may be child dialogs of a dialog. Use DRCtrlGetHWND() to query the HWND of a dialog. Example: rc=DRCtrlSetParentFromHWND( hwnd, newParentHWND) Returns: 1: success 0: failure Note: If you change the parent of a dialog hints and bubblehelp no longer work for that dialog. How to use the controls ---------------------- In your init function register the new Rexx function "DRCtrlRegister" with Rexx and then call it to register the new controls with your DrDialog application. The controls must be registered in every application because this call is local to the calling process. NOTE: The DLL must be in the current directory, the libpath or where the DrRexx.exe is. The default DrDialog installation sets the working dir for DrRexx.exe to the installation directory. So loading may fail if you start your app with a double click. Copy the DLL to your DrDialog installation directory or change the working directory then. Example: /***************************************/ /* Register the new function with Rexx */ /* This means make the function avaliable to Rexx */ rc=RxFuncAdd("DRCtrlRegister", 'drusrctl' , "DRCtrlRegister") /* Register the new controls with your application */ /* This means make the controls available to DrDialog */ call DRCtrlRegister ... /***************************************/ 1. Percent bars --------------- You may change the colors by using the Color() function of DrDialog: /* Change color of bar */ call Color '-','#255 0 0' /* Change color of text */ call Color '+','#255 255 255' You may change the font of the text by using the Font() function of DrDialog: /* Change font to 18.Helv */ call Font '18.Helv' The value of each bar may be set using the Text() function: /* Set bar to 30% */ call Text '30' The label of each bar may be set using the Text() function: /* Set bar to 30% and label to '3 of 10' */ call Text '30#3 of 10' The first part of the text string must be the value the bar should be set to. Everything after the '#' is printed as the label on the bar. You may use any text for the label or no label at all. If you don't want a label only set the value. 2. Flyover help window --------------------- Create a control of type DRD_BUBBLEHELP and set it as the default for hints: call isDefault 'C' call isDefault 'D' Now any hint specified for a control or dialog is shown as a fly over help at the position of the mouse pointer. Use the following calls to customize the fly over help. You may change the colors by using the Color() function of DrDialog: /* Change background color */ call Color '-','#255 0 0' /* Change foreground color of text */ call Color '+','#255 255 255' You may change the font of the text by using the Font() function of DrDialog: /* Change font to 18.Helv */ call Font '18.Helv' Change the delay until the bubble opens using the Text() function: /* Change the delay to 300 ms untill the bubble is opened */ call Text "#delay 300" Change the time the bubble is shown: /* Show the bubble for 2500 ms */ call Text "#show 2500" If you want to have multiline hints use '0a'x to indicate a break. /* Show a two line hint */ call hint "As you can see hints"||'0a'x||"may use several lines..." Note: DrDialog limits the length of a hint to 127 characters. 3. Image control --------------- The image control displays any image file known to OS/2. Create a control of type DRD_IMAGE and load an image on it using the text() function. call text "x:\the_path\image.jpg" The image will be stretched to fit the control. There's a function to select parts of the displayed image. A thin rectangle will be drawn and the user may change and move the selection using the mouse. By using the text function it's possible to set and query the current selection. You have to enable this feature by sending the following control string to the control. /* Enable the select feature */ call text "#E 1" To disable the feature use the string /* DisAble the select feature */ call text "#E 0" Query the current selection: /* Get the current slected area */ selection=text() The format of the returned string is: xLeft yBottom xRight yTop If there's no selection the string will contain zeros: 0 0 0 0 To preset a selection area use the text function with a control string. call text "#s xLeft yBottom xRight yTop" for example: call text "#s 12 22 100 145" 4. Directory picker ------------------- Use this REXX function to pick a directory. theDir=DRCtrlPickDirectory("x:\the_path\directory", "Title of directory") When the first parameter is given, the directory dialog will be prefilled with the given path. The second parameter may be omitted. The default Title is "Find directory". The function returns the chosen directory or an empty string if the user selected cancel or an error occurred. License ------- /* * Copyright (c) Chris Wohlgemuth 2001-2003 * All rights reserved. * * http://www.geocities.com/SiliconValley/Sector/5785/ * http://www.os2world.com/cdwriting * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The authors name may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * */ Author ------ Copyright Chris Wohlgemuth 2001-2003 http://www.geocities.com/SiliconValley/Sector/5785/ http://www.os2world.com/cdwriting
 www.os2site.com/sw/dev/rexx/drdlg/drdialogctrl1.5_1.7.zip  local copy
DrDialog Reference Book (PDF) (2/11/2003)
 hobbes.nmsu.edu/download/pub/os2/dev/rexx/DrDialog-Reference-Book-printable-version.zip
Fix for creating executables (2/11/2003, D Clark)
 hobbes.nmsu.edu/download/pub/os2/dev/rexx/DrDlgRc.zip
Fix for Object Rexx (2/11/2003, D Clark)
 hobbes.nmsu.edu/download/pub/os2/dev/rexx/DrDlgFix.zip
Object Rexx integration (2/11/2003, International Business Machines Corporation (IBM)) Readme/What's new
ENHANCEMENTS TO OBJECT REXX The following enhancements have been made to this Object REXX beta level: - Corrected several bugs: * TRAP in REXXCRT.DLL if filename on LINEOUT contains a blank * strange behaviour in FORMAT() function * problems with NULL characters in streams * PMREXX can't execute external commands * PMREXX doesn't show trace information * PMREXX argument parsing problem * environment variable in SysSearchPath no longer case sensitive * several problems in memory management * sporadic traps with DB2 API * memory problem in FILESPEC() function * Philosophers forks demo with DrDialog runs once (from Object REXX redbook) * deadlock when REXXC is run concurrently with another REXX program * problems passing variables to Lotus Notes API - Added features: * Updated OpenDoc components (only for those who have the OpenDoc Toolkit from DevCon 9 Special Edition) * environment symbols allowed as patterns in PARSE instruction
 hobbes.nmsu.edu/download/pub/os2/dev/rexx/objrexx.zip
Scheda aggiornata l'ultima volta il: 14/10/2020 - 06:49

Aggiungi un commento