home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / p2demo21.exe / PEL / DDE.PEL < prev    next >
Text File  |  1995-03-13  |  3KB  |  113 lines

  1. # $Header:   P:\source\wmacros\dde.pev   1.12   13 Mar 1995 08:53:14   WALKER  $
  2. ## $Tabs:4 7$
  3.  
  4. ##############################################################################
  5. #
  6. #       Compuware Corporation
  7. #         31440 Northwestern Highway
  8. #           Farmington Hills, Michigan 48334-2564
  9. #
  10. #   This source code listing contains information that is
  11. #   proprietary to Compuware Corporation and may not be copied
  12. #   duplicated, translated, transmitted, stored, retrieved
  13. #   or in any manner or by any method conveyed or disclosed
  14. #   to a third party or parties without express written
  15. #   permission from Compuware Corporation.
  16. #
  17. #  
  18. ##############################################################################
  19.                      
  20. #### $Workfile:   dde.pel  $: dynamic data exchange
  21.  
  22. # long  create_dde_server(String server, MacroId macid)
  23. # void  delete_dde_server(long serverid)
  24. #
  25. # long  create_dde_topic(String topic)
  26. # void  delete_dde_topic(long topicid)
  27. #
  28. # long  add_dde_item(long topicid, String item)
  29. # long  delete_dde_item(long topicid, String item)
  30. #
  31. # long  add_dde_server_topic(long serverid, long topicid )
  32. # void  remove_dde_server_topic(long serverid, String topic)
  33.  
  34. global DDE_INITIATE  = 1000
  35. global DDE_EXECUTE   = 1001
  36.  
  37. local serverid = 0
  38.  
  39. global function initialize_dde()
  40. {
  41.    local topicid
  42.  
  43.    if ( serverid != 0 )
  44.       return
  45.  
  46.    serverid = create_dde_server("CPE", function_id("dde_callback"))
  47.    if ( serverid ) {
  48.       topicid  = create_dde_topic("CPETOPIC")
  49.       add_dde_item(topicid, "EDITFILE")
  50.       add_dde_item(topicid, "TOTOP")
  51.       add_dde_item(topicid, "EXECUTEPEL")
  52.  
  53.       add_dde_server_topic(serverid, topicid)
  54.    }
  55. }
  56.  
  57. ## process_dde_command_line()
  58. #
  59. #
  60. global function process_dde_command_line(files)
  61. {
  62.    local arr
  63.    local i
  64.  
  65.    split(files, arr, "&")
  66.  
  67.    for ( i in arr )
  68.     {
  69.         if ( arr[i] != "" )
  70.           create_buf_and_win_key( arr[i] )
  71.     }
  72. }
  73.  
  74. global function dde_callback()
  75. {
  76.    local topicid
  77.    local linenumber
  78.    local numerrors
  79.    local funid
  80.  
  81.    if ( dde_callback_action(serverid) == DDE_EXECUTE ) 
  82.    {
  83.       if ( dde_callback_item(serverid) == "EDITFILE" ) 
  84.       {
  85.          if ( mdi_mode != 2 )
  86.             set_editwin_property( EWC_TO_TOP )  # bring editwin to top of window stack
  87.  
  88.          process_dde_command_line( dde_callback_data(serverid) )
  89. #        create_buf_and_win( dde_callback_data(serverid) )
  90.          display_update()
  91.       }
  92.       else if ( dde_callback_item(serverid) == "TOTOP" ) 
  93.       {
  94.          if ( mdi_mode != 2 )
  95.             set_editwin_property( EWC_TO_TOP )  # bring editwin to top of window stack
  96.  
  97.          current_window = current_window
  98.          display_update()
  99.       }
  100.       else if ( dde_callback_item(serverid) == "EXECUTEPEL" ) 
  101.       {
  102.          if ( ( funid = function_id(dde_callback_data(serverid))) == 0 )
  103.             warning("Unable to execute " dde_callback_data(serverid) )
  104.          else
  105.          {
  106.             execute_function( funid )
  107.             update_current_view()
  108.          }
  109.       }
  110.    }
  111. }
  112.  
  113.