Skip to content

Commit

Permalink
disable OpenGL functionalities when building 64bit mac, fix #184
Browse files Browse the repository at this point in the history
  • Loading branch information
fangq committed Sep 20, 2023
1 parent 9a5dd5b commit 1adb6c6
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 8 deletions.
45 changes: 39 additions & 6 deletions mcxstudio/mcxgui.pas
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@
===============================================================================}
{$mode objfpc}{$H+}

{$IFDEF Darwin}
{$IFDEF LCLcocoa}
{$DEFINE NO_GLSCENE}
{$ENDIF}
{$ENDIF}

interface

uses
Expand All @@ -17,8 +23,9 @@ interface
LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, Menus, ComCtrls,
ExtCtrls, Spin, EditBtn, Buttons, ActnList, lcltype, AsyncProcess, Grids,
CheckLst, LazHelpHTML, ValEdit, inifiles, fpjson, jsonparser,jsonscanner {$IFDEF USE_SYNAPSE}, runssh{$ENDIF},
strutils, RegExpr, OpenGLTokens, mcxabout, mcxshape, mcxnewsession, mcxsource,
mcxrender, mcxview, mcxconfig, mcxstoprun, Types {$IFDEF WINDOWS}, registry, ShlObj{$ENDIF};
strutils, RegExpr, mcxabout, mcxnewsession, mcxsource
{$IFNDEF NO_GLSCENE}, OpenGLTokens, mcxshape, mcxrender, mcxview{$ENDIF}, mcxconfig,
mcxstoprun, Types {$IFDEF WINDOWS}, registry, ShlObj{$ENDIF};

type

Expand Down Expand Up @@ -476,7 +483,9 @@ TfmMCX = class(TForm)

var
fmMCX: TfmMCX;
{$IFNDEF NO_GLSCENE}
fmDomain: TfmDomain;
{$ENDIF}
fmConfig: TfmConfig;
fmStop: TfmStop;
ProfileChanged: Boolean;
Expand Down Expand Up @@ -1197,7 +1206,9 @@ procedure TfmMCX.mcxdoOpenExecute(Sender: TObject);
ret:TModalResult;
TaskFile: string;
fext: string;
{$IFNDEF NO_GLSCENE}
fmViewer: TfmViewer;
{$ENDIF}
begin
ret:=mrNo;
if(OpenProject.Execute) then begin
Expand All @@ -1206,6 +1217,7 @@ procedure TfmMCX.mcxdoOpenExecute(Sender: TObject);
if(fext = '.json') then begin // adding new session
LoadSessionFromJSON(TaskFile);
end else if (AnsiIndexStr(fext, ['.tx3','.nii','.jnii']) >= 0) then begin
{$IFNDEF NO_GLSCENE}
try
fmViewer:=TfmViewer.Create(self);
Case AnsiIndexStr(fext, ['.tx3','.nii','.jnii']) of
Expand All @@ -1222,6 +1234,7 @@ procedure TfmMCX.mcxdoOpenExecute(Sender: TObject);
on E: Exception do
ShowMessage('OpenGL Error: '+E.ClassName+#13#10 + E.Message);
end;
{$ENDIF}
end else begin
if(mcxdoSave.Enabled) then begin
ret:=MessageDlg('Confirmation', 'The current session has not been saved, do you want to save it?',
Expand Down Expand Up @@ -1306,7 +1319,9 @@ procedure TfmMCX.mcxdoPlotVolExecute(Sender: TObject);
ftype: TAction;
nx : integer = 0;
ny,nz,nt: integer;
{$IFNDEF NO_GLSCENE}
fmViewer: TfmViewer;
{$ENDIF}
cmd: TStringList;
singletype: LongWord;
dref: string;
Expand All @@ -1321,10 +1336,14 @@ procedure TfmMCX.mcxdoPlotVolExecute(Sender: TObject);

if (grProgram.ItemIndex <> 1) then begin
outputfile:=CreateWorkFolder(edSession.Text, false)+DirectorySeparator+edSession.Text+ftype.Hint;
{$IFNDEF NO_GLSCENE}
singletype:=GL_RGBA32F;
{$ENDIF}
end else begin
outputfile:=sgConfig.Cells[2,14]+DirectorySeparator+edSession.Text+ftype.Hint;
{$IFNDEF NO_GLSCENE}
singletype:=GL_DOUBLE_EXT;
{$ENDIF}
end;

if(not FileExists(outputfile)) then begin
Expand Down Expand Up @@ -1371,6 +1390,7 @@ procedure TfmMCX.mcxdoPlotVolExecute(Sender: TObject);
AddMultiLineLog(cmd.DelimitedText,pMCX);
cmd.Free;

{$IFNDEF NO_GLSCENE}
if(miUseMatlab.Checked) then exit;
try
fmViewer:=TfmViewer.Create(self);
Expand All @@ -1388,6 +1408,7 @@ procedure TfmMCX.mcxdoPlotVolExecute(Sender: TObject);
on E: Exception do
ShowMessage('OpenGL Error: '+E.ClassName+#13#10 + E.Message);
end;
{$ENDIF}
end;

procedure TfmMCX.RunSSHCmd(Sender: TObject; cmd: string; updategpu:boolean=false; doprogress: boolean=false);
Expand Down Expand Up @@ -1727,11 +1748,12 @@ procedure TfmMCX.FormCreate(Sender: TObject);
lvJobs.ViewStyle:=vsReport;
{$ENDIF}
DockMaster.MakeDockSite(Self,[akBottom,akLeft,akRight],admrpChild);

{$IFNDEF NO_GLSCENE}
fmDomain:=TfmDomain.Create(Self);
fmDomain.FormStyle:=fsStayOnTop;
{$ENDIF}
fmConfig:=TfmConfig.Create(Self);
fmStop:=TfmStop.Create(Self);
fmDomain.FormStyle:=fsStayOnTop;
fmStop.FormStyle:=fsStayOnTop;

CurrentSession:=nil;
Expand Down Expand Up @@ -1794,7 +1816,9 @@ procedure TfmMCX.FormDestroy(Sender: TObject);
PassList.Free;
BCItemProp.Free;

{$IFNDEF NO_GLSCENE}
fmDomain.Free;
{$ENDIF}
fmConfig.Free;
fmStop.Free;

Expand Down Expand Up @@ -1986,12 +2010,16 @@ procedure TfmMCX.MenuItem22Click(Sender: TObject);
end;

procedure TfmMCX.MenuItem76Click(Sender: TObject);
{$IFNDEF NO_GLSCENE}
var
fmViewer: TfmViewer;
fmViewer: TfmViewer;
{$ENDIF}
begin
{$IFNDEF NO_GLSCENE}
fmViewer:=TfmViewer.Create(self);
fmViewer.BringToFront;
fmViewer.Show;
{$ENDIF}
end;

procedure TfmMCX.miExportJSONClick(Sender: TObject);
Expand Down Expand Up @@ -2235,7 +2263,9 @@ procedure TfmMCX.shapeAddCylinderExecute(Sender: TObject);

procedure TfmMCX.AddShapesWindow(shapeid: string; defaultval: TStringList; node: TTreeNode);
var
{$IFNDEF NO_GLSCENE}
fmshape:TfmShapeEditor;
{$ENDIF}
ss: string;
jdata: TJSONData;
begin
Expand All @@ -2253,6 +2283,7 @@ procedure TfmMCX.AddShapesWindow(shapeid: string; defaultval: TStringList; node:
exit;
end;

{$IFNDEF NO_GLSCENE}
fmshape:=TfmShapeEditor.Create(Application, defaultval);
fmshape.Caption:='Add Shape: '+shapeid;
if(Pos('Layer',shapeid)=2) or (Pos('Slab',shapeid)=2) then
Expand All @@ -2268,6 +2299,7 @@ procedure TfmMCX.AddShapesWindow(shapeid: string; defaultval: TStringList; node:
ShowJSONData(node,jdata,true);
end;
fmshape.Free;
{$ENDIF}
end;

procedure TfmMCX.AddShapes(shapeid: string; defaultval: string);
Expand Down Expand Up @@ -2473,7 +2505,7 @@ procedure TfmMCX.shapePreviewExecute(Sender: TObject);
cmd.Free;

if(miUseMatlab.Checked) then exit;

{$IFNDEF NO_GLSCENE}
try
fmDomain.mmShapeJSON.Lines.Text:=shapejson.FormatJSON;
freeandnil(shapejson);
Expand All @@ -2482,6 +2514,7 @@ procedure TfmMCX.shapePreviewExecute(Sender: TObject);
on E: Exception do
ShowMessage('OpenGL Error: '+E.ClassName+#13#10 + E.Message);
end;
{$ENDIF}
end;


Expand Down
10 changes: 8 additions & 2 deletions mcxstudio/mcxstudio.lpr
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,19 @@
//{$mode objfpc}{$H+}
{$mode delphi}

{$IFDEF Darwin}
{$IFDEF LCLcocoa}
{$DEFINE NO_GLSCENE}
{$ENDIF}
{$ENDIF}

uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, mcxgui, lazcontrols, anchordockpkg, mcxabout,
mcxshape, mcxnewsession, mcxsource, mcxview, mcxloadfile, mcxconfig,
Forms, mcxgui, lazcontrols, anchordockpkg, mcxabout
{$IFNDEF NO_GLSCENE}, mcxshape, mcxview{$ENDIF}, mcxnewsession, mcxsource, mcxloadfile, mcxconfig,
mcxstoprun, runexec{$IFDEF USE_SYNAPSE}, runssh{$ENDIF} {$IFDEF WINDOWS}, sendkeys{$ENDIF};

{$R *.res}
Expand Down

0 comments on commit 1adb6c6

Please sign in to comment.