PxPlus User Forum

Twitter Twitter Twitter

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - PxPlus

Pages: [1] 2 3 ... 5
1
General Announcements / Update from PVX Plus Technologies
« on: December 01, 2023, 05:12:00 PM »
All of us at PVX Plus Technologies would like to express our best wishes to the King's as they embark on their new stage of life. We will miss the constant presence of Mike’s innovative genius and Rosalba’s impeccable organization that have guided us throughout the years. We wish you much success in your new endeavours, and we are also looking forward to connecting with you in the role of consultants.

In March of this year, PVX Plus was sold to Jonas Software. Jonas Software was the right choice as they offer the most solid foundation to support the continued growth of PVX Plus Technologies over the long term. PVX Plus Technologies will continue to develop and enhance the language and toolset. Our dedicated and engaged team is currently working on the next release scheduled for May 2024.  We will continue to offer new releases designed to enhance our customers applications and solve your pain points.

In addition to our team of experienced developers staying with the company, we are pleased to announce that our team is growing. In the past couple of months, we have added two new team members and are in the process of hiring a third. 

We look forward to working in collaboration with our customers to understand and solve your challenges.

For those who aren't on our mailing list, please sign up here.
 

Thanks,
The PVX Team

2
Introducing our seven part video series on PxPlus 2023.

These videos will showcase many of the new features of PxPlus 2023 highlighting both Webster+ and the PxPlus Database interfaces.


For full details on this release please see our Release Info page.

3
Webster Plus / New Webster+ Video and Demo site
« on: August 20, 2021, 02:17:29 PM »
See Webster+ in action!

We are pleased to announce the latest in the Webster+ videos and even more excited to announce the Webster+ demo application.

In this short five minute video, we are introducing our very own Webster+ demo application. What better way to see what you can do with Webster+ than with a working application.

      Watch Video

You'll also learn how you can take a self-guided tour of the application which uses a wide variety of Webster+ features from simple generated file maintenance pages to grids, smart charts, report writer and much more.

Take the demo application for a test drive at https://testdrive.pvxplus.com




4
This new message board is designed for general discussions about Webster+ which was introduced as part of the PxPlus 2021 Web bundle.

If you are not monitoring all boards, and are interested in what's new in Webster+, make sure you enable notifications to receive postings on this section.

5
Webster Plus / Announcing Webster Plus Video Series
« on: August 19, 2021, 05:25:46 PM »
With the release of PxPlus 2021, we introduced a new toolset included in the Web bundle called Webster+. This toolset is designed to make both the generation of Web pages and setup of Web sites easier.

As promised, we are creating a set of introductory videos to give you an overview of the Webster+ features and quickly get you familiar with them.

Webster+ Installation

In this video we will show you how to install and setup a basic Webster plus system. Learn how to run the Webster plus installation utility from either the PxPlus command mode, or the 2021 PxPlus IDE.

      Watch Video

Setup & Configuration

A critical step for Webster+ development is the setup process. In this video, you will learn about the most important things you want to have setup before you get started.

      Watch Video


Generating Pages

In this short tutorial, we will show you how you can easily create Webster+ HTML pages using another new feature in PxPlus 2021: the File Maintenance Generator.

      Watch Video


6
FAQs / Google is not allowing to sign-in via Embedded Browsers
« on: May 06, 2020, 02:31:34 PM »
In April of 2019 Google for security purposes started preventing embedded browsers from being able to sign into Google accounts (source: https://support.google.com/accounts/answer/7675428?co=GENIE.Platform%3DDesktop&hl=en). Google is doing this to combat a form of phishing, known as “man in the middle” (MITM) which can be done through embedded browsers to steal users information.

This Google decision affects both the PxPlus *BROWSER embedded chromium browser object/control (https://manual.pvxplus.com/?utilities/browser.htm) and the Shell.Explorer embedded browser COM control (https://manual.pvxplus.com/?NOMADS%20Graphical%20Application/Creating%20Panel%20Controls/COM%20Control/COM%20Control.htm). If you use an embedded browser control in your application the embedded browser will not be able to be used to sign in to any Google account. This affects all versions of PxPlus because the change is on the Google sign-in process side not in the application or embedded browser control.

If you need your application to bring the user to a Google service you can still have your PxPlus application launch the default system web browser and direct it to the Google service.
    SYSTEM_HELP url$

Google still allows standard system web browsers like Chrome, Firefox, Safari, and Edge to log into Google accounts it is only restricting embedded browsers from doing so.

Using the system web browser means the user will be taken away from your application and is a less integrated solution but it is more secure. If you need a more integrated solution that meets Google security standards your application will need to transition to using oAuth2 to login to Google accounts and the Google APIs to interact with the Google services. PxPlus provides an object *obj/oauth2 that can be used to help with the oAuth2 login process.

7
General Announcements / Announcing PxPlus 2019
« on: May 15, 2019, 05:47:36 PM »
We are pleased to inform you that PxPlus 2019 (v16) is available for download.

About This Release

This new release consists of numerous new features, customer suggested enhancements, and usability improvements, as well as a number of corrections and minor changes.

What's New Highlights

  • A utility to Generate Android and iOS Apps for your iNomads application or other Web-based content.
  • Panel Creation Wizard for generating file maintenance and inquiry panels using the Data Dictionary and Data Classes
  • Enabled the built-in Windows Spell Checker for Multi-Lines
  • Extended Class Validation and Display options for dynamic Multi-Line Data Classes for validating against a data file and displaying selected data
  • "Plus" Charts with full integration for Windows, iNomads, PDF, HTML and Image files and the ability to create Smart Charts
  • Industry standard Data Encryption using AES and Hashing algorithm
  • Let's Encrypt SSL/TLS Certificate support for EZWeb and EZWeb as a Service
  • Updated to the new TinyMCE HTML Editor and new modern Layouts
  • Database Conversion Utility for migrating a standard data file to a database table (ADO, DB2, OCI, ODB, MYSQL)
  • Save and recall shareable run-time Query Profiles

Watch our short video showcasing some the key features in PxPlus 2019



Resources

For a complete overview of new features in this release, see the What’s New section.
To download the software for PxPlus 2019, go to our Download Center.
For additional technical information, see our Documentation website.

8
Tips and Techniques / How does SVN work?
« on: April 09, 2019, 01:22:09 PM »
Generally how our SVN interface works is that each programmer works from their own desktop, each of which contains a copy of the SVN library generally refereed to as their sandbox.  The programs and Nomads panels in the sandbox are maintained in text form.

When they edit a program and issue a SAVE command (from command line or via any of the editors), the system not only updates the application code (compiled version of the program) but also the text version of the program in the sandbox.  Same holds true for PxPlus Nomads panels the system updates not only the screen library but also the text mode sandbox where each panel is maintained as a separate text file in a sub-directory whose name matches that of the screen library.

When the programmer is happy that his/her changes are clean and they want to commit these they use TortoiseSVN to commit the changes source files from their sandbox to the SVN server/repository.  This is done using a secure SSH connection using Putty.

On a regular basis programmers should 'Update' their sandbox from the SVN server.  This update process will update the files in their sandbox with the current committed versions.  Should the program be working on the same programs and as such their sandbox version have changes they have made, the system will attempt to merge the SVN repository version with their changes.

Should the system find that the there is a conflict between changes the program has made and the repository version, it will flag the file and request that the user either manually merge the changes or accept the SVN repository version or their own.  This rarely happens as a conflict would only occur if the program changed the same line.

The biggest advantage that using SVN provides is that each programmer can work independently and generally not have to worry about 'locking' programs or panels.  Also since each programmer has their own copy of the software they can work remotely without the need to be only constantly.  They only need to connect to the server when committing changes or updating the workstation.

Further details on how to setup: https://manual.pvxplus.com/PXPLUS/PxPlus%20Version%20Control%20System%20Using%20TortoiseSVN/Introduction.htm

9
Programming / PxPlus 2018 Update 1 now available
« on: November 02, 2018, 12:01:25 PM »
PxPlus 2018 Update 1 is now available for download and includes the following enhancements and a variety of minor fixes.

  • Added the ability to drag/move Buttons to a new position.
  • Added a new option for Buttons, Check Boxes and Radio Buttons that places a bitmap centered and scaled to fill the button and overlays the bitmap with centered text if present.
  • Added support for the inclusion of expressions in the TBL( ) validation rule for a data dictionary table.
  • Enhanced the PxPlus Google Maps interface to allow the inclusion of a Google API Key which Google now requires.

10
FAQs / How can I fix "Unable to locate SSL library" on Linux
« on: July 27, 2018, 01:44:06 PM »
On occasion PxPlus is unable to locate the openssl libraries on Linux systems.  This is generally caused by the fact that the openssl libraries have not been properly installed or updated.

When this happens, if you attempt to open a SSL/TLS connection to another computer you will get the following message:

  • Error #13: File access mode invalid
    Last IO to [tcp]......;secure, channel nn
    Unable to locate SSL library (ssleay or libssl) (err/ret=2/2)

This message indicates that the libraries used by SSL (libssl.so and libcrypto.so) are not in the correct location and thus cannot be loaded into PxPlus.

You can determine the location in which the libraries should be found by using the Linux ldd command against the pxplus you installed. 

Below is the output for both the 32 and 64 bits pxplus installs from a Centos system:

  • 32 Bit ldd output

    root@vm-centos-7 pxplus32]# ldd pxplus
    linux-gate.so.1 => (0xf7769000)
    libdl.so.2 => /lib/libdl.so.2 (0xf774a000)
    libm.so.6 => /lib/libm.so.6 (0xf7708000)
    libnsl.so.1 => /lib/libnsl.so.1 (0xf76ee000)
    libc.so.6 => /lib/libc.so.6 (0xf7531000)
    /lib/ld-linux.so.2 (0xf776a000)

  • 64 bit ldd output

    root@vm-centos-7 pxplus64]# ldd pxplus
    linux-vdso.so.1 => (0x00007ffefb18c000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f1ae4c05000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f1ae4903000)
    libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f1ae46e9000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f1ae4327000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f1ae4e23000)
Generally on Linux the 32 bit systems the libraries are in /lib whereas on a 64 bit install the libraries can be found in /lib64.  These libraries normally will have links for libssl.so and libcrypto.so which point to the current version of the libraries.  The links should have been setup during the initial openssl install and may be changed during software updates, however sometimes these links get broken or are not setup properly.

On our Linux systems here the .so files point to the current version of libssl (1.0.1e in this case):

  • [root@vm-centos-7 pxplus64]# ls -l /lib/libssl.so
    lrwxrwxrwx. 1 root root 16 May 31 2016 /lib/libssl.so -> libssl.so.1.0.1e

  • [root@vm-centos-7 pxplus64]# ls -l /lib64/libssl.so
    lrwxrwxrwx. 1 root root 16 May 31 2016 /lib64/libssl.so -> libssl.so.1.0.1e

To resolve the problem with PxPlus not being able to find the SSL libraries you need to locate the proper openssl libraries on your system and create the required symbolic links for libssl.so and libcrypto.so using the Linux ln command.  (Make sure you make the link symbolic and not a hard link)

NOTE: There is usually a libcrypt.so (missing 'o') in the library directories.  This is NOT part of the openssl libraries and should not be touched.

11
FAQs / How to change color used when printing 'SB' on Windows
« on: July 20, 2018, 10:43:37 AM »
Over the last few years Windows has changed the brightness of the gray color it uses on buttons and windows.  By default, the Windows gray colors are used by PxPlus to define the Light and Dark gray colors so that windows and controls created in PxPlus match the colors used by Windows.  These gray colors are also used by the system when displaying Black or White text with the 'SB' (Set Background) mnemonic enabled -- Dark gray for Black text, Light gray for White text.

Unfortunately in recent years these colors have become paler than they used to be making Light gray (#15) almost pure white which causes a problem when displaying white text with the 'SB' mnemonic.  This is especially problematic if you are running text mode applications and have changed the display to use a black background with white text.

There are two solutions to address this situation:

  • The easiest solution is to simply change the Light Gray to be a bit darker.  This can be done using the following command

    SETDEV (0) SET "Color15" TO "#A0A0A0"

    This sets the color of Light Gray (color index 15) to a slightly darker color (Red, Green and Blue all set at 160/255).  Unfortunately this solution does have its drawbacks as it changes Light Gray everywhere so that PxPlus windows with a light gray backgrounds will no longer match the Windows color scheme.

  • The alternate solution is to define a new color index to use for White text with 'SB'.  PxPlus has 15 standard colors (0-15) but for this you be required to define a new color, such as Color16, then change the Video Palette index table for White with the SB enabled to use this color.  The Video Palette index table consists or a series of six 8 byte color index values as bytes which identify the actual color index to use.  Each 8-byte entry has a 1-byte color index for the colors Black, Red, Green, Yellow, Blue, Magenta, Cyan and White in that order.

    The second 8 byte table defines the colors to use when 'SB' is active.  Since White is color number 8 you need to change byte 16, second table eighth byte, to CHR(16).  For more information on the Video Palette please see this web page

    Here is the code you will need to do this:

    SETDEV (0) SET "Color16" TO "#A0A0A0"
    VIDEO_PALETTE INDEXED READ X$
    X$(16,1) = CHR(16)
    VIDEO_PALETTE INDEXED X$

    If running WindX setting video palette needs to be done on the workstation and not on the server, thus the first solution is often much easier to implement in this environment.
Once the colors have been changed you need for Windows to refresh your page otherwise you will only get the new color on areas on the screen that are being updated.

NOTE: This FAQ is for use with Windows and not normal terminals which will use the escape sequence in the *dev driver programs.

12
FAQs / Why does my menu not appear in iNomads
« on: July 16, 2018, 02:40:19 PM »
With PxPlus 2016 iNomads we transitioned the menu bar from the standard menu bar line that used to appear below the title bar to a triple horizontal bar ('hamburger' icon) Menu icon which will appear on the left side of the title bar.   Clicking this Menu Icon will bring up the panel menu.  This form of menu selection is more common when using Web based applications as it saves screen space for smaller devices.

The use of the Menu Icon is enabled by default, but can be disabled on the "Layout" tab of your iNomads template configuration.

13
Tips and Techniques / Improving Image load times when using iNomads
« on: July 12, 2018, 11:22:24 AM »
When using iNomads and displaying an image the system normally will place a copy of the image in the sessions temporary working directory from which it will be loaded by the generated HTML.  In cases where you have many primarily static images (such as a product image library) copying the image to the temporary directory may add unnecessary overhead.

There is a way to setup iNomads to avoid this processing load by supplying a lookup file for image path names.  Defining this file can be done in the iNomads System Configuration -> Pathnames tabs.  There, on the application server, you can specific the path name to a file which will be used to map the image paths you use in the program to actual URLs which will be used in the generated HTML.

Simply create a file whose primary key is the image path name as is used by the program and in the first field put what you want inserted in the src=xxxxx clause in the generated pages. 

The file is only needed on the server running the application as this replacement is done by the iNomads object.  Using this lookup file will allow you to place your images in a location directly accessible by URL, will eliminate the need to copy the images to the temporary directory, and will improve overall system performance as the workstation browsers will be able to cache the images locally.

Image files whose path names are not the lookup file will use the existing standard process.

Note about Windows
If your application takes advantage of the fact the the Windows file system is case insensitive, the primary key used for the file will also need to be defined as case insensitive.  To do this instead of using an external key for the lookup file, make the primary key as the second field on the file, case insensitive (option "U" or "L") and load the file accordingly.

Back slashes, if used, are converted automatically to forward slashes both for the key field (the path name) and in the URL.

14
FAQs / How can I spawn a process when using WindX and SSH
« on: July 12, 2018, 10:14:05 AM »
Because SSH effectively requires a user to log on to the Unix/Linux system, spawning a session when you are connected using SSH requires some special settings.
This would also be required when using the report viewer *viewer* as it spawns a process.

Basically you have two choices -- both of which are controlled by setting the global variable %PXPLUS_HOST$ prior calling *windx.utl;spawn.

  • You can run *plus/cs/host in the background on your server and set %PXPLUS_HOST$ to your servers IP address - semi-colon, port number (e.g. "192.168.1.123;4093"). This will cause *windx.utl to connect to the CS host, have it spawn a task, and then connect to it.
    Note: The spawned task will run under whatever userid *plus/cs/host was launched under.
     
  • You can set %PXPLUS_HOST$ to an asterisk (*) followed by the same host address, semi-colon, and port. In this case you don't need to run *plus/cs//host as your application itself will spawn the process and connect to it. This will preserve the userid and other environmental settings in the spawned process.
The challenge is to make sure the host address you use is the host address as seen by the workstation.  For example if your host server is connected to the internet using a router and the workstation will be coming in from outside, then the IP address will need to be the external address and not internal address.

Note: In both cases you will need to make sure whatever port you use is accessible from the workstation and not blocked by a firewall.

15
If you are looking to have different words with different hyperlinks in text, here is an easy way to do it:

This can be done using HTML and the *browser control.

Here is a sample non-Nomads program:

Code: [Select]
0010 DEF OBJECT h,@(1,1,40,10)="*browser"
0020 GOSUB Build_html
0030 h'document'write(html$)
0040 INPUT *
0050 END
0060 Build_html:
0070 LET html$="<html><body>"
0080 LET html$+="This is for <a href='https://forum.pvxplus.com' target='_blank'>forum</a>"
0090 LET html$+=" and this is for <a href='http://www.pvxplus.com' target='_blank'>pvxplus</a>"
0100 LET html$+="</body><html>"
0110 RETURN

To do this when using Nomads, create a COM control and select the Chromium browser then in the Post Create logic issue the object'Document'Write(...) method to load the HTML. If desired you can also have the browser control load the HTML from a file and use the Navigate2 method to display the text.

Now if you want to do something similar, but instead of true hyperlinks you want your application to be able to detect what the user clicked on and take some action, you can do something similar.

First off you need to create an object that will intercept the hyperlinks when clicked by the user.  Below is a object you can use:

Code: [Select]
! Menu event processor object
!
  def class "urlclick" create required
!
  property eventName$ ! Save area for the last click event
  local svTrigger
!
  function BEFORENAVIGATE2(*)BEFORE for event "BeforeNavigate2"
  end def
!
 ON_CREATE:
  enter oBrowser,ctlTrigger
  on event from oBrowser process _OBJ
  svTrigger=ctlTrigger
  exit
!
 BEFORE:
  enter *,U,*,*,*,*,C,err=*next
  def object U
  U$=U'val$
!
  eventName$=""
  if lcs(arg(U$,1,":"))="click" \
   then eventName$=arg(U$,2,":"),C=1;
        preinput svTrigger
  drop object U
  return 1

Save the above in urlclick.pvc.  This object will be called whenever a hyperlink is clicked and should that hyperlink contain "click:xxxxx" it will cancel the request (c=1) and save the click information.

Now try the following program:

Code: [Select]
  print 'CS',"Press F4 to Quit"
!
  button 10,@(0,0,1,1)="",opt="W"
  def object h,@(30,1,40,10)="[lcl]*browser"
  clicker=new("[lcl]urlclick",h,10) ! Set trigger
  gosub Build_html
  h'document'write(html$)
  while 1
  input *
  if ctl=4 \
   then break
  if ctl=10 \
   then print "You selected ",clicker'eventName$
  wend
  end
!
 Build_html:
  html$="<html><body style='font-family: calbri, arial;'>"
  html$+="This is for <a href='click:forum'>forum</a>"
  html$+=" and this is for <a href='click:pvxplus'>pvxplus</a>"
  html$+=" and this is for external  <a href='http://www.pvxplus.com' target='_blank'>pvxplus site</a>"
  html$+="</body><html>"
  return

This type of logic can also be used in Nomads by creating a dummy button (hidden if desired) and assigning logic to read and process the eventName$ based on the button being triggered.

Note: If using WindX you need to place the object file (urlclick.pvc) on the workstation.

Pages: [1] 2 3 ... 5