| How can I bring up the VAR-LINK dialog and get the name of the selected file?

Previous | Input: Keyboard and Link | Next

Q: | How do I bring up the VAR-LINK dialog from C code and then get the name of the file that was selected?

A:

This is an advanced question. As the VAR-LINK dialog is an event-driven applet, you must use event-driven functions defined in the events.h header file. Bringing up the VAR-LINK dialog is quite easy:

    EVENT ev;
    ev.Type = CM_KEYPRESS;
    ev.extra.Key.Code = KEY_VARLNK;
    EV_defaultHandler (&ev);

but getting the name of the file that was selected is a bit harder. After executing the VAR-LINK dialog, the VAR-LINK applet will send the name of the selected file to the current application via the CM_HSTRING message. This message may be captured by a user event handler. Here is the demonstration program (called "Get File Name"):

    // Open VAR-LINK dialog and let user select something

    #define USE_TI89              // Compile for TI-89
    #define USE_TI92PLUS          // Compile for TI-92 Plus
    #define USE_V200              // Compile for V200

    #define MIN_AMS 100           // Compile for AMS 1.00 or higher
    #define SAVE_SCREEN           // Save/Restore LCD Contents

    #include <tigcclib.h>         // Include All Header Files

    char VarBuffer[20] = "";

    CALLBACK void VarLinkHandler (EVENT *ev)
    {
      if (ev->Type == CM_HSTRING)
        {
          strncpy (VarBuffer, HeapDeref (ev->extra.hPasteText), 19);
          VarBuffer [19] = 0;
        }
      EV_defaultHandler (ev);
    }

    void VarLinkDialog (void)
    {
      EVENT ev;
      EVENT_HANDLER OldHandler = EV_captureEvents (VarLinkHandler);
      memset (&ev, sizeof (ev), 0);
      ev.Type = CM_KEYPRESS;
      ev.extra.Key.Code = KEY_VARLNK;
      EV_defaultHandler (&ev);
      EV_captureEvents (OldHandler);
    }

    void _main(void)
    {
      VarLinkDialog ();
      printf_xy (0, 50, "You picked: %s", VarBuffer);
      ngetchx ();
    }

Read more about the events.h header file: incredible miracles may be produced using event-passing techniques!