diff --git a/designer/utslcodeeditor.tsf b/designer/utslcodeeditor.tsf index 40c478f..cbab7f8 100644 --- a/designer/utslcodeeditor.tsf +++ b/designer/utslcodeeditor.tsf @@ -3849,6 +3849,47 @@ type TEditer=class(TCustomcontrol) // linesi := array(1:1); if (1 = readfile(rwraw(),"",f,0,filesize("",f),s)) and s then begin + strcode := 0; + if(length(s)>= 2)and ord(s[1])=0xFE and ord(s[2])=0xFF then //ucs2-big + begin + strcode := 1; + if length(s)=2 then s := ""; + else + begin + s1 := ""; + setlength(s1,length(s)-2); + for i := 3 to length(s)-1 step 2 do + begin + s1[i-2]:= s[i+1]; + s1[i-1]:= s[i]; + end + s := unicodetomultibyte(s1,936); + end + end else + if(length(s)>= 2)and ord(s[1])=0xFF and ord(s[2])=0xFE then //ucs2-little + begin + strcode := 1; + if length(s)=2 then s := ""; + else + begin + s := unicodetomultibyte(s[3:],936); + end + end else + if(length(s)>= 3)and ord(s[1])=0xEF and ord(s[2])=0xBB and ord(s[3])=0xBF then + begin + strcode := 1; + if length(s)=3 then s := ""; + else s := utf8toansi(s[4:]); + end + if(0=strcode)then + begin + if IsTextUTF8(s)=1 then + begin + s := utf8toansi(s); + end + end + //////////////////////////////////////////////////////////////////////////////////// + slen := length(s); if 1= parseregexpr(ctl,s,ctl2,m,mp,mlen) then begin r := array(); @@ -3861,9 +3902,12 @@ type TEditer=class(TCustomcontrol) // fgf := "\n"; end else fgf := "\r"; + p1 := 1; + p2 := 0; for i,v in m do begin mi := mp[i,0]; + while idxp1) and (rid<>orid) then - begin + begin + isset := 1; + for ii := p2 to slen do + begin + if s[ii]=fgf then + begin + isset := 0; + p2 := ii; + break; + end + end + if isset then p2 := slen; r[i][2] := trim(s[p1:p2]); end else r[i,2] := ""; diff --git a/funcext/tvclib/ugtkinterface.tsf b/funcext/tvclib/ugtkinterface.tsf index 488be6e..d33046c 100644 --- a/funcext/tvclib/ugtkinterface.tsf +++ b/funcext/tvclib/ugtkinterface.tsf @@ -2238,13 +2238,29 @@ type tsgtkapi = class(tgtkapis) end //////////////////////////////////////////////////////////////////// function GetOpenFileNameA(LPOPENFILENAMEA:pointer):integer; - begin - r := GetSaveFileNameA(LPOPENFILENAMEA); + begin + global g_open_file_flag; + g_open_file_flag := 1; + r := GetSaveFileNameA(LPOPENFILENAMEA); + g_open_file_flag := 0; return r; end function GetSaveFileNameA(LPOPENFILENAMEA:pointer):integer; begin global g_open_file_flag; + /////////////////////////////////////////////// + GTK_RESPONSE_HELP := -11; + GTK_RESPONSE_APPLY := -10; + GTK_RESPONSE_NO := -9; + GTK_RESPONSE_YES := -8; + GTK_RESPONSE_CLOSE := -7; + GTK_RESPONSE_CANCEL := -6; + GTK_RESPONSE_OK := -5; + GTK_RESPONSE_DELETE_EVENT := -4; + GTK_RESPONSE_ACCEPT := -3; + GTK_RESPONSE_REJECT := -2; + GTK_RESPONSE_NONE := -1; + ///////////////////////////////////////// r := false; obj := new TtagOFNA_(LPOPENFILENAMEA); wd := obj._getvalue_("hwndowner"); @@ -2252,14 +2268,12 @@ type tsgtkapi = class(tgtkapis) if wd then wd := gtk_widget_get_toplevel(wd); mulsel := false; if obj._getvalue_("flags") .& 0x200 then mulsel := true; - //echo "\r\n>>>", obj._getvalue_("nmaxfiletitle"); + //echo "\r\n>>>", obj._getvalue_("nmaxfiletitle"); + opaction := g_open_file_flag?false:true; //打开或者save + cdlg := gtk_file_chooser_dialog_new("file selector",wd,opaction,"open",GTK_RESPONSE_ACCEPT,"cancel",GTK_RESPONSE_CANCEL,nil); if mulsel then - begin - cdlg := gtk_file_chooser_dialog_new("file selector",wd,0,"open",100,"cancel",50,nil); + begin gtk_file_chooser_set_select_multiple(cdlg,true); - end else - begin - cdlg := gtk_file_chooser_dialog_new("file selector",wd,1,"open",100,"cancel",50,nil); end dfdir := obj._getvalue_("lpstrinitialdir"); if dfdir then //默认位置 @@ -2270,7 +2284,7 @@ type tsgtkapi = class(tgtkapis) gtk_file_chooser_set_filename(cdlg,TslStringToGtk( df)); end end - if 100=gtk_dialog_run(cdlg)then + if GTK_RESPONSE_ACCEPT=gtk_dialog_run(cdlg)then begin mf := obj._getvalue_("nmaxfile"); if mulsel then @@ -2467,12 +2481,26 @@ type tsgtkapi = class(tgtkapis) function SHBrowseForFolderA(LPITEMIDLIST:pointer):pointer; begin + + /////////////////////////////////////////////// + GTK_RESPONSE_HELP := -11; + GTK_RESPONSE_APPLY := -10; + GTK_RESPONSE_NO := -9; + GTK_RESPONSE_YES := -8; + GTK_RESPONSE_CLOSE := -7; + GTK_RESPONSE_CANCEL := -6; + GTK_RESPONSE_OK := -5; + GTK_RESPONSE_DELETE_EVENT := -4; + GTK_RESPONSE_ACCEPT := -3; + GTK_RESPONSE_REJECT := -2; + GTK_RESPONSE_NONE := -1; + ///////////////////////////////////////// obj := new TBrowseinfoA_(LPITEMIDLIST); wd := obj._getvalue_("hwndowner"); wd := wd?:nil; if wd and not(gtk_widget_is_toplevel(wd)) then wd := gtk_widget_get_toplevel(wd); //top level r := 0; - cdlg := gtk_file_chooser_dialog_new("folder selector",wd,3,"open",100,"cancel",50,nil); + cdlg := gtk_file_chooser_dialog_new("folder selector",wd,3,"open",GTK_RESPONSE_ACCEPT,"cancel",GTK_RESPONSE_CANCEL,nil); dir := obj._getvalue_("pidlroot"); if dir then //默认位置 begin @@ -2482,7 +2510,7 @@ type tsgtkapi = class(tgtkapis) gtk_file_chooser_set_filename(cdlg,TslStringToGtk( df)); end end - if 100=gtk_dialog_run(cdlg) then + if GTK_RESPONSE_ACCEPT=gtk_dialog_run(cdlg) then begin r := GtkStringToTsl( gtk_file_chooser_get_filename(cdlg)); end @@ -6382,7 +6410,7 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object) h := a.handle; nt := now(); - if (nt-(1/24/3600/20))