mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			400 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			400 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// The MIT License (MIT)
 | 
						|
 | 
						|
// Copyright (c) 2016 Sébastien Kirche
 | 
						|
 | 
						|
// Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
						|
// of this software and associated documentation files (the "Software"), to deal
 | 
						|
// in the Software without restriction, including without limitation the rights
 | 
						|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
						|
// copies of the Software, and to permit persons to whom the Software is
 | 
						|
// furnished to do so, subject to the following conditions:
 | 
						|
 | 
						|
// The above copyright notice and this permission notice shall be included in all
 | 
						|
// copies or substantial portions of the Software.
 | 
						|
 | 
						|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
						|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
						|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
						|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
						|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
						|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
						|
// SOFTWARE.
 | 
						|
 | 
						|
// Source: https://github.com/sebkirche/libexport/blob/c2459a5399ff87f29344b3b0472b041ebb6f9246/sources/115/w_export.srw
 | 
						|
 | 
						|
HA$PBExportHeader$w_export.srw
 | 
						|
forward
 | 
						|
global type w_export from window
 | 
						|
end type
 | 
						|
type st_2 from statictext within w_export
 | 
						|
end type
 | 
						|
type sle_destdir from singlelineedit within w_export
 | 
						|
end type
 | 
						|
type cb_browse_dest from commandbutton within w_export
 | 
						|
end type
 | 
						|
type cb_export_some from commandbutton within w_export
 | 
						|
end type
 | 
						|
type cb_export_all from commandbutton within w_export
 | 
						|
end type
 | 
						|
type dw_objects from datawindow within w_export
 | 
						|
end type
 | 
						|
type cb_browse from commandbutton within w_export
 | 
						|
end type
 | 
						|
type sle_pbl from singlelineedit within w_export
 | 
						|
end type
 | 
						|
type st_1 from statictext within w_export
 | 
						|
end type
 | 
						|
end forward
 | 
						|
 | 
						|
global type w_export from window
 | 
						|
integer width = 3209
 | 
						|
integer height = 1600
 | 
						|
boolean titlebar = true
 | 
						|
string title = "Export"
 | 
						|
boolean controlmenu = true
 | 
						|
boolean minbox = true
 | 
						|
boolean maxbox = true
 | 
						|
boolean resizable = true
 | 
						|
long backcolor = 67108864
 | 
						|
string icon = "AppIcon!"
 | 
						|
boolean center = true
 | 
						|
st_2 st_2
 | 
						|
sle_destdir sle_destdir
 | 
						|
cb_browse_dest cb_browse_dest
 | 
						|
cb_export_some cb_export_some
 | 
						|
cb_export_all cb_export_all
 | 
						|
dw_objects dw_objects
 | 
						|
cb_browse cb_browse
 | 
						|
sle_pbl sle_pbl
 | 
						|
st_1 st_1
 | 
						|
end type
 | 
						|
global w_export w_export
 | 
						|
 | 
						|
forward prototypes
 | 
						|
public subroutine get_objects (string as_pbl)
 | 
						|
public function boolean export_object (string as_lib, string as_object, string as_type, string as_comment)
 | 
						|
public function string get_object_suffix (string as_type)
 | 
						|
public function libexporttype get_object_libtype (string as_type)
 | 
						|
public subroutine export_object_at_row (long al_row, string as_lib)
 | 
						|
end prototypes
 | 
						|
 | 
						|
public subroutine get_objects (string as_pbl);
 | 
						|
if not fileexists(as_pbl) then return
 | 
						|
 | 
						|
int i, p = 1
 | 
						|
string ls_entries, ls_entry
 | 
						|
ls_entries = LibraryDirectoryEx(as_pbl, DirAll!)
 | 
						|
debug_message('get_objects()', ls_entries)
 | 
						|
 | 
						|
dw_objects.reset()
 | 
						|
dw_objects.importstring(ls_entries)
 | 
						|
 | 
						|
end subroutine
 | 
						|
 | 
						|
public function boolean export_object (string as_lib, string as_object, string as_type, string as_comment);
 | 
						|
LibExportType l_ot
 | 
						|
string ls_syntax, ls_filename, ls_dir
 | 
						|
int li_file
 | 
						|
 | 
						|
ls_dir = sle_destdir.text
 | 
						|
l_ot = get_object_libtype(as_type)
 | 
						|
ls_syntax = libraryexport(as_lib, as_object, l_ot)
 | 
						|
 | 
						|
ls_filename = as_object + '.' + get_object_suffix(as_type)
 | 
						|
li_file = FileOpen(ls_dir + '\' + ls_filename, streammode!, write!, LockReadWrite!, Replace!, EncodingUTF16LE!)
 | 
						|
if li_file = -1 then return false
 | 
						|
 | 
						|
FileWrite(li_file, "$PBExportHeader$" + ls_filename + "~r~n")
 | 
						|
if as_comment <> "" then
 | 
						|
	FileWrite(li_file, "$PBExportComments$" + as_comment + "~r~n")
 | 
						|
end if
 | 
						|
FileWrite(li_file, ls_syntax)
 | 
						|
FileClose(li_file)
 | 
						|
 | 
						|
return true
 | 
						|
 | 
						|
end function
 | 
						|
 | 
						|
public function string get_object_suffix (string as_type);
 | 
						|
string ls_suf = ""
 | 
						|
 | 
						|
choose case as_type
 | 
						|
	case 'Application'; ls_suf = 'sra'
 | 
						|
	case 'DataWindow';  ls_suf = 'srd'
 | 
						|
	case 'Function';    ls_suf = 'srf'
 | 
						|
	case 'Menu';        ls_suf = 'srm'
 | 
						|
	case 'Pipeline';    ls_suf = 'srp'
 | 
						|
	case 'Project';     ls_suf = 'srj'
 | 
						|
	case 'Query';       ls_suf = 'srq'
 | 
						|
	case 'Structure';   ls_suf = 'srs'
 | 
						|
	case 'UserObject';  ls_suf = 'sru'
 | 
						|
	case 'Window';      ls_suf = 'srw'
 | 
						|
end choose
 | 
						|
 | 
						|
return ls_suf
 | 
						|
 | 
						|
end function
 | 
						|
 | 
						|
public function libexporttype get_object_libtype (string as_type);
 | 
						|
libexporttype l_ot
 | 
						|
 | 
						|
choose case as_type
 | 
						|
	case 'Application'; l_ot = ExportApplication!
 | 
						|
	case 'DataWindow';  l_ot = ExportDataWindow!
 | 
						|
	case 'Function';    l_ot = ExportFunction!
 | 
						|
	case 'Menu';        l_ot = ExportMenu!
 | 
						|
	case 'Pipeline';    l_ot = ExportPipeline!
 | 
						|
	case 'Project';     l_ot = ExportProject!
 | 
						|
	case 'Query';       l_ot = ExportQuery!
 | 
						|
	case 'Structure';   l_ot = ExportStructure!
 | 
						|
	case 'UserObject';  l_ot = ExportUserObject!
 | 
						|
	case 'Window';      l_ot = ExportWindow!
 | 
						|
end choose
 | 
						|
 | 
						|
return l_ot
 | 
						|
 | 
						|
end function
 | 
						|
 | 
						|
public subroutine export_object_at_row (long al_row, string as_lib);
 | 
						|
string ls_obj, ls_type, ls_comment
 | 
						|
 | 
						|
ls_obj = dw_objects.getitemstring(al_row, "obj_name")
 | 
						|
ls_type = dw_objects.getitemstring(al_row, "obj_type")
 | 
						|
ls_comment = dw_objects.getitemstring(al_row, "comment")
 | 
						|
export_object(as_lib, ls_obj, ls_type, ls_comment)
 | 
						|
 | 
						|
end subroutine
 | 
						|
 | 
						|
on w_export.create
 | 
						|
this.st_2=create st_2
 | 
						|
this.sle_destdir=create sle_destdir
 | 
						|
this.cb_browse_dest=create cb_browse_dest
 | 
						|
this.cb_export_some=create cb_export_some
 | 
						|
this.cb_export_all=create cb_export_all
 | 
						|
this.dw_objects=create dw_objects
 | 
						|
this.cb_browse=create cb_browse
 | 
						|
this.sle_pbl=create sle_pbl
 | 
						|
this.st_1=create st_1
 | 
						|
this.Control[]={this.st_2,&
 | 
						|
this.sle_destdir,&
 | 
						|
this.cb_browse_dest,&
 | 
						|
this.cb_export_some,&
 | 
						|
this.cb_export_all,&
 | 
						|
this.dw_objects,&
 | 
						|
this.cb_browse,&
 | 
						|
this.sle_pbl,&
 | 
						|
this.st_1}
 | 
						|
end on
 | 
						|
 | 
						|
on w_export.destroy
 | 
						|
destroy(this.st_2)
 | 
						|
destroy(this.sle_destdir)
 | 
						|
destroy(this.cb_browse_dest)
 | 
						|
destroy(this.cb_export_some)
 | 
						|
destroy(this.cb_export_all)
 | 
						|
destroy(this.dw_objects)
 | 
						|
destroy(this.cb_browse)
 | 
						|
destroy(this.sle_pbl)
 | 
						|
destroy(this.st_1)
 | 
						|
end on
 | 
						|
 | 
						|
type st_2 from statictext within w_export
 | 
						|
integer x = 32
 | 
						|
integer y = 1208
 | 
						|
integer width = 251
 | 
						|
integer height = 76
 | 
						|
integer textsize = -8
 | 
						|
integer weight = 400
 | 
						|
fontcharset fontcharset = ansi!
 | 
						|
fontpitch fontpitch = variable!
 | 
						|
fontfamily fontfamily = swiss!
 | 
						|
string facename = "Tahoma"
 | 
						|
long textcolor = 33554432
 | 
						|
long backcolor = 67108864
 | 
						|
string text = "Export into"
 | 
						|
boolean focusrectangle = false
 | 
						|
end type
 | 
						|
 | 
						|
type sle_destdir from singlelineedit within w_export
 | 
						|
integer x = 325
 | 
						|
integer y = 1204
 | 
						|
integer width = 2619
 | 
						|
integer height = 80
 | 
						|
integer taborder = 30
 | 
						|
integer textsize = -8
 | 
						|
integer weight = 400
 | 
						|
fontcharset fontcharset = ansi!
 | 
						|
fontpitch fontpitch = variable!
 | 
						|
fontfamily fontfamily = swiss!
 | 
						|
string facename = "Tahoma"
 | 
						|
long textcolor = 33554432
 | 
						|
string text = "none"
 | 
						|
borderstyle borderstyle = stylelowered!
 | 
						|
end type
 | 
						|
 | 
						|
type cb_browse_dest from commandbutton within w_export
 | 
						|
integer x = 2985
 | 
						|
integer y = 1204
 | 
						|
integer width = 169
 | 
						|
integer height = 80
 | 
						|
integer taborder = 30
 | 
						|
integer textsize = -8
 | 
						|
integer weight = 400
 | 
						|
fontcharset fontcharset = ansi!
 | 
						|
fontpitch fontpitch = variable!
 | 
						|
fontfamily fontfamily = swiss!
 | 
						|
string facename = "Tahoma"
 | 
						|
string text = "..."
 | 
						|
end type
 | 
						|
 | 
						|
event clicked;
 | 
						|
string ls_dir
 | 
						|
 | 
						|
ls_dir = getfolder("Select the directory where you want to export")
 | 
						|
if ls_dir <> "" then
 | 
						|
	sle_destdir.text = ls_dir
 | 
						|
end if
 | 
						|
 | 
						|
end event
 | 
						|
 | 
						|
type cb_export_some from commandbutton within w_export
 | 
						|
integer x = 398
 | 
						|
integer y = 1344
 | 
						|
integer width = 457
 | 
						|
integer height = 100
 | 
						|
integer taborder = 50
 | 
						|
integer textsize = -8
 | 
						|
integer weight = 400
 | 
						|
fontcharset fontcharset = ansi!
 | 
						|
fontpitch fontpitch = variable!
 | 
						|
fontfamily fontfamily = swiss!
 | 
						|
string facename = "Tahoma"
 | 
						|
string text = "Export selected"
 | 
						|
end type
 | 
						|
 | 
						|
event clicked;
 | 
						|
string ls_lib
 | 
						|
int r
 | 
						|
 | 
						|
ls_lib = sle_pbl.text
 | 
						|
if not fileexists(ls_lib) then return
 | 
						|
 | 
						|
r = dw_objects.getselectedrow(0)
 | 
						|
do while r > 0
 | 
						|
	export_object_at_row(r, ls_lib)
 | 
						|
	r = dw_objects.getselectedrow(r)
 | 
						|
loop
 | 
						|
 | 
						|
end event
 | 
						|
 | 
						|
type cb_export_all from commandbutton within w_export
 | 
						|
integer x = 37
 | 
						|
integer y = 1344
 | 
						|
integer width = 338
 | 
						|
integer height = 100
 | 
						|
integer taborder = 40
 | 
						|
integer textsize = -8
 | 
						|
integer weight = 400
 | 
						|
fontcharset fontcharset = ansi!
 | 
						|
fontpitch fontpitch = variable!
 | 
						|
fontfamily fontfamily = swiss!
 | 
						|
string facename = "Tahoma"
 | 
						|
string text = "Export all"
 | 
						|
end type
 | 
						|
 | 
						|
event clicked;
 | 
						|
string ls_lib
 | 
						|
int i, li_max
 | 
						|
 | 
						|
ls_lib = sle_pbl.text
 | 
						|
if not fileexists(ls_lib) then return
 | 
						|
 | 
						|
li_max = dw_objects.rowcount()
 | 
						|
for i = 1 to li_max
 | 
						|
	export_object_at_row(i, ls_lib)
 | 
						|
next
 | 
						|
end event
 | 
						|
 | 
						|
type dw_objects from datawindow within w_export
 | 
						|
integer x = 32
 | 
						|
integer y = 212
 | 
						|
integer width = 2912
 | 
						|
integer height = 876
 | 
						|
integer taborder = 30
 | 
						|
string title = "none"
 | 
						|
string dataobject = "dw_objects"
 | 
						|
boolean hscrollbar = true
 | 
						|
boolean vscrollbar = true
 | 
						|
boolean livescroll = true
 | 
						|
borderstyle borderstyle = stylelowered!
 | 
						|
end type
 | 
						|
 | 
						|
event clicked;
 | 
						|
boolean lb_sel
 | 
						|
 | 
						|
lb_sel = dw_objects.isselected(row)
 | 
						|
dw_objects.selectrow(row, not lb_sel)
 | 
						|
 | 
						|
end event
 | 
						|
 | 
						|
type cb_browse from commandbutton within w_export
 | 
						|
integer x = 2985
 | 
						|
integer y = 64
 | 
						|
integer width = 169
 | 
						|
integer height = 80
 | 
						|
integer taborder = 20
 | 
						|
integer textsize = -8
 | 
						|
integer weight = 400
 | 
						|
fontcharset fontcharset = ansi!
 | 
						|
fontpitch fontpitch = variable!
 | 
						|
fontfamily fontfamily = swiss!
 | 
						|
string facename = "Tahoma"
 | 
						|
string text = "..."
 | 
						|
end type
 | 
						|
 | 
						|
event clicked;
 | 
						|
string ls_dir, ls_file, ls_path
 | 
						|
 | 
						|
if 1 = getfileopenname("Choose a library to export", ls_dir, ls_file, "pbl", "Libraries (*.PBL),*.PBL") then
 | 
						|
	ls_path = ls_dir
 | 
						|
	sle_pbl.text = ls_path
 | 
						|
	get_objects(ls_path)
 | 
						|
end if
 | 
						|
 | 
						|
end event
 | 
						|
 | 
						|
type sle_pbl from singlelineedit within w_export
 | 
						|
integer x = 256
 | 
						|
integer y = 64
 | 
						|
integer width = 2688
 | 
						|
integer height = 80
 | 
						|
integer taborder = 10
 | 
						|
integer textsize = -8
 | 
						|
integer weight = 400
 | 
						|
fontcharset fontcharset = ansi!
 | 
						|
fontpitch fontpitch = variable!
 | 
						|
fontfamily fontfamily = swiss!
 | 
						|
string facename = "Tahoma"
 | 
						|
long textcolor = 33554432
 | 
						|
string text = "none"
 | 
						|
borderstyle borderstyle = stylelowered!
 | 
						|
end type
 | 
						|
 | 
						|
type st_1 from statictext within w_export
 | 
						|
integer x = 32
 | 
						|
integer y = 72
 | 
						|
integer width = 215
 | 
						|
integer height = 76
 | 
						|
integer textsize = -8
 | 
						|
integer weight = 400
 | 
						|
fontcharset fontcharset = ansi!
 | 
						|
fontpitch fontpitch = variable!
 | 
						|
fontfamily fontfamily = swiss!
 | 
						|
string facename = "Tahoma"
 | 
						|
long textcolor = 33554432
 | 
						|
long backcolor = 67108864
 | 
						|
string text = "Library"
 | 
						|
boolean focusrectangle = false
 | 
						|
end type
 | 
						|
 |