Page 1 of 1

Copying & Pasting from an EditorGadget

Posted: Fri Aug 16, 2013 7:20 pm
by PBExplorer12
Hi,

There was a post about this, way back in 2005, on a German forum, but it involved an api workaround.

I'll jump to the Win api if need be, but was wondering if PB has been given native support, specifically for highlighting and COPYING, from an EditorGadget, to elsewhere. Or is there a more direct way, than the 2005 suggestion

(
Procedure Editor_GetSelLength (gadget)
sel.CHARRANGE
SendMessage_ (GadgetID (gadget), $ 0434.0, @ sel)
ProcedureReturn sel \ cpMax - sel \ cpMin
EndProcedure
Procedure.s Editor_GetSelText (gadget)
Text.s = Space (Editor_GetSelLength (Gadget) + 1 )
SendMessage_ (GadgetID (gadget), $ 043E, 0, @ Text.s)
ProcedureReturn Text.s
EndProcedure SetClipboardText (Editor_GetSelText (gadget))
)
?

Re: Copying & Pasting from an EditorGadget

Posted: Fri Aug 16, 2013 9:33 pm
by falsam
Cut, Copy & Paste

Code: Select all

Enumeration
  #Mainform
  
  ;Menu
  #MainMenu
  
  ;Menu Edit
  #SelectAll
  #Cut
  #Copy
  #Paste
  
  #Editor
EndEnumeration

Define.l Event, WEvent,  GEvent

Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget

Procedure Open_MainForm()
  OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", WindowStyle)
  EditorGadget(#Editor, 10, 30, 480, 360, #PB_Editor_WordWrap)
  
    CreateMenu(#MainMenu, WindowID(#Mainform))
  MenuTitle("File")
  
  MenuTitle("Edit")
  MenuItem(#SelectAll, "Select All" + Chr(9)+"Ctrl+A")
  MenuItem(#Cut, "Cut"   + Chr(9) + "Ctrl+X")
  MenuItem(#Copy, "Copy"   + Chr(9) + "Ctrl+C")
  MenuItem(#Paste, "paste" + Chr(9) + "Ctrl+V")
  
EndProcedure

Open_MainForm()

Repeat
  Event  = WaitWindowEvent()
  MEvent = EventMenu()
  GEvent = EventGadget()
    
  Select Event
    Case #PB_Event_Menu
      Select MEvent
        Case #SelectAll
          SendMessage_(GadgetID(#Editor), #EM_SETSEL,0,-1)
          
        Case #Cut
          SendMessage_(GadgetID(#Editor), #WM_CUT, 0, 0)
          
        Case #Copy
          SendMessage_(GadgetID(#Editor), #WM_COPY, 0, 0)
          
        Case #paste
          SendMessage_(GadgetID(#Editor), #WM_PASTE, 0, 0)
          
      EndSelect
      
    Case #PB_Event_Gadget
      Select GEvent
      EndSelect
        
    Case #PB_Event_CloseWindow
      End
      
  EndSelect
ForEver

Re: Copying & Pasting from an EditorGadget

Posted: Fri Aug 16, 2013 10:10 pm
by PBExplorer12
falsam wrote:Cut, Copy & Paste

Code: Select all

Enumeration
  #Mainform
  
  ;Menu
  #MainMenu
  
  ;Menu Edit
  #SelectAll
  #Cut
  #Copy
  #Paste
  
  #Editor
EndEnumeration

Define.l Event, WEvent,  GEvent

Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget

Procedure Open_MainForm()
  OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", WindowStyle)
  EditorGadget(#Editor, 10, 30, 480, 360, #PB_Editor_WordWrap)
  
    CreateMenu(#MainMenu, WindowID(#Mainform))
  MenuTitle("File")
  
  MenuTitle("Edit")
  MenuItem(#SelectAll, "Select All" + Chr(9)+"Ctrl+A")
  MenuItem(#Cut, "Cut"   + Chr(9) + "Ctrl+X")
  MenuItem(#Copy, "Copy"   + Chr(9) + "Ctrl+C")
  MenuItem(#Paste, "paste" + Chr(9) + "Ctrl+V")
  
EndProcedure

Open_MainForm()

Repeat
  Event  = WaitWindowEvent()
  MEvent = EventMenu()
  GEvent = EventGadget()
    
  Select Event
    Case #PB_Event_Menu
      Select MEvent
        Case #SelectAll
          SendMessage_(GadgetID(#Editor), #EM_SETSEL,0,-1)
          
        Case #Cut
          SendMessage_(GadgetID(#Editor), #WM_CUT, 0, 0)
          
        Case #Copy
          SendMessage_(GadgetID(#Editor), #WM_COPY, 0, 0)
          
        Case #paste
          SendMessage_(GadgetID(#Editor), #WM_PASTE, 0, 0)
          
      EndSelect
      
    Case #PB_Event_Gadget
      Select GEvent
      EndSelect
        
    Case #PB_Event_CloseWindow
      End
      
  EndSelect
ForEver
Falsam, thanks. But I think I just wasted your time. I just installed the newest beta 5.2, and it allows one to copy and paste from the editorgadget. Maybe that was there before in 5.11, but I think it wasn't.

Anyway, everything's great now, thanks for the input.