界面库
更新动态库
This commit is contained in:
@@ -97,17 +97,7 @@ type TGdiplusflat=class()
|
||||
end
|
||||
function getfuncptrbyname(lib,n);
|
||||
begin
|
||||
case lib of
|
||||
"libc":
|
||||
begin
|
||||
return getdlsymaddress("libc.so.6",n);
|
||||
end
|
||||
"gtk":
|
||||
begin
|
||||
|
||||
end
|
||||
else return getdlsymaddress("libgtk-3.so.0",n);
|
||||
end
|
||||
return unit(ugtkinterface).getfuncptrbyname(lib,n);
|
||||
end
|
||||
|
||||
end
|
||||
@@ -194,17 +184,7 @@ type TGdiplusflat=class()
|
||||
end
|
||||
class function getfuncptrbyname(lib,n);
|
||||
begin
|
||||
case lib of
|
||||
"libc":
|
||||
begin
|
||||
return getdlsymaddress("libc.so.6",n);
|
||||
end
|
||||
"gtk":
|
||||
begin
|
||||
|
||||
end
|
||||
else return getdlsymaddress("libgtk-3.so.0",n);
|
||||
end
|
||||
return unit(ugtkinterface).getfuncptrbyname(lib,n);
|
||||
end
|
||||
class function GdipSaveImageToStream(image:pointer;var imgestr:string); //无用到
|
||||
class function GdipLoadImageFromFile(filename:string;var image:pointer); //无用到
|
||||
|
||||
@@ -10,6 +10,7 @@ function _gtkeventcall_();//gtk
|
||||
function _gtkidledo_(); //gtk idle消息分发
|
||||
function _gtk_add_time_msg_(h,m,w,l);
|
||||
function GetGtkEventNameOrId(n); //gtk 事件名称
|
||||
function getfuncptrbyname(lib,n);
|
||||
type tgtkeventobject =class(tgtk_ctl_object) //gtk对象消息类(测试用)
|
||||
function create(h);
|
||||
begin
|
||||
@@ -3386,19 +3387,19 @@ type tgtkapis = class() //gtk
|
||||
flag := flag .& 7;
|
||||
if flag = 0 then
|
||||
begin
|
||||
r := tsl_gtk_messagebox_(TslStringToGtk(txt),TslStringToGtk(title),hd,U"确定",1,"b",0,"c",0);
|
||||
r := tsl_gtk_messagebox_b(TslStringToGtk(txt),TslStringToGtk(title),hd,U"确定",1,"b",0,"c",0);
|
||||
if r=1 then return 1;
|
||||
return 0;
|
||||
end else
|
||||
if flag = 1 then
|
||||
begin
|
||||
r := tsl_gtk_messagebox_(TslStringToGtk(txt),TslStringToGtk(title),hd,U"确定",1,U"取消",1,"c",0);
|
||||
r := tsl_gtk_messagebox_b(TslStringToGtk(txt),TslStringToGtk(title),hd,U"确定",1,U"取消",1,"c",0);
|
||||
if r=1 then return 1;
|
||||
else return 2;
|
||||
end else
|
||||
if flag = 2 then
|
||||
begin
|
||||
r := tsl_gtk_messagebox_(TslStringToGtk(txt),TslStringToGtk(title),hd,U"终止",1,U"重试",1,U"忽略",1);
|
||||
r := tsl_gtk_messagebox_b(TslStringToGtk(txt),TslStringToGtk(title),hd,U"终止",1,U"重试",1,U"忽略",1);
|
||||
case r of
|
||||
1: return 3;
|
||||
2: return 4;
|
||||
@@ -3407,7 +3408,7 @@ type tgtkapis = class() //gtk
|
||||
end else
|
||||
if flag = 3 then
|
||||
begin
|
||||
r := tsl_gtk_messagebox_(TslStringToGtk(txt),TslStringToGtk(title),hd,U"是",1,U"否",1,U"取消",1);
|
||||
r := tsl_gtk_messagebox_b(TslStringToGtk(txt),TslStringToGtk(title),hd,U"是",1,U"否",1,U"取消",1);
|
||||
case r of
|
||||
1: return 6;
|
||||
2: return 7;
|
||||
@@ -3416,7 +3417,7 @@ type tgtkapis = class() //gtk
|
||||
end else
|
||||
if flag =4 then
|
||||
begin
|
||||
r := tsl_gtk_messagebox_(TslStringToGtk(txt),TslStringToGtk(title),hd,U"是",1,U"否",1,"c",0);
|
||||
r := tsl_gtk_messagebox_b(TslStringToGtk(txt),TslStringToGtk(title),hd,U"是",1,U"否",1,"c",0);
|
||||
case r of
|
||||
1: return 6;
|
||||
2: return 7;
|
||||
@@ -3426,7 +3427,7 @@ type tgtkapis = class() //gtk
|
||||
end else
|
||||
if flag = 5 then
|
||||
begin
|
||||
r := tsl_gtk_messagebox_(TslStringToGtk(txt),TslStringToGtk(title),hd,U"重试",1,U"取消",1,U"取消",0);
|
||||
r := tsl_gtk_messagebox_b(TslStringToGtk(txt),TslStringToGtk(title),hd,U"重试",1,U"取消",1,U"取消",0);
|
||||
case r of
|
||||
1: return 4;
|
||||
else return 2;
|
||||
@@ -3434,7 +3435,7 @@ type tgtkapis = class() //gtk
|
||||
end else
|
||||
if flag = 6 then
|
||||
begin
|
||||
r := tsl_gtk_messagebox_(TslStringToGtk(txt),TslStringToGtk(title),hd,U"取消",1,U"重试",1,U"继续",1);
|
||||
r := tsl_gtk_messagebox_b(TslStringToGtk(txt),TslStringToGtk(title),hd,U"取消",1,U"重试",1,U"继续",1);
|
||||
case r of
|
||||
1: return 2;
|
||||
2: return 4;
|
||||
@@ -3443,6 +3444,87 @@ type tgtkapis = class() //gtk
|
||||
end
|
||||
end
|
||||
end
|
||||
function tsl_gtk_messagebox_b();
|
||||
begin
|
||||
global g_gtk_call_handler_manager;
|
||||
mgnr := g_gtk_call_handler_manager;
|
||||
pms := params;
|
||||
dialog := gtk_window_new(0); //gtk_dialog_new();
|
||||
gtk_window_set_resizable(GTK_WINDOW(dialog),FALSE);
|
||||
gtk_window_set_position(GTK_WINDOW(dialog),3); //GTK_WIN_POS_CENTER_ALWAYS
|
||||
btns := new tslcstructureobj(MemoryAlignmentCalculate(array((0,"intptr",0),(1,"intptr",0),(2,"intptr",0),(3,"intptr",0))));
|
||||
btns._setvalue_(0,dialog);
|
||||
g_signal_connect_data(GTK_WIDGET(dialog),"destroy",mgnr.get(thisfunction( MessageBoxQuit)),btns._getptr_,0);
|
||||
id := pms[0];
|
||||
idt := pms[1];
|
||||
pt := pms[2];
|
||||
if(GTK_WIDGET(pt))then //GTK_IS_WINDOW
|
||||
begin
|
||||
if(not gtk_widget_is_toplevel(pt))then
|
||||
begin
|
||||
pt := gtk_widget_get_toplevel(pt);
|
||||
end
|
||||
gtk_window_set_modal(GTK_WINDOW(dialog),TRUE);
|
||||
gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(pt));
|
||||
end
|
||||
gtk_window_set_title(GTK_WINDOW(dialog),(idt));
|
||||
gtk_container_set_border_width(GTK_CONTAINER(dialog),5);
|
||||
gtk_widget_realize(dialog);
|
||||
lbl := gtk_label_new((id));
|
||||
gtk_misc_set_padding((lbl),10,10); //GTK_MISC
|
||||
vbox := gtk_vbox_new(FALSE,5);
|
||||
hbox := gtk_hbox_new(FALSE,10);
|
||||
gtk_box_pack_start((vbox),lbl,TRUE,TRUE,0); //GTK_BOX
|
||||
gtk_widget_show(lbl);
|
||||
gtk_container_add(GTK_CONTAINER(dialog),GTK_WIDGET(vbox));
|
||||
gtk_widget_show(vbox);
|
||||
gtk_widget_show(hbox);
|
||||
gtk_widget_show(dialog);
|
||||
temp := 0;
|
||||
for idx := 0 to 2 do
|
||||
begin
|
||||
temp := pms[3+idx * 2];
|
||||
btn := gtk_button_new_with_label(temp);
|
||||
btns._setvalue_(idx+1,btn);
|
||||
temp := pms[3+idx * 2+1];
|
||||
g_signal_connect_data(GTK_WIDGET(btn),"clicked",mgnr.get(thisfunction( MessageBoxQuit)),btns._getptr_,nil);
|
||||
if temp then gtk_widget_show(btn);
|
||||
gtk_box_pack_start((hbox),btn,TRUE,TRUE,0);
|
||||
end
|
||||
gtk_box_pack_start((vbox),hbox,TRUE,TRUE,0);
|
||||
class(tUIglobalData).uigetdata("tuiapplication").run();
|
||||
for idx := 3 downto 1 do
|
||||
begin
|
||||
if(0=(btns._getvalue_(idx)))then
|
||||
begin
|
||||
return idx;
|
||||
end
|
||||
end
|
||||
return 0;
|
||||
end
|
||||
function MessageBoxQuit(w:pointer;dd: pointer);
|
||||
begin
|
||||
da := new tslcstructureobj(MemoryAlignmentCalculate(array((0,"intptr",0),(1,"intptr",0),(2,"intptr",0),(3,"intptr",0))),dd);
|
||||
d := da._getdata_();
|
||||
gtk_window_set_modal(GTK_WINDOW(d[0]),false);
|
||||
gtk_window_set_transient_for( GTK_WINDOW(d[0]),0);
|
||||
for i := 0 to 3 do
|
||||
begin
|
||||
if(w=d[i])then
|
||||
begin
|
||||
if i=0 then
|
||||
begin
|
||||
gtk_main_quit();
|
||||
end else
|
||||
begin
|
||||
da._setvalue_(i,0);
|
||||
g_signal_emit_by_name(d[0], "destroy");
|
||||
end
|
||||
break;
|
||||
end
|
||||
end
|
||||
return 0;
|
||||
end
|
||||
function gtk_createwindowexa(dwExStyle,lpClassName,lpWindowName,dwStyle,x,y,nwidth,nheight,hwndparent,hmenu,hinstance,lpParam); //窗口构造类
|
||||
begin
|
||||
//array("tsui_application","tsui_window","tsluidesigner_a_a_1","tsui_form","tui_button","tui_edit","tui_tablecontrol32","tui_PageSheet","tui_monthcalendar","tui_datetimepicker")
|
||||
@@ -4697,6 +4779,11 @@ type tgtkapis = class() //gtk
|
||||
_f_ := static procedure(w:pointer;p:pointer);cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(w,p);
|
||||
end
|
||||
function gtk_window_get_transient_for(w:pointer);
|
||||
begin
|
||||
_f_ := static function(w:pointer;p:pointer);cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(w,p);
|
||||
end
|
||||
procedure gtk_window_get_size(wd:pointer;var h:integer;var w:integer);
|
||||
begin
|
||||
_f_ := static procedure(wd:pointer;var h:integer;var w:integer);cdecl;external getfuncptrbyname(0,functionname());
|
||||
@@ -4707,6 +4794,11 @@ type tgtkapis = class() //gtk
|
||||
_f_ := static procedure(w:pointer;ico:pointer);cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(w,ico);
|
||||
end
|
||||
procedure gtk_window_set_position(wd:pointer;ps:integer);
|
||||
begin
|
||||
_f_ := static procedure(w:pointer;p:integer);cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(wd,ps);
|
||||
end
|
||||
procedure gtk_window_set_resizable(p:pointer;f:integer);
|
||||
begin
|
||||
_f_ := static procedure(p:pointer;f:integer);cdecl;external getfuncptrbyname(0,functionname());
|
||||
@@ -5079,6 +5171,17 @@ type tgtkapis = class() //gtk
|
||||
//procedure gtk_progress_configure(pb:pointer;v:double;min:double;max:double);cdecl;external 'libgtk-3.so';
|
||||
|
||||
//////////////////////////////label/////////////////////////////////////
|
||||
function gtk_label_new(t:string):pointer;
|
||||
begin
|
||||
_f_ := static function(t:string):pointer;cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(t);
|
||||
end
|
||||
|
||||
procedure gtk_misc_set_padding (misc:pointer;x:integer;y:integer);
|
||||
begin
|
||||
_f_ := static procedure (misc:pointer;x:integer;y:integer);cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(misc,x,y);
|
||||
end
|
||||
// function gtk_label_new(t:string):pointer;cdecl;external 'libgtk-3.so';
|
||||
// function gtk_label_get_text(w:pointer):string;cdecl;external 'libgtk-3.so';
|
||||
// procedure gtk_label_set_text(l:pointer;t:string);cdecl;external 'libgtk-3.so';
|
||||
@@ -5087,7 +5190,12 @@ type tgtkapis = class() //gtk
|
||||
//////////////// button btn /////////////////
|
||||
// function gtk_button_get_label(b:pointer):string;cdecl;external 'libgtk-3.so';
|
||||
// function gtk_button_get_event_window(b:pointer):pointer;cdecl;external 'libgtk-3.so';
|
||||
// function gtk_button_new_with_label(c:string):pointer;cdecl;external 'libgtk-3.so';
|
||||
|
||||
function gtk_button_new_with_label(c:string);
|
||||
begin
|
||||
_f_ := static function(c:string):pointer;cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(c);
|
||||
end
|
||||
// function gtk_button_new():pointer;cdecl;external 'libgtk-3.so';
|
||||
// function gtk_check_button_new():pointer;cdecl;external 'libgtk-3.so';
|
||||
// function gtk_check_button_new_with_label(l:string):pointer;cdecl;external 'libgtk-3.so';
|
||||
|
||||
@@ -705,7 +705,11 @@ begin
|
||||
if not g_windows_proc_handle then
|
||||
begin
|
||||
g_windows_proc_handle := makeinstance(thisfunction(tslvclproc));
|
||||
end
|
||||
end
|
||||
try
|
||||
SetProcessDpiAwareness(2); //shez dpi感知
|
||||
except
|
||||
end
|
||||
end
|
||||
function uninit();//卸载
|
||||
begin
|
||||
@@ -716,6 +720,7 @@ begin
|
||||
g_windows_proc_handle := nil;
|
||||
end
|
||||
end
|
||||
function SetProcessDpiAwareness(v:integer):pointer;stdcall; external "Shcore.dll" name "SetProcessDpiAwareness";
|
||||
initialization
|
||||
init();
|
||||
finalization
|
||||
|
||||
Reference in New Issue
Block a user