mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
ADD: class TSimpleDarwinFSWatcher added
(cherry picked from commit 9d7a07b50a)
This commit is contained in:
parent
97f52a1811
commit
bc533a396e
1 changed files with 62 additions and 1 deletions
|
|
@ -35,7 +35,8 @@ interface
|
|||
uses
|
||||
Classes, SysUtils, UnixType,
|
||||
Cocoa_Extra, MacOSAll, CocoaAll, CocoaUtils, CocoaInt, CocoaConst, CocoaMenus,
|
||||
InterfaceBase, Menus, Controls, Forms, LazLoggerBase;
|
||||
InterfaceBase, Menus, Controls, Forms,
|
||||
uDarwinFSWatch;
|
||||
|
||||
// Darwin Util Function
|
||||
function StringToNSString(const S: String): NSString;
|
||||
|
|
@ -91,6 +92,25 @@ type TDarwinStatfs = TStatFs;
|
|||
|
||||
{$endif}
|
||||
|
||||
// MacOS Simple File Sytem Watcher (only one watchPath)
|
||||
|
||||
{ TSimpleDarwinFSWatcher }
|
||||
|
||||
TSimpleDarwinFSWatcher = class( TThread )
|
||||
private
|
||||
_monitor: TDarwinFSWatcher;
|
||||
_callback: TDarwinFSWatchCallBack;
|
||||
_event: TDarwinFSWatchEvent;
|
||||
protected
|
||||
procedure Execute; override;
|
||||
procedure handleEvent( event:TDarwinFSWatchEvent );
|
||||
procedure doSyncCallback;
|
||||
public
|
||||
procedure stop();
|
||||
constructor Create( const path:String; const callback:TDarwinFSWatchCallBack );
|
||||
destructor Destroy; override;
|
||||
end;
|
||||
|
||||
// MacOS Service Integration
|
||||
type TNSServiceProviderCallBack = Procedure( filenames:TStringList ) of object;
|
||||
type TNSServiceMenuIsReady = Function(): Boolean of object;
|
||||
|
|
@ -145,6 +165,47 @@ implementation
|
|||
uses
|
||||
DynLibs;
|
||||
|
||||
{ TSimpleDarwinFSWatcher }
|
||||
|
||||
procedure TSimpleDarwinFSWatcher.Execute;
|
||||
begin
|
||||
_monitor.start();
|
||||
end;
|
||||
|
||||
procedure TSimpleDarwinFSWatcher.handleEvent( event:TDarwinFSWatchEvent );
|
||||
begin
|
||||
_event:= event;
|
||||
Synchronize( doSyncCallback );
|
||||
end;
|
||||
|
||||
procedure TSimpleDarwinFSWatcher.doSyncCallback;
|
||||
begin
|
||||
_callback( _event );
|
||||
_event:= nil;
|
||||
end;
|
||||
|
||||
procedure TSimpleDarwinFSWatcher.stop();
|
||||
begin
|
||||
_monitor.terminate();
|
||||
end;
|
||||
|
||||
constructor TSimpleDarwinFSWatcher.Create(
|
||||
const path:String;
|
||||
const callback:TDarwinFSWatchCallBack );
|
||||
begin
|
||||
Inherited Create( false );
|
||||
_callback:= callback;
|
||||
_monitor:= TDarwinFSWatcher.create( handleEvent );
|
||||
_monitor.addPath( path );
|
||||
end;
|
||||
|
||||
destructor TSimpleDarwinFSWatcher.Destroy;
|
||||
begin
|
||||
FreeAndNil( _monitor );
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
||||
procedure setMacOSAppearance( mode:Integer );
|
||||
var
|
||||
appearance: NSAppearance;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue