Highlighted

FM-14: strange behaviour of SetUpMenu function

Advocate ,
May 13, 2017

Copy link to clipboard

Copied

Friends and gurus: I encounter a very strange situation!

The following script works correctly. The functions are called by a button.

#target framemaker

var gasETBViewSettings = [];                      // save the user settings
var gsETBMsgNoDoc   = { en: "No document active!",
                        de: "Kein dokument aktiv!"
                      };
// alert ("ETBToggleViewsA really entered");
SetUpMenu();

function SetUpMenu() { // ==== Define the menu - even if not used =================================
var sLabelEditing, sLabelPrinting, menuLocation, cmdDoc1, cmdDoc2;
  menuLocation = app.GetNamedMenu("ETBdummy");    // Required, even if not used
  cmdDoc1 = DefineCommand (1, "EditingDisplay",  "Document Editing Display [ETB]",  "\!qqe");
  cmdDoc2 = DefineCommand (2, "PrintingDisplay", "Document Printing Display [ETB]", "\!qqp");
  UpdateMenus();
} // --- end SetUpMenu

function Command(cmd) { // ==== Respond to menu/TB command ==================================
alert ("ETBToggleViewsA command " + cmd + " entered");
    switch(cmd)  {
        case 1:
      SetEditingDisplay();
      break;
        case 2:
      SetPrintingDisplay();
      break;
    }
} // --- end Command

function SetEditingDisplay () {

  alert ("SetEditingDisplay entered"); // of course there is more in here

}

function SetPrintingDisplay () {

  alert ("SetPrintingDisplay entered"); // of course there is more in here

}

But if I insert the following after line 11, then the script does not work anymore (it is loaded, but the Command function does not issue the alert etc.).

  sLabelEditing  = { en: "Document Editing Display [ETB]",
                     de: "Ansicht für Dokument Bearbeitung [ETB]" };
  sLabelPrinting = { en: "Document Printing Display [ETB]",
                     de: "Ansicht für Dokument Drucken [ETB]" };

It doesn't work either if I place the following after line 06:

var gsLabelEditing  = { en: "Document Editing Display [ETB]",
                     de: "Ansicht für Dokument Bearbeitung [ETB]" };
var gsLabelPrinting = { en: "Document Printing Display [ETB]",
                     de: "Ansicht für Dokument Drucken [ETB]" };

I have similar constructs in various scripts with no problems so far.

What is going on here?

Guess What?

After carefully checking differences between a working stub and the full script I discovered the difference:

The script must be coded in UTF-8 (it was Windows code page 1252).

Wouldn't be a message about this possible?

Klaus

TOPICS
Scripting

Views

177

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more

FM-14: strange behaviour of SetUpMenu function

Advocate ,
May 13, 2017

Copy link to clipboard

Copied

Friends and gurus: I encounter a very strange situation!

The following script works correctly. The functions are called by a button.

#target framemaker

var gasETBViewSettings = [];                      // save the user settings
var gsETBMsgNoDoc   = { en: "No document active!",
                        de: "Kein dokument aktiv!"
                      };
// alert ("ETBToggleViewsA really entered");
SetUpMenu();

function SetUpMenu() { // ==== Define the menu - even if not used =================================
var sLabelEditing, sLabelPrinting, menuLocation, cmdDoc1, cmdDoc2;
  menuLocation = app.GetNamedMenu("ETBdummy");    // Required, even if not used
  cmdDoc1 = DefineCommand (1, "EditingDisplay",  "Document Editing Display [ETB]",  "\!qqe");
  cmdDoc2 = DefineCommand (2, "PrintingDisplay", "Document Printing Display [ETB]", "\!qqp");
  UpdateMenus();
} // --- end SetUpMenu

function Command(cmd) { // ==== Respond to menu/TB command ==================================
alert ("ETBToggleViewsA command " + cmd + " entered");
    switch(cmd)  {
        case 1:
      SetEditingDisplay();
      break;
        case 2:
      SetPrintingDisplay();
      break;
    }
} // --- end Command

function SetEditingDisplay () {

  alert ("SetEditingDisplay entered"); // of course there is more in here

}

function SetPrintingDisplay () {

  alert ("SetPrintingDisplay entered"); // of course there is more in here

}

But if I insert the following after line 11, then the script does not work anymore (it is loaded, but the Command function does not issue the alert etc.).

  sLabelEditing  = { en: "Document Editing Display [ETB]",
                     de: "Ansicht für Dokument Bearbeitung [ETB]" };
  sLabelPrinting = { en: "Document Printing Display [ETB]",
                     de: "Ansicht für Dokument Drucken [ETB]" };

It doesn't work either if I place the following after line 06:

var gsLabelEditing  = { en: "Document Editing Display [ETB]",
                     de: "Ansicht für Dokument Bearbeitung [ETB]" };
var gsLabelPrinting = { en: "Document Printing Display [ETB]",
                     de: "Ansicht für Dokument Drucken [ETB]" };

I have similar constructs in various scripts with no problems so far.

What is going on here?

Guess What?

After carefully checking differences between a working stub and the full script I discovered the difference:

The script must be coded in UTF-8 (it was Windows code page 1252).

Wouldn't be a message about this possible?

Klaus

TOPICS
Scripting

Views

178

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
May 13, 2017 0
Advocate ,
Jun 20, 2017

Copy link to clipboard

Copied

Since I had a problem with Windows update (see https://forums.adobe.com/thread/2346713) even this simple script does not work anymore - neither in FM-14.0.0.361, nor in update 1 nor in update 2.

The menu set up function is run on start of FM, but the command function is not invoked - neither by shorcut nor by a button which specifies the command.

This is a very stripped down version of the real script, which can be found on my website. It works if invoked in test mode - without menu set up.

The absolute wierd thing is that all this has worked before the roblem with the Windows update (both build 361 and 406 - 415 was'n there at that time).

All the other scripts I now have in the Enhanced Tool Bar work as intended. They are in the Startup folder and are invoked by button (Insert Symbol also by menu item):

ETBinsertSymbol_en.jsx     has Notify function to bypass initial start, sets up menu items, used by button

ETBSaveAsOld.jsx           with similar set up

ETBtest.jsx            just a stub with similar setup

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jun 20, 2017 0
Advocate ,
Jun 22, 2017

Copy link to clipboard

Copied

Guess What?

After carefully checking differences between a working stub and the full script I discovered the difference:

The script must be coded in UTF-8 (it was Windows code page 1252).

Wouldn't be a message about this possible?

Klaus

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jun 22, 2017 0