using mapbasic to modify your user interface

Post on 15-Jan-2015

638 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Peter H. MøllerSenior Systems Engineer

Pitney Bowes Software

Using MapBasic to modify your user interface

2

Peter Horsbøll MøllerPitney Bowes Software

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

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

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

Modifying the MapInfo menu file

Adding shortcut keys using a MapBasic application

Building your own dialogs

Using .NET languages to build good looking user interfaces

1

2

3

4

Rearranging and creating shortcut keys

6

Using MapBasic to modify your user interface

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

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

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

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

Modifying the MapInfo menu file

Demo

12

Modifying the MapInfo menu file

Adding shortcut keys using a MapBasic application

Building your own dialogs

Using .NET languages to build good looking user interfaces

1

2

3

4

Static shortcut keys in an application

13

Using MapBasic to modify your user interface

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

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

Examples

16

• ”/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

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

Adding shortcut keys using a MapBasic application

Demo

19

• Defined in the Menu.def

Modifying the MapInfo menu file

Adding shortcut keys using a MapBasic application

Building your own dialogs

Using .NET languages to build good looking user interfaces

1

2

3

4

Custom made dialogs to make things easier

20

Using MapBasic to modify your user interface

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)

Some examples

22

Control types

23

OKButton CancelButton

CheckBox

RadioGroup

PenPicker BrushPicker SymbolPicker FontPicker

EditText

StaticText

StaticText

ListBox MultiListBox

PopupMenuStaticText

GroupBox

StaticText

Let’s look at some MapBasic code

24

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

Handler on the dialog

26

• Creates a list of map windows

• Refreshes the control with the list of windows

• Activates the handler for this control

Handler on a control

27

• Reads which windows is selected in the control

• Creates a list of layers

• Refreshes the control with the list of layers

Building your own dialogs

Modifying the MapInfo menu file

Adding shortcut keys using a MapBasic application

Building your own dialogs

Using .NET languages to build good looking user interfaces

1

2

3

4

Fancy looking windows, not dialogs

29

Using MapBasic to modify your user interface

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

How is this done?

31

• 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

Create a new project in Visual Studio

• Choose the type ”Class Library”• Name your project, here ”MapInfoDialog”

Add a static method

• Here we have added the method ShowDialog

Compile your .NET assembly

• Compiler your project thru Build > Build MapInfoDialog– Or hit Shift + F6

• Note if there were any compile errors

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

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”)

Compile and run your MapBasic application

• Compile– Check for errors

• Run the application in MapInfo Pro

Some examples

38

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

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

Signup for MapInfo-L on Google Groups: groups.google.com/group/mapinfo-l Follow and learn from the conversation here and start asking questions

Use the MapBasic window

Look at your workspaces

Find tools with source code

Sign up for MapInfo-L

39

Getting started with MapBasic?

Thank You

Peter Horsbøll Møllerpeter.moller@pb.com

top related