Using MapBasic to modify your user interface

1,812 views
1,539 views

Published on

This is the presentation I used at a sessions at the Insights Conference in June 2012

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,812
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
86
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Using MapBasic to modify your user interface

  1. 1. Peter H. Møller Senior Systems Engineer Pitney Bowes Software
  2. 2. Using MapBasic to modify your user interface Peter Horsbøll Møller Pitney Bowes Software 2
  3. 3. What is MapBasic? • MapBasic is a scripting language that makes it easy to automate MapInfo Professional • MapBasic is also a freely available compiler (and editor) to compile MapBasic source code into MapBasic applications (MBX) • MapBasic is also the text that you see when you open a workspace in a text editor • MapBasic is all over within MapInfo Professional! 3
  4. 4. What is C#? • C# is a Windows programming language developed by Microsoft. • C# does require a .NET Framework to be able to run • Since MapInfo Professional v9.5 you can call/access methods within C# (and other .NET language) assemblies 4
  5. 5. What is the user interface? • The user interface is what you use to make MapInfo Professional do what you want it to do • The user interface is – – – – the toolbars and the buttons the menus and the menu items the Layer Control and the Table List windows the different dialogs that pops up within MapInfo Professional 5
  6. 6. Using MapBasic to modify your user interface Rearranging and creating shortcut keys 1 Modifying the MapInfo menu file 2 Adding shortcut keys using a MapBasic application 3 Building your own dialogs 4 Using .NET languages to build good looking user interfaces 6
  7. 7. What is the MapInfo menu file? • The menu file - mapinfow.mnu is used by MapInfo Professional to build the menus and toolbars • It contains a number of MapBasic statements for doing this • The menu file is plain ascii and can be edited in a text editor, like NotePad 7
  8. 8. Create Menu statements Let’s look at the content • Defining a new menu • Defining a new menu item • Ending a menu defintion (no comma) • Defining a sub menu in a menu • Defining a separator 8
  9. 9. Create ButtonPad statements Let’s look at the content • Defining a new buttonpad/toolbar • Defining a new button (push) • Defining a new button (toggle) • Defining a new button (tool) • Setting initial state and width • Defining a separator 9
  10. 10. Some notes • Make a copy of your mapinfow.mnu before you start modifying it! • You mapinfow.mnu is normally found in the directory where you installed MapInfo Professional. I can however be read from other places. Use this statement in the MapBasic window to locate the correct file, see path in the message window afterwards: – Print LocateFile$(7) • Do remember the menu file i version specific, so you will need to modify the file for each new version of MapInfo Professional 10
  11. 11. Modifying the MapInfo menu file
  12. 12. Demo 12
  13. 13. Using MapBasic to modify your user interface Static shortcut keys in an application 1 Modifying the MapInfo menu file 2 Adding shortcut keys using a MapBasic application 3 Building your own dialogs 4 Using .NET languages to build good looking user interfaces 13
  14. 14. What is a shortcut key? • A shortcut key makes it possible to access a feature thru a key combination on your keyboard • Only menu items can have shortcut keys – buttons can not ... • ... but you can create menu items that ”call” the same handler as the button 14
  15. 15. How do you define a shortcut key? • Create Menu statement: Create Menu newmenuname [ ID menu_id ] As menuitem [ ID menu_item_id ] [ HelpMsg help ] { Calling handler | As menuname } [ , menuitem ... ] • You specify the shortcut key as part of the menu item title: 15
  16. 16. Examples • ”/W^N” is the shortcut for Ctrl + N • ”tCtrl+N” adds the text ”Ctrl+N” at the right side of the menu • That is not necessay after v10 – just create the shortcut and the matching text will appear by default 16
  17. 17. Special keys • It’s easy to assign ”normal” keys like a, b and z to menu items using their character. • But you can also use special key like F1, F2 and Home by referring to their number • Here is list of virtual key codes: http://www.kbdedit.com/manual/low_level_vk_list.html • For example Home has the numeric value 0x24 (hex). You need to convert this to a decimal number. Use for instance: http://www.statman.info/conversions/hexadecimal.html • Now you can assign the value to a menu item like this: “Zoom entire layer.../W#%36" HelpMsg "Display an individual or all map layer(s)." calling 807 17
  18. 18. Adding shortcut keys using a MapBasic application
  19. 19. Demo • Defined in the Menu.def 19
  20. 20. Using MapBasic to modify your user interface Custom made dialogs to make things easier 1 Modifying the MapInfo menu file 2 Adding shortcut keys using a MapBasic application 3 Building your own dialogs 4 Using .NET languages to build good looking user interfaces 20
  21. 21. Custom dialogs • With MapBasic you can build applications containing custom dialogs designed for your specific need • These dialogs can be designed to access data, analyse data, update attribute information and a number of other use cases • MapBasic dialogs are modal (like the old Layer Control prior to MapInfo Pro 10.0). They can’t be floating (like the new Layer Control added in MapInfo Pro 10.0) 21
  22. 22. Some examples 22
  23. 23. Control types StaticText PopupMenu StaticText StaticText RadioGroup ListBox MultiListBox GroupBox PenPicker BrushPicker SymbolPicker FontPicker CheckBox StaticText EditText OKButton CancelButton 23
  24. 24. Let’s look at some MapBasic code 24
  25. 25. Handlers • A handler is a subprocedure, called from the dialog • A handler on the dialog itself is called when the dialog is created and is being loaded • You can use it to insert default values • A handler on a control is called when the user ”uses” the control • It can be used to react to the actions/choices of the user, like updating other control 25
  26. 26. Handler on the dialog • Creates a list of map windows • Refreshes the control with the • list of windows Activates the handler for this control 26
  27. 27. Handler on a control • Reads which windows is selected in the control • Creates a list of layers • Refreshes the control with the list of layers 27
  28. 28. Building your own dialogs
  29. 29. Using MapBasic to modify your user interface Fancy looking windows, not dialogs 1 Modifying the MapInfo menu file 2 Adding shortcut keys using a MapBasic application 3 Building your own dialogs 4 Using .NET languages to build good looking user interfaces 29
  30. 30. Using .NET • From MapInfo Professional 9.5 you have been able to call .NET methods from your MapBasic applications • This has given a wide range of new possibilities when building applications to run inside MapInfo Professional 30
  31. 31. How is this done? • Create a class with one or more static method • Compile it into an assembly (.dll) • Make the assembly accessible for your MapBasic app (copy it to the same folder as the app) • Run your app • Use the Declare Method statement to declare your .NET method to MapBasic • Call/use the method in your MapBasic app • Compile (and link) your application 31
  32. 32. Create a new project in Visual Studio • Choose the type ”Class Library” • Name your project, here ”MapInfoDialog”
  33. 33. Add a static method • Here we have added the method ShowDialog
  34. 34. Compile your .NET assembly • Compiler your project thru Build > Build MapInfoDialog – Or hit Shift + F6 • Note if there were any compile errors
  35. 35. Make the assembly accessible • Copy the assembly to the folder where your compiled MapBasic application will be located: – MapInfoDialog.dll: The assembly – MapInfoDialog.pdb: Debug information
  36. 36. Build your MapBasic application • Declare Method – Class: including Namesspaces – Lib: without path but with ”.dll” • Declare Sub Main • Call ShowDialog(”some title”, ”some text to show in dialog”)
  37. 37. Compile and run your MapBasic application • Compile – Check for errors • Run the application in MapInfo Pro
  38. 38. Some examples 38
  39. 39. Getting started with MapBasic? Use the MapBasic window Look at your workspaces  Open the MapBasic window.  Look at the statements MapInfo Pro write here when you do certain tasks  Try to open a workspace in a text editor  Look at the statements here Find tools with source code  Have a look at the tools site, like MapInfoTools.com. Some tools do come with source code.  Have a look at these and try to modify them to fit your needs Sign up for MapInfo-L  Signup for MapInfo-L on Google Groups: groups.google.com/group/mapinfo-l  Follow and learn from the conversation here and start asking questions 39
  40. 40. Thank You Peter Horsbøll Møller peter.moller@pb.com

×