Additional Menu - we want details on what you are using it for today | Uniface 10 Enterprise Edition | Forum

Avatar

Please consider registering
guest

sp_LogInOut Log In sp_Registration Register

Register | Lost password?
Advanced Search

—  Results per page  —








— Match —





— Forum Options —





Minimum search word length is 3 characters - maximum search word length is 84 characters
For a group of consecutive words like 'end of support' use Match phrase

sp_Feed Topic RSS sp_TopicIcon
Additional Menu - we want details on what you are using it for today
06 Dec 2017
5:39 pm
Avatar
Adrian Gosbell
Amsterdam, seat 77a of a Boeing 747
Admin
Forum Posts: 286
Member Since:
01 Oct 2012
sp_UserOfflineSmall Offline

There have been some discussions (buried in other threads) on the fact that Uniface 10 does not have the additional menu. 

I’ve mentioned previously that we would look into this, and we are now starting this. 

We want some details to know what you are using the additional menu for today.

The implementation of menus, and therefore context is different between Uniface 9 and Uniface 10, so the more detail, the better.

Those who gave me some details (and examples) at the UBG in Mannheim, you don’t need to enter (unless you really want to). 

06 Dec 2017
6:00 pm
Avatar
Iain Sharp
Member
Forum Posts: 623
Member Since:
01 Oct 2012
sp_UserOfflineSmall Offline

Okay, 

1. A utility to compile all components using a particular entity/subtype, To respond to changes in the modeled code, somewhat superceded by 3 below
2. A utility to show all fields on a component, filtered to an entity if necessary To allow easy creation of field lists to copy to the defines trigger, which we then use to control field navigation through standard global proc.

Also button to check field for ‘HID’ type and provide a list of these FIELD=F for pasting to the VISIBLE property of the grid widget to hide non-modeled fields used for storing calculations and/or modeled fields which require proc code change, but which the user should not see. A method of ensuring these fields are never displayed is a requirement. 

3. A utility to compile/export required objects A utility which checks the modifcation date of components, messages, and other objects against a cutoff date (like /aft) but also lists for compilation all the affected components (so if the entity has changed, does the same as 1, but also responds to changes in include procs). 

Allows export of the changed objects, and the list of component requiring compilation, to allow update of the testing system without a version control system or requiring copying the entire IDF and recompiling every component. 

4. ‘Clipboard’  A utility written by Uli, which allows storing text in a data file accessible from the IDF, these records are then available in a dynamic menu attached to additional to allow easy insertion of standard text, I believe this is superceded by specific behaviour in V 10. 
5. Variable Sort A utility to allow me to tidy up the variables section of proc, it takes the contents, groups by type (boolean, numeric etc), sorts alphabetically and provides the output to paste back to the original proc. 
6+ Dynamic Dynamic menu items built from the data stored in 4. 

 

We would find it time consuming to work without 2, close to impossible to work without 3 and mildly annoying not to have 4 & 5. 

06 Dec 2017
6:29 pm
Avatar
istiller
Member
Forum Posts: 201
Member Since:
01 Oct 2012
sp_UserOfflineSmall Offline

We are calling a ‘menu’ component which then calls a lot of other components Laugh

Components we are using from the menue are  (e.g.)
* Compile all component for a list of entities
* Search for Text in all components, tables, …
* Compare to objects (as in search) side by side
* Compare objects across different environments (incl. different UnifAce versions)
* Print table descriptions as HTML
* Graphical dependence of table or components
* Create our licences files
* and so on …

To use our ‘normal’ environment out of IDF, before activating the menu, we do a whole ‘init’ of the background processes (instances) and after the activate we do a proper cleanup.
From ‘productive’ (UNIFACE.EXE) environment, the path to IDF is deactivated to be sure that there are no ‘calls’ to IDF&Co

Ingo

06 Dec 2017
11:33 pm
Avatar
Knut
Member
Forum Posts: 179
Member Since:
01 Oct 2012
sp_UserOfflineSmall Offline

I’ve seen the additional being used to have a really tight integration to Team Foundation Server –
incl searching objects for (and suggesting to remove debug statements, adding version
numbers directly into the description / defines trigger and a whole lot more.

07 Dec 2017
8:36 am
Avatar
ulrich-merkel
Frankfurt/Germany
Member
Forum Posts: 1710
Member Since:
01 Oct 2012
sp_UserOfflineSmall Offline

As presented in german usergroup meetings 2006 and 2008,
the ADDITIONAL menu is THE key to improve productivity in the IDF.

Invoking ADDITIONAL in the different IDF editors (UUCONC22 for example), gives me the PK for the active object in the editor.

This PK I can use for any additional task like starting a test, start 2-phase compiles
or pass proccode to an external editor of my choice with much more comfort and support than I have in the IDF.

There is (in contrast to U10) no need to remember and retype the PK of the active object in some other form.

Edited to remove non relevant content. 

07 Dec 2017
10:34 am
Avatar
Daniel_Kurz
Member
Forum Posts: 19
Member Since:
26 Jul 2013
sp_UserOfflineSmall Offline

Adrian, thank you for touching this topic.
We are using the Additional Menu to call all kinds of Utilities that we programmed to enhance the IDF and query/update the model as we like it. Also we call c/c++ routines to get more information about the form we are in, cursor position and so forth. These information are needed for utility programs like post-compiler.

@Admins:
I retract the rest of my statement myself, thank you.

Regards,
Daniel

07 Dec 2017
4:11 pm
Avatar
Stijn Courtheyn
Member
Forum Posts: 35
Member Since:
03 May 2014
sp_UserOfflineSmall Offline
Version management Link with TFS
listing and xml export for component, entities, menus, include procs, global vars, messages, startup shells, templates, device tables)
Search for entity Where is an entity painted / used (form / service / report / dsp)
Global actions To quickly do some stuff
Add operation Create a new operation in the open component based on a template
Add remark template Add remark template to an operation (some base documentation about the operation)
Standard exec for forms Add default params section to and operation / trigger
Standard exec for services Add default params section to and operation / trigger
Extract operation comments Extract all the structured documentation of operation’s in the components
Add operation COMP_INFO Quickly create the operation COMP_INFO
Software engineer / Technical Consult @ Xperthis NV (belgium)
08 Dec 2017
10:45 am
Avatar
Theo Neeskens
Member
Forum Posts: 345
Member Since:
01 Oct 2012
sp_UserOfflineSmall Offline

Hi Iain, Ingo, Stijn,

Can you please add which items of your lists use context, and what context (current component, current entity etc) ?

It would help us in designing something that is fit for purpose.

Regards,

Theo Neeskens

08 Dec 2017
12:19 pm
Avatar
Stijn Courtheyn
Member
Forum Posts: 35
Member Since:
03 May 2014
sp_UserOfflineSmall Offline

Stijn Courtheyn said

Version management Link with TFS
listing and xml export for component, entities, menus, include procs, global vars, messages, startup shells, templates, device tables)
Uses context of current open component
+ .Net dll (com exposed) for link with TFS
Search for entity Where is an entity painted / used (form / service / report / dsp)
It also allows to quickly compile the forms/services/reports/dsp when we do a model change
Global actions To quickly do some stuff
Add operation Create a new operation in the open component based on a template
Uses context of current open component
Add remark template Add remark template to an operation (some base documentation about the operation)
Uses context of current open component
Standard exec for forms Add default params section to and operation / trigger
Uses context of current open component
Standard exec for services Add default params section to and operation / trigger
Uses context of current open component
Extract operation comments Extract all the structured documentation of operation’s in the components
Will store the data in table in the repo database, we added a new entity in the DICT model
On this table Full Text Indexing is actif and an external webpage reads on this table.
Add operation COMP_INFO Quickly create the operation COMP_INFO
Uses context of current open component

  

Software engineer / Technical Consult @ Xperthis NV (belgium)
09 Dec 2017
10:29 am
Avatar
ulrich-merkel
Frankfurt/Germany
Member
Forum Posts: 1710
Member Since:
01 Oct 2012
sp_UserOfflineSmall Offline

Theo Neeskens said

Can you please add which items of your lists use context, and what context (current component, current entity etc) ?

Hi Theo,

a lot of people use this “active object” PK to support individual exports of this object as some kind of backup copy.
So it’s more or less any part of the repository down to the last Include Proc or individual Entity (using the CIF option).

AFAIK, most of the sourcecode management tools (including the UNICON provided by CPWR?) make use of this context as well.

Greetings from Frankfurt (at 0°),
Uli

09 Dec 2017
3:57 pm
Avatar
ulrich-merkel
Frankfurt/Germany
Member
Forum Posts: 1710
Member Since:
01 Oct 2012
sp_UserOfflineSmall Offline

Theo Neeskens said
Hi Iain, Ingo, Stijn,

Can you please add which items of your lists use context, and what context (current component, current entity etc) ?

Even in the early 2000s, commercial editors provide a lot of features like templates, textblocks, etc.

After associating “.eec” with the editor of your choice
the unifacecode from the IDF is transfered to the external editor and brought back
to the component fields holding the active code    by this 9601 implementation :

Trigger <OPTN> of item: 01 from Menu: DITO_X2EDITOR2X

selectcase ($componentname)
case “UUEXTN23” ; Components
call code2editor2code(PROC.DUMMY0)
case “UUCPRC20” ; Global Procs
call code2editor2code(UTEXT.USC_PRC9)
case “UUINCL20” ; Include Procs
call code2editor2code(UTEXT.USC_INC9)
case “UUCONC22” ; Model triggers
call code2editor2code(DUMMYSS.DUMMY1)
case “UUMENU22” ; Menu triggers
call code2editor2code(DUMMYSS.DUMMY1)
endselectcase
entry code2editor2code
params
string p_codefield : INOUT
endparams
variables
string v_exteditorfilename, v_exteditortext_old , v_exteditortext_new
endvariables
v_exteditorfilename = “code2editor2code.eec”
v_exteditortext_old = p_codefield
filedump v_exteditortext_old, v_exteditorfilename
spawn $concat(“#”,v_exteditorfilename)
fileload v_exteditorfilename, v_exteditortext_new
if (v_exteditortext_new = v_exteditortext_old)
message/info “no changes found”
else
askmess/info “accept change in the proc code?”
if ($status = 1)
p_codefield = v_exteditortext_new
endif
endif
end ; code2editor2code

P.S. Up to U8, there was UNIASSIST, an external tool to link code from IDF with an external editor by pushing the mouse wheel.

09 Dec 2017
5:18 pm
Avatar
ulrich-merkel
Frankfurt/Germany
Member
Forum Posts: 1710
Member Since:
01 Oct 2012
sp_UserOfflineSmall Offline

Theo Neeskens said
Hi Iain, Ingo, Stijn,

Can you please add which items of your lists use context, and what context (current component, current entity etc) ?

And finally here is the menu option code for individual fine granular backups which gives you the secure feeling that you can always go back to the last modification without defects (implemented in 6901):

variables
string lvName, lvType, lvPath, lvObject, lvUser
string lvItem, lvOptions, lvPath2, lvName2, lvNameType, lvTimestamp
endvariables

lvType = $componentname[3:4]
lvUser = $user

lvTimestamp = $concat($datim,””)
lvTimestamp = lvtimestamp[3:12]

lvPath = “.\private_backup-%%lvUser%%%\”
lvPath2 = “.\private_backup-%%lvUser%%%\”

if ($fileexists(“.\private_backup”) != 2)
dircreate “.\private_backup”
endif
if ($fileexists(“.\private_backup-%%lvUser%%%”) != 2)
dircreate “.\private_backup-%%lvUser%%%”
endif

if (lvType = “WKSP”) ; call from main screen
message/info “Select an Editor to export this item”
return(-1)
endif

selectcase lvType
case “EXTN” ; Components
lvName = “cpt-%%ULABEL.UFORM%%%.xml”
lvNameType = “cpt”
lvName2 = ULABEL.UFORM
lvObject = “component”
lvItem = ULABEL.UFORM
case “CONC” ; Business Object Models
lvName = “mod-%%U_VLAB.UCSCH%%%.xml”
lvNameType = “mod”
lvName2 = U_VLAB.UCSCH
lvObject = “model”
lvItem = U_VLAB.UCSCH
case “APPL” ; Startup Shells
lvName = “aps-%%ULABEL.UAPPL%%%.xml”
lvNameType = “aps”
lvName2 = ULABEL.UAPPL
lvObject = “application”
lvItem = ULABEL.UAPPL
case “EINT” ; Entity Templates
lvName = “ten-%%U_MLAB.UGGIF%%%.xml”
lvNameType = “ten”
lvName2 = U_MLAB.UGGIF
lvObject = “entity·;interface”
lvItem = U_MLAB.UGGIF
case “INTT” ; Field Interface Templates
lvName = “tfi-%%U_MLAB.UGFIF%%%.xml”
lvNameType = “tfi”
lvName2 = U_MLAB.UGFIF
lvObject = “field·;interface”
lvItem = U_MLAB.UGFIF
case “SYNT” ; Field Syntax Templates
lvName = “tfs-%%U_MLAB.UGFSYN%%%.xml”
lvNameType = “tfs”
lvName2 = U_MLAB.UGFSYN
lvObject = “field·;syntax”
lvItem = U_MLAB.UGFSYN
case “LAYT” ; Field Layout Templates
lvName = “tfl-%%U_MLAB.UGFLAY%%%.xml”
lvNameType = “tfi”
lvName2 = U_MLAB.UGFLAY
lvObject = “field·;layout”
lvItem = U_MLAB.UGFLAY
case “FLDT” ; Field Templates
lvName = “tfx-%%TEMPLATENAME.UTPLFLD%%%.xml”
lvNameType = “tfx”
lvName2 = TEMPLATENAME.UTPLFIELD
lvObject = “field·;template”
lvItem = TEMPLATENAME.UTPLFIELD
case “LIBR” ; Libraries
lvName = “lib-%%ULIBRARY.ULIBR%%%.xml”
lvNameType = “lib”
lvName2 = ULIBRARY.ULIBR
lvObject = “library”
lvItem = ULIBRARY.ULIBR
case “CPRC” ; Central Proc
lvName = “prc-%%ULABEL.USC_PRC%%%@%%UVAR.USC_PRC%%%.xml”
lvNameType = “prc”
lvName2 = “%%UVAR.USC_PRC%%%@%%ULABEL.USC_PRC%%%”
lvOptions = “library=%%UVAR.USC_PRC%%%”
lvObject = “library·;proc”
lvItem = ULABEL.USC_PRC
case “INCL” ; Include Proc
lvName = “inc-%%ULABEL.USC_INC%%%@%%UVAR.USC_INC%%%.xml”
lvNameType = “inc”
lvName2 = “%%UVAR.USC_INC%%%@%%ULABEL.USC_INC%%%”
lvOptions = “library=%%UVAR.USC_INC%%%”
lvObject = “library·;include”
lvItem = ULABEL.USC_INC
case “DEVC” ; Device Tables
lvName = “dev-%%ULABEL.USC_DEV%%%@%%UVAR.USC_DEV%%%.xml”
lvNameType = “dev”
lvName2 = “%%UVAR.USC_DEV%%%@%%ULABEL.USC_DEV%%%”
lvOptions = “library=%%UVAR.USC_DEV%%%”
lvObject = “library·;device_table”
lvItem = ULABEL.USC_DEV
case “TRAN” ; Keyboard Tables
lvName = “trn-%%ULABEL.USC_TRN%%%@%%UVAR.USC_TRN%%%.xml”
lvNameType = “trn”
lvName2 = “%%UVAR.USC_TRN%%%@%%ULABEL.USC_TRN%%%”
lvOptions = “library=%%UVAR.USC_TRN%%%”
lvObject = “library·;translation_table”
lvItem = ULABEL.USC_TRN
case “PANL” ; Panels
lvName = “pan-%%ULABEL%%%@%%UVAR%%%.xml”
lvNameType = “pan”
lvName2 = “%%UVAR%%%@%%ULABEL%%%”
lvOptions = “library=%%UVAR%%%”
lvObject = “library·;panel”
lvItem = ULABEL
case “MESG” ; Messages
lvName = “msg-%%ULABEL.USC_MSG%%%@%%UVAR.USC_MSG%%%@%%ULAN.USC_MSG%%%.xml”
lvNameType = “msg”
lvName2 = “%%UVAR.USC_MSG%%%@%%ULABEL.USC_MSG%%%@%%ULAN.USC_MSG%%%”
lvOptions = “library=%%UVAR.USC_MSG%%%·;language=%%ULAN.USC_MSG%%%”
lvObject = “library·;message”
lvItem = ULABEL.USC_MSG
case “TEXT” ; Text – not sure how this differs from Messages
lvName = “txt-%%ULABEL%%%@%%UVAR%%@%%ULAN%%%.xml”
lvNameType = “txt”
lvName2 = “%%UVAR.USC_MSG%%%@%%ULABEL.USC_MSG%%%@%%ULAN.USC_MSG%%%”
lvOptions = “library=%%UVAR%%%·;language=%%ULAN%%%”
lvObject = “library·;message”
lvItem = ULABEL
case “HELP” ; Text – not sure how this differs from Messages
lvName = “hlp-%%ULABEL.USC_HLP%%%@%%UVAR.USC_HLP%%%@%%ULAN.USC_HLP%%%.xml”
lvNameType = “hlp”
lvName2 = “%%UVAR.USC_HLP%%%@%%ULABEL.USC_HLP%%%@%%ULAN.USC_HLP%%%”
lvOptions = “library=%%UVAR.USC_HLP%%%·;language=%%ULAN.USC_HLP%%%”
lvObject = “library·;message”
lvItem = ULABEL.USC_HLP
case “GLYP” ; Glyphs
lvName = “gly-%%UCLABEL.UGLYPH%%%@%%UCVAR.UGLYPH%%%@%%UCTYPE.UGLYPH%%%.xml”
lvNameType = “gly”
lvName2 = “%%UCVAR.UGLYPH%%%@%%UCLABEL.UGLYPH%%%@%%UCTYPE.UGLYPH%%%”
lvOptions = “library=%%UCVAR.UGLYPH%%%”
lvObject = “library·;glyph”
lvItem = UCLABEL.UGLYPH
case “MENU” ; Menus
lvName = “men-%%UMENU.USMENU%%%@%%UVAR.USMENU%%%@%%ULAN.USMENU%%%.xml”
lvNameType = “men”
lvName2 = “%%UVAR.USMENU%%%@%%UMENU.USMENU%%%@%%ULAN.USMENU%%%”
lvOptions = “library=%%UVAR.USMENU%%%·;language=%%ULAN.USMENU%%%”
lvObject = “library·;menu”
lvItem = UMENU.USMENU
case “CREG” ; Variables
lvName = “gva-%%U_NAME.UGREGS%%%@%%U_FORMLIB.UGREGS%%%.xml”
lvNameType = “gva”
lvName2 = “%%U_FORMLIB.UGREGS%%%@%%U_NAME.UGREGS%%%”
lvOptions = “library=%%U_FORMLIB.UGREGS%%%”
lvObject = “library·;variables”
lvItem = U_NAME.UGREGS
case “GCNT” ; Constants
lvName = “gco-%%ULABEL.UCNST%%%@%%UVAR.UCNST%%%.xml”
lvNameType = “gco”
lvName2 = “%%UVAR.UCNST%%%@%%ULABEL.UCNST%%%”
lvOptions = “library=%%UVAR.UCNST%%%”
lvObject = “library·;constants”
lvItem = ULABEL.UCNST
case “GFMT” ; Format
lvName = “fmt-%%ULABEL.UFORMAT%%%@%%UVAR.UFORMAT%%%@%%ULAN.UFORMAT%%%.xml”
lvNameType = “fmt”
lvName2 = “%%UVAR.UFORMAT%%%@%%ULABEL.UFORMAT%%%@%%ULAN.UFORMAT%%%”
lvOptions = “library=%%UVAR.UFORMAT%%%·;language=%%ULAN.UFORMAT%%%”
lvObject = “library·;format”
lvItem = ULABEL.UFORMAT
endselectcase

if (lvName != “”)
lvName = “%%lvPath2%%%%%lvName2%%%.%%lvNameType%%%.%%lvTimestamp%%%”
$1 = $ude(“export”, lvObject, lvItem, “xml:%%lvName%%%”,lvOptions)
message “%%lvObject%%%: %%lvItem%%% exported to %%lvName%%%”
endif

11 Dec 2017
9:54 am
Avatar
gianni
Member
Forum Posts: 264
Member Since:
01 Oct 2012
sp_UserOfflineSmall Offline

Hi,

Some ADDITIONALS are contextual to the current edited object while others generally work on the UDE repository.

Few examples:
DOCUMENTATION: estracting values from the repository to generate documentation based on
internal standard & guidelines or specs defined from customer:
– in many cases texts extracted are coming from a properly structured COMMENT field in each repo entity
– in other cases reports has just a specific format to accomplish a specific request from customer

DEVELOPMENT EXTENSIONS: they can try to manage:
– UDE complexity (signatures, large repositories)
– UDE time consuming functionality (compilation / export / SQL script generation)
– UDE missing in action (glyph browsing)

INTEGRATION: integration with external or customized tools:
– pre-development (analysis, project creation)
– while developing (javascript or CSS linting/validation, version control)
– post-development (test phases support, deployment)

Hope it helps.

Gianni

11 Dec 2017
10:18 am
Avatar
luis.vila
Spain
Member
Forum Posts: 30
Member Since:
01 Oct 2012
sp_UserOfflineSmall Offline

Hi all

My case is similar

Version Control Just the github’s uniface-version-control
Webservice dashboard  A form showing stats about use of webservices during the last hour and showing log entries.
Diagrams To get model diagrams and components interaction graphs.

All of them are, let’s say, global.

I know someone was working in beautifying javascript and applying Lint or similar (within the current trigger at the current component). I think a simple way to add this kind of “code” tools could be very interesting. From time to time I would like to have a way to collect some code metric to compare the before and the after (it is easy to imagine the situation: me in front of an entry with hundreds of lines and dozens of loops). I know it is a bigger issue, related with this subject but not only.

 

Regards

Forum Timezone: Europe/Amsterdam

Most Users Ever Online: 131

Currently Online: Amarildo Ribeiro, Henk van der Veer
8 Guest(s)

Currently Browsing this Page: Henk van der Veer
1 Guest(s)

Top Posters:

ulrich-merkel: 1710

Iain Sharp: 623

Theo Neeskens: 345

gianni: 264

rogerw: 232

istiller: 201

lalitpct: 197

Knut: 179

-GHAN-: 171

Arjen van Vliet: 170

Member Stats:

Guest Posters: 3

Members: 7038

Moderators: 0

Admins: 8

Forum Stats:

Groups: 1

Forums: 62

Topics: 2058

Posts: 8862

Newest Members:

Arabellaquife, ArthurEffit, RubenKip, MarinaGOVunse, Olpbtsj, Richardglums, Hellbladequife, RobertCab, Kcrdhlq, Kennethsherm

Administrators: admin: 23, Adrian Gosbell: 286, diseli: 836, Bob Maier: 3, Nico Peereboom: 65, Michael Rabone: 4, richiet: 406, JanCees: 28