Files
linguist/samples/PowerBuilder/w_export.srw
2016-07-24 12:59:24 +02:00

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