/
Calculator to Web using Wisej

Calculator to Web using Wisej

My experience with Wisej is limited to only a few hours of playing around, but I find it to be an an incredibly sophisticated development and runtime framework.  I would love to say more, but I certainly cannot do it justice here.  Visit Wisej on the web to learn more. 

I recently automated a simple VB6 desktop to web migration using the Wisej framework. 

See the screen shot below

  • Left: Calculator Form in VB6 designer
  • Middle: Calculator Form in Wisej designer in Visual Studio
  • Right: Calculator Form running in Chrome as a web application

The web version works much like the original -- even including the keyboard support.

For this sample there were only a few differences from simply letting gmStudio do a standard VB6 to WinForms upgrade:

  • Using a Wisej web application csproj file rather than the one generated for a WinForms app
  • Using a Wisej startup code file rather than the one generated for Winforms
  • Deploying a few supporting files to the .NET project folder (default.html, default.json, web.configs) 
  • A number of tweaks to the code to address places where Wisej conventions differ from WinForms

For this first test, I simply used the gmPL post-editting commands make the replacements.  (see “Quick and Dirty” rules below)

In an actual upgrade solution, I would create a generalized Wisej upgrade configuration that could be used with many different VBPs and code files and also develop a set of rules files to deal with third-party controls.  In a project context, we would further customize the rules so that various customer-specific requirements are automated such as other Wisej/.NET standards.

“Quick and Dirty” upgrade rules to rewrite from VB6 (desktop) for Wisej/C# (web)

   <Author>
   <Fix host="Calculator" name="PostEdit">
   <Replace status="active" name="remove using WinForms">
   <OldBlock><![CDATA[using System.Windows.Forms;]]></OldBlock>
   <NewBlock><![CDATA[using Wisej.Web;]]></NewBlock>
   </Replace>
   <Replace name="change namespace Winforms to Wisej.Web" >
   <OldBlock><![CDATA[System.Windows.Forms.]]></OldBlock>
   <NewBlock><![CDATA[Wisej.Web.]]></NewBlock>
   </Replace>
   <Replace status="active" name="remove FlatStyle">
   <OldBlock><![CDATA[FlatStyle]]></OldBlock>
   </Replace>
   <Replace status="active" name="remove using System.Data">
   <OldBlock><![CDATA[using System.Data;]]></OldBlock>
   </Replace>
   <Replace status="active" name="remove using System.CompilerServices">
   <OldBlock><![CDATA[using Microsoft.VisualBasic.CompilerServices;]]></OldBlock>
   </Replace>
   <Replace name="rework old MenuStrip initialization boilerplate, not needed">
   <OldBlock><![CDATA[
            this.MainMenuStrip = this.mainMenu1;
            this.mainMenu1.AutoSize = false;
            this.MainMenuStrip.Height = 20;
            this.Controls.Add(this.mainMenu1);
   ]]></OldBlock>
   <NewBlock><![CDATA[
            this.Menu = this.mainMenu1;
   ]]></NewBlock>
   </Replace>
   <Replace status="active" name="rename MenuStrip class">
   <OldBlock><![CDATA[MenuStrip]]></OldBlock>
   <NewBlock><![CDATA[MainMenu]]></NewBlock>
   </Replace>
   <Replace status="active" name="rename ToolStripMenuItem class">
   <OldBlock><![CDATA[ToolStripMenuItem]]></OldBlock>
   <NewBlock><![CDATA[MenuItem]]></NewBlock>
   </Replace>
   <Replace name="Remove hideSelection setting (default?)">
   <OldBlock><![CDATA[.HideSelection = ]]></OldBlock>
   </Replace>
   <Replace name="Rename BorderStyle enum entry">
   <OldBlock><![CDATA[.BorderStyle.Fixed3D;]]></OldBlock>
   <NewBlock><![CDATA[.BorderStyle.Solid;]]></NewBlock>
   </Replace>
   <Replace name="Rename BorderStyle enum entry">
   <OldBlock><![CDATA[.BorderStyle.FixedSingle;]]></OldBlock>
   <NewBlock><![CDATA[.BorderStyle.Solid;]]></NewBlock>
   </Replace>
   <Replace status="active" name="rework ShortcutKeys">
   <OldBlock><![CDATA[ShortcutKeys = Keys.Control | Keys.]]></OldBlock>
   <NewBlock><![CDATA[Shortcut = Shortcut.Ctrl]]></NewBlock>
   </Replace>
   <Replace name="Change menu.Items property name">
   <OldBlock><![CDATA[this.mainMenu1.Items.AddRange(new Wisej.Web.ToolStripItem]]></OldBlock>
   <NewBlock><![CDATA[this.mainMenu1.MenuItems.AddRange(new Wisej.Web.MenuItem]]></NewBlock>
   </Replace>
   <Replace name="change menu.DropDownItems name">
   <OldBlock><![CDATA[this.mnuEdit.DropDownItems.AddRange(new Wisej.Web.ToolStripItem[] {]]></OldBlock>
   <NewBlock><![CDATA[this.mnuEdit.MenuItems.AddRange(new Wisej.Web.MenuItem[] {]]></NewBlock>
   </Replace>
   <Replace name="rename FormBorderStyle enum entry">
   <OldBlock><![CDATA[.FormBorderStyle.FixedSingle;]]></OldBlock>
   <NewBlock><![CDATA[.FormBorderStyle.Fixed;]]></NewBlock>
   </Replace>

   <ReplaceFile name="Override csproj file using Wisej.csproj"
       lang="csproj"    
       source="Calculator.csproj"
       target="..\usr\Wisej\Wisej.csproj"
   />
   <ReplaceFile name="Override startup file using program.cs"
       lang="csproj"    
       source="Calculator_StartUp.cs"
       target="..\usr\Wisej\program.cs"
   />
   </Fix>   
   </Author>

Related content

Samples
More like this
Introduction
More like this
Evaluating gmStudio
Evaluating gmStudio
More like this
Matrix Design Group Testimonial
Matrix Design Group Testimonial
More like this
Custom COM Replacement
Custom COM Replacement
More like this
HealthMEDX -- Long-term Care and Home Health Solutions (VB6/ASP)
HealthMEDX -- Long-term Care and Home Health Solutions (VB6/ASP)
More like this