[Lazarus] OpenDocument and Linux Mint
silvioprog
silvioprog at gmail.com
Fri Apr 25 07:21:12 CEST 2014
2014-04-17 14:50 GMT-03:00 Mattias Gaertner <nc-gaertnma at netcologne.de>:
> On Thu, 17 Apr 2014 14:35:07 -0300
> silvioprog <silvioprog at gmail.com> wrote:
>
> > 2014-04-16 22:07 GMT-03:00 waldo kitty <wkitty42 at windstream.net>:
> > [...]
> >
> > > and you don't get any kind of exception or other error results??
> > >
> >
> > No error occurs, and it doesn't opens file. :/
> >
> > I'm trying to debug LCL in trying to figure out the problem ...
>
> The OpenDocument function does not raise exceptions under Linux. It
> returns false if no application was found.
>
> It should be improved to raise an exception for the errors it can spot.
> Like not finding the application or if the program returns bytes on
> Stderr or if the ExitCode<>0.
I found the error. In a terminal, when I call:
$ xdg-open test.txt
The "test.txt" file is opened into terminal. But when I call:
$ gnome-open test.txt
The "test.txt" file is opened into Pluma Editor (native text editor on
Linux Mint, like GEdit in Ubuntu).
Then seems a problem in Linux Mint (Mate).
To solve my problem, I changed the function from:
[code]
function OpenDocument(APath: String): Boolean;
var
lApp: string;
begin
// Android uses this
if Assigned(OpenDocumentWidgetsetImplementation) then
begin
Result := OpenDocumentWidgetsetImplementation(APath);
Exit;
end;
Result := True;
if not FileExistsUTF8(APath) then exit(false);
lApp:=FindFilenameOfCmd('xdg-open'); // Portland OSDL/FreeDesktop
standard on Linux
if lApp='' then
lApp:=FindFilenameOfCmd('kfmclient'); // KDE command
if lApp='' then
lApp:=FindFilenameOfCmd('gnome-open'); // GNOME command
if lApp='' then
Exit(False);
if (APath<>'') and (APath[1]<>'"') then
APath:=QuotedStr(APath);
RunCmdFromPath(lApp,APath);
end;
[/code]
To:
[code]
function OpenDocument(const APath: String): Boolean;
var
lApp: string;
begin
// Android uses this
if Assigned(OpenDocumentWidgetsetImplementation) then
begin
Result := OpenDocumentWidgetsetImplementation(APath);
Exit;
end;
Result := True;
if not FileExistsUTF8(APath) then exit(false);
lApp:=FindFilenameOfCmd('gnome-open'); // GNOME command
if lApp='' then
lApp:=FindFilenameOfCmd('kfmclient') // KDE command
else
if lApp='' then
lApp:=FindFilenameOfCmd('xdg-open') // Portland OSDL/FreeDesktop
standard on Linux
else
if lApp='' then
Exit(False);
if (APath<>'') and (APath[1]<>'"') then
APath:=QuotedStr(APath);
RunCmdFromPath(lApp,APath);
end;
[/code]
Quick fix! :p
--
Silvio Clécio
My public projects - github.com/silvioprog
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20140425/28afc570/attachment-0003.html>
More information about the Lazarus
mailing list