mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +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
|
|
|