├── _config.yml ├── Images ├── Copy.png ├── Cut.png ├── Exit.png ├── Open.png ├── SCAD.png ├── Save.png ├── Undo.png ├── new.png ├── redo.png ├── About.png ├── Export.png ├── PathExe.png ├── Replace.png ├── Save As.png ├── Search.png ├── Timer.png ├── paste.png ├── Bookmark.png ├── Highlight.png ├── icon-alpha.png ├── senCilleSCAD.ico ├── senCilleSCAD.icns ├── senCilleSCAD 44x44.png └── senCilleSCAD 150x150.png ├── senCilleSCAD_Icns.icns ├── senCilleSCAD_Icns1.icns ├── senCilleSCAD_Icon2.ico ├── StyleBookCustomized.style ├── WebImages ├── Running Example.png └── senCilleSCAD running.PNG ├── .gitignore ├── senCilleSCAD.dpr ├── Installer └── senCilleSCAD Setup.iss ├── PRODUCT_CONSTS.INC ├── README.md ├── AboutsenCille.pas ├── senCille.XPlatformTools.pas ├── senCilleSCAD.deployproj ├── AboutsenCille.fmx ├── MainForm.pas └── senCilleSCAD.dproj /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-architect -------------------------------------------------------------------------------- /Images/Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/Copy.png -------------------------------------------------------------------------------- /Images/Cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/Cut.png -------------------------------------------------------------------------------- /Images/Exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/Exit.png -------------------------------------------------------------------------------- /Images/Open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/Open.png -------------------------------------------------------------------------------- /Images/SCAD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/SCAD.png -------------------------------------------------------------------------------- /Images/Save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/Save.png -------------------------------------------------------------------------------- /Images/Undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/Undo.png -------------------------------------------------------------------------------- /Images/new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/new.png -------------------------------------------------------------------------------- /Images/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/redo.png -------------------------------------------------------------------------------- /Images/About.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/About.png -------------------------------------------------------------------------------- /Images/Export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/Export.png -------------------------------------------------------------------------------- /Images/PathExe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/PathExe.png -------------------------------------------------------------------------------- /Images/Replace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/Replace.png -------------------------------------------------------------------------------- /Images/Save As.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/Save As.png -------------------------------------------------------------------------------- /Images/Search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/Search.png -------------------------------------------------------------------------------- /Images/Timer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/Timer.png -------------------------------------------------------------------------------- /Images/paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/paste.png -------------------------------------------------------------------------------- /Images/Bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/Bookmark.png -------------------------------------------------------------------------------- /Images/Highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/Highlight.png -------------------------------------------------------------------------------- /Images/icon-alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/icon-alpha.png -------------------------------------------------------------------------------- /Images/senCilleSCAD.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/senCilleSCAD.ico -------------------------------------------------------------------------------- /senCilleSCAD_Icns.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/senCilleSCAD_Icns.icns -------------------------------------------------------------------------------- /senCilleSCAD_Icns1.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/senCilleSCAD_Icns1.icns -------------------------------------------------------------------------------- /senCilleSCAD_Icon2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/senCilleSCAD_Icon2.ico -------------------------------------------------------------------------------- /Images/senCilleSCAD.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/senCilleSCAD.icns -------------------------------------------------------------------------------- /StyleBookCustomized.style: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/StyleBookCustomized.style -------------------------------------------------------------------------------- /Images/senCilleSCAD 44x44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/senCilleSCAD 44x44.png -------------------------------------------------------------------------------- /WebImages/Running Example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/WebImages/Running Example.png -------------------------------------------------------------------------------- /Images/senCilleSCAD 150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/Images/senCilleSCAD 150x150.png -------------------------------------------------------------------------------- /WebImages/senCilleSCAD running.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/senCille/senCilleSCAD/HEAD/WebImages/senCilleSCAD running.PNG -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /OSX32/Debug 2 | /Win32/Debug 3 | /Win64/Debug 4 | __history 5 | /bin/Install senCilleSCAD.exe 6 | *.stat 7 | /bin/senCilleSCAD.exe 8 | /bin/senCilleSCAD.rsm 9 | /info.plist.TemplateOSX.xml 10 | /*.tmp 11 | /*.local 12 | /*.identcache 13 | /*.res 14 | /Entitlement.TemplateOSX32.xml 15 | -------------------------------------------------------------------------------- /senCilleSCAD.dpr: -------------------------------------------------------------------------------- 1 | program senCilleSCAD; 2 | 3 | uses 4 | System.StartUpCopy, 5 | FMX.Forms, 6 | MainForm in 'MainForm.pas' {FView}, 7 | senCille.XPlatformTools in 'senCille.XPlatformTools.pas', 8 | AboutsenCille in 'AboutsenCille.pas'; 9 | 10 | {$R *.res} 11 | 12 | begin 13 | Application.Initialize; 14 | Application.CreateForm(TFView, FView); 15 | Application.Run; 16 | end. 17 | -------------------------------------------------------------------------------- /Installer/senCilleSCAD Setup.iss: -------------------------------------------------------------------------------- 1 | 2 | [Setup] 3 | OutputBaseFilename=Install senCilleSCAD 4 | AppName=senCilleSCAD 5 | AppVersion=1.0 6 | DefaultDirName={pf}\senCilleSCAD 7 | DefaultGroupName=senCilleSCAD 8 | UninstallDisplayIcon={app}\uninstall senCilleSCAD.exe 9 | Compression=lzma2 10 | SolidCompression=yes 11 | OutputDir=..\bin 12 | 13 | [Files] 14 | Source: "..\bin\senCilleSCAD.exe"; DestDir: "{app}" 15 | 16 | [Icons] 17 | Name: "{group}\senCilleSCAD"; Filename: "{app}\senCilleSCAD.exe" 18 | -------------------------------------------------------------------------------- /PRODUCT_CONSTS.INC: -------------------------------------------------------------------------------- 1 | {******************************************} 2 | { } 3 | { senCille v 1.0 } 4 | { Include file } 5 | { } 6 | { Copyright (c) 2015 } 7 | { by Juan Carlos Cilleruelo Gonzalo } 8 | { senCille.es } 9 | { } 10 | {******************************************} 11 | 12 | const SALT = '{E1D0658A-DD4E-4B41-8E22-A71EFFF446E2}'; 13 | MAX_ACCESSES = 500; {Half hundred by day} 14 | TEST_UNREG_DAYS = 10; 15 | RootHelpPath = 'https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/The_OpenSCAD_Language'; 16 | RootWebPath = 'http://sencille.es/'; 17 | 18 | MAJOR_VERSION = '01'; 19 | MINOR_VERSION = '00'; 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # senCilleSCAD 2 | IDE (Integrated Development Environment) for OpenSCAD. 3 | 4 | The current version has the basic functionalities. 5 | You can edit the source code with many common functions like copy and paste, undo/redo, save as, etc. 6 | 7 | The most input in this first version is that you can edit the source code and without doing anything the drawing is taking place in the OpenSCAD window. 8 | 9 | Another interesting input is that you can export the file to some formats, like PNG, STL or DXF. 10 | 11 | The next desirable things to add the application are the options of export the files previous modifications of something like the camera position, image size, or colour scheme. 12 | 13 | This part is not accomplished yet because in the current version of OpenSCAD these parameters are not working for Windows version. 14 | 15 | Another thing we want for the application in next version is a compilation for Mac OS X and another for Linux. 16 | -------------------------------------------------------------------------------- /AboutsenCille.pas: -------------------------------------------------------------------------------- 1 | unit AboutsenCille; 2 | 3 | interface 4 | 5 | uses System.Classes, System.UITypes, System.Math.Vectors, 6 | FMX.Viewport3D, FMX.StdCtrls, FMX.MaterialSources, FMX.Forms, FMX.Dialogs, FMX.Types, 7 | FMX.Objects, FMX.Effects, FMX.Forms3D, FMX.Controls3D, FMX.Controls, FMX.Ani, FMX.Layouts, 8 | FMX.Objects3D, FMX.Types3D, FMX.Materials, FMX.Controls.Presentation; 9 | 10 | type 11 | TAboutInvoicingView = class(TForm) 12 | Rectangle1: TRectangle; 13 | ShadowEffect1: TShadowEffect; 14 | BtnClose: TButton; 15 | Text1: TText; 16 | Viewport3D1: TViewport3D; 17 | Light1: TLight; 18 | GlowEffect1: TGlowEffect; 19 | GouraudMaterialSource1: TLightMaterialSource; 20 | GouraudMaterialSource2: TLightMaterialSource; 21 | Cube1: TCube; 22 | FloatAnimation1: TFloatAnimation; 23 | ColorAnimation1: TColorAnimation; 24 | Text3D1: TText3D; 25 | Panel1: TPanel; 26 | LabelIcons8: TLabel; 27 | Label6: TLabel; 28 | LabelWebSenCille: TLabel; 29 | Label1: TLabel; 30 | Label3: TLabel; 31 | Label2: TLabel; 32 | Label4: TLabel; 33 | procedure BtnCloseClick(Sender: TObject); 34 | procedure LabelIcons8Click(Sender: TObject); 35 | procedure LabelWebSenCilleClick(Sender: TObject); 36 | procedure FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); 37 | private 38 | function OpenURL(sCommand: string):Integer; 39 | public 40 | end; 41 | 42 | implementation 43 | 44 | {$R *.fmx} 45 | 46 | uses 47 | {$IFDEF ANDROID} 48 | FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText, 49 | Androidapi.JNI.Net, Androidapi.JNI.JavaTypes, 50 | {$ELSE} 51 | {$IFDEF IOS} 52 | iOSapi.Foundation, FMX.Helpers.iOS, 53 | {$ENDIF IOS} 54 | {$ENDIF ANDROID} 55 | 56 | {$IFDEF MSWINDOWS} 57 | Winapi.ShellAPI, Winapi.Windows, 58 | {$ELSEIF DEFINED(MACOS)} 59 | Posix.Stdlib, 60 | {$ENDIF} 61 | {IdURI,} System.SysUtils; 62 | 63 | procedure TAboutInvoicingView.BtnCloseClick(Sender: TObject); 64 | begin 65 | Close; 66 | end; 67 | 68 | procedure TAboutInvoicingView.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); 69 | begin 70 | case Key of 71 | vkF9 :begin BtnClose.SetFocus; BtnClose.OnClick(Self); Key := 0; end; 72 | end; 73 | end; 74 | 75 | procedure TAboutInvoicingView.LabelIcons8Click(Sender: TObject); 76 | begin 77 | OpenURL('https://icons8.com') 78 | end; 79 | 80 | procedure TAboutInvoicingView.LabelWebSenCilleClick(Sender: TObject); 81 | begin 82 | OpenURL('http://senCille.es'); 83 | end; 84 | 85 | function TAboutInvoicingView.OpenURL(sCommand: string):Integer; 86 | begin 87 | {$IF DEFINED(MACOS)} 88 | _system(PAnsiChar('open ' + '"' + AnsiString(sCommand) + '"')); 89 | {$ELSEIF DEFINED(MSWINDOWS)} 90 | Result := ShellExecute(0, 'OPEN', PChar(sCommand), '', '', SW_SHOWNORMAL); 91 | {$ELSEIF DEFINED(IOS)} 92 | Result := prvOpenURL(sCommand); 93 | {$ELSEIF DEFINED(ANDROID)} 94 | Result := prvOpenURL(sCommand); 95 | {$ENDIF} 96 | end; 97 | 98 | end. 99 | -------------------------------------------------------------------------------- /senCille.XPlatformTools.pas: -------------------------------------------------------------------------------- 1 | unit senCille.XPlatformTools; 2 | 3 | interface 4 | 5 | {$INCLUDE PRODUCT_CONSTS.INC} 6 | 7 | type 8 | TXPlatform = class 9 | private 10 | {$IF DEFINED(IOS)} 11 | class function prvOpenURL(const URL: string; const DisplayError: Boolean = False):Integer; 12 | {$ELSEIF DEFINED(ANDROID)} 13 | class function prvOpenURL(const URL: string; const DisplayError: Boolean = False):Integer; 14 | {$ENDIF} 15 | public 16 | class function OpenURL(sCommand: string):Integer; 17 | class procedure CallWebHelp(aHelpPath :string); 18 | class procedure CallWebPage(aHelpPath :string); 19 | end; 20 | 21 | implementation 22 | 23 | uses 24 | {$IFDEF ANDROID} 25 | FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText, 26 | Androidapi.JNI.Net, Androidapi.JNI.JavaTypes, 27 | {$ELSE} 28 | {$IFDEF IOS} 29 | iOSapi.Foundation, FMX.Helpers.iOS, 30 | {$ENDIF IOS} 31 | {$ENDIF ANDROID} 32 | 33 | {$IFDEF MSWINDOWS} 34 | Winapi.ShellAPI, Winapi.Windows, 35 | {$ELSEIF DEFINED(MACOS)} 36 | Posix.Stdlib, 37 | {$ENDIF} 38 | {IdURI,} System.SysUtils, Classes, FMX.Dialogs; 39 | 40 | class function TXPlatform.OpenURL(sCommand: string):Integer; 41 | begin 42 | {$IF DEFINED(MACOS)} 43 | _system(PAnsiChar('open ' + '"' + AnsiString(sCommand) + '"')); 44 | {$ELSEIF DEFINED(MSWINDOWS)} 45 | Result := ShellExecute(0, 'OPEN', PChar(sCommand), '', '', SW_SHOWNORMAL); 46 | {$ELSEIF DEFINED(IOS)} 47 | Result := prvOpenURL(sCommand); 48 | {$ELSEIF DEFINED(ANDROID)} 49 | Result := prvOpenURL(sCommand); 50 | {$ENDIF} 51 | end; 52 | 53 | {$IFDEF IOS} 54 | class function TXPlatform.prvOpenURL(const URL: string; const DisplayError: Boolean = False):Integer; 55 | var NSU :NSUrl; 56 | begin 57 | // iOS doesn't like spaces, so URL encode is important. 58 | NSU := StrToNSUrl(TIdURI.URLEncode(URL)); 59 | if SharedApplication.canOpenURL(NSU) then begin 60 | exit(SharedApplication.openUrl(NSU)); 61 | end 62 | else begin 63 | if DisplayError then begin 64 | ShowMessage('Error: Opening "' + URL + '" not supported.'); 65 | end; 66 | Exit(False); 67 | end; 68 | end; 69 | {$ENDIF} 70 | 71 | {$IFDEF ANDROID} 72 | class function TXPlatform.prvOpenURL(const URL: string; const DisplayError: Boolean = False):Integer; 73 | var Intent :JIntent; 74 | begin 75 | // There may be an issue with the geo: prefix and URLEncode. 76 | // will need to research 77 | Intent := TJIntent.JavaClass.Init(TJIntent.JavaClass.ACTION_VIEW, 78 | TJnet_Uri.JavaClass.Parse(StringToJString(TIdURI.URLEncode(URL)))); 79 | try 80 | SharedActivity.StartActivity(Intent); 81 | Exit(True); 82 | except 83 | on e: Exception do begin 84 | if DisplayError then ShowMessage('Error: ' + e.Message); 85 | Exit(False); 86 | end; 87 | end; 88 | end; 89 | {$ENDIF} 90 | 91 | class procedure TXPlatform.CallWebHelp(aHelpPath :string); 92 | begin 93 | TXPlatform.OpenURL(RootHelpPath + LowerCase(aHelpPath)); 94 | end; 95 | 96 | class procedure TXPlatform.CallWebPage(aHelpPath :string); 97 | begin 98 | TXPlatform.OpenURL(RootWebPath + LowerCase(aHelpPath)); 99 | end; 100 | 101 | end. 102 | -------------------------------------------------------------------------------- /senCilleSCAD.deployproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | senCilleSCAD\ 18 | PRODUCT_CONSTS.INC 19 | ProjectFile 20 | 0 21 | 22 | 23 | True 24 | 25 | 26 | senCilleSCAD\Assets\ 27 | Logo150x150.png 28 | UWP_DelphiLogo150 29 | 1 30 | 31 | 32 | True 33 | 34 | 35 | senCilleSCAD\Assets\ 36 | Logo44x44.png 37 | UWP_DelphiLogo44 38 | 1 39 | 40 | 41 | True 42 | 43 | 44 | senCilleSCAD\ 45 | senCilleSCAD.rsm 46 | DebugSymbols 47 | 0 48 | 49 | 50 | True 51 | 52 | 53 | senCilleSCAD\ 54 | senCilleSCAD.exe 55 | ProjectOutput 56 | 0 57 | 58 | 59 | True 60 | True 61 | 62 | 63 | 64 | 65 | senCilleSCAD.app\Contents\ 66 | Info.plist 67 | ProjectOSXInfoPList 68 | 1 69 | 70 | 71 | True 72 | 73 | 74 | senCilleSCAD.app\Contents\MacOS\ 75 | senCilleSCAD.rsm 76 | DebugSymbols 77 | 1 78 | 79 | 80 | True 81 | 82 | 83 | senCilleSCAD.app\Contents\Resources\ 84 | senCilleSCAD.icns 85 | ProjectOSXResource 86 | 1 87 | 88 | 89 | True 90 | 91 | 92 | senCilleSCAD.app\Contents\MacOS\ 93 | senCilleSCAD 94 | ProjectOutput 95 | 1 96 | 97 | 98 | True 99 | True 100 | 101 | 102 | senCilleSCAD.app\Contents\MacOS\ 103 | libcgsqlite3.dylib 104 | DependencyModule 105 | 1 106 | 107 | 108 | True 109 | 110 | 111 | senCilleSCAD.app\Contents\MacOS\ 112 | libcgunwind.1.0.dylib 113 | DependencyModule 114 | 1 115 | 116 | 117 | True 118 | 119 | 120 | senCilleSCAD.app\Contents\Resources\StartUp\ 121 | PRODUCT_CONSTS.INC 122 | ProjectFile 123 | 0 124 | 125 | 126 | True 127 | 128 | 129 | senCilleSCAD.app\..\ 130 | senCilleSCAD.entitlements 131 | ProjectOSXEntitlements 132 | 1 133 | 134 | 135 | True 136 | 137 | 138 | 139 | 140 | 141 | senCilleSCAD.app\ 142 | libcgunwind.1.0.dylib 143 | DependencyModule 144 | 1 145 | 146 | 147 | True 148 | 149 | 150 | senCilleSCAD.app\ 151 | libPCRE.dylib 152 | DependencyModule 153 | 1 154 | 155 | 156 | True 157 | 158 | 159 | 160 | -------------------------------------------------------------------------------- /AboutsenCille.fmx: -------------------------------------------------------------------------------- 1 | object AboutInvoicingView: TAboutInvoicingView 2 | Left = 497 3 | Top = 148 4 | BorderIcons = [biSystemMenu] 5 | BorderStyle = Single 6 | Caption = 'About senCille.es' 7 | ClientHeight = 429 8 | ClientWidth = 402 9 | Position = DesktopCenter 10 | FormFactor.Width = 2020 11 | FormFactor.Height = 1273 12 | FormFactor.Devices = [Desktop] 13 | FormFamily = 'TForm' 14 | OnKeyDown = FormKeyDown 15 | Left = 497 16 | Top = 148 17 | DesignerMasterStyle = 1 18 | object Rectangle1: TRectangle 19 | Align = Client 20 | Fill.Color = xDC065B79 21 | HitTest = False 22 | Margins.Left = 9.000000000000000000 23 | Margins.Top = 9.000000000000000000 24 | Margins.Right = 15.000000000000000000 25 | Margins.Bottom = 15.000000000000000000 26 | Size.Width = 378.000000000000000000 27 | Size.Height = 405.000000000000000000 28 | Size.PlatformDefault = False 29 | Stroke.Color = claWhite 30 | Stroke.Thickness = 3.000000000000000000 31 | XRadius = 9.000000000000000000 32 | YRadius = 9.000000000000000000 33 | object ShadowEffect1: TShadowEffect 34 | Distance = 3.000000000000000000 35 | Direction = 45.000000000000000000 36 | Softness = 0.300000011920929000 37 | Opacity = 0.600000023841857900 38 | ShadowColor = claBlack 39 | end 40 | object BtnClose: TButton 41 | Position.X = 267.000000000000000000 42 | Position.Y = 352.000000000000000000 43 | Size.Width = 80.000000000000000000 44 | Size.Height = 22.000000000000000000 45 | Size.PlatformDefault = False 46 | TabOrder = 0 47 | Text = 'Cerrar' 48 | OnClick = BtnCloseClick 49 | end 50 | object Text1: TText 51 | HitTest = False 52 | Position.X = 16.000000000000000000 53 | Position.Y = 16.000000000000000000 54 | Size.Width = 337.000000000000000000 55 | Size.Height = 81.000000000000000000 56 | Size.PlatformDefault = False 57 | Text = 'Manufacturing Software' 58 | TextSettings.Font.Size = 33.000000000000000000 59 | TextSettings.Font.StyleExt = {00070000000000000004000000} 60 | TextSettings.FontColor = xFFDDDDDD 61 | object Panel1: TPanel 62 | Position.X = 7.000000000000000000 63 | Position.Y = 221.000000000000000000 64 | Size.Width = 234.000000000000000000 65 | Size.Height = 145.000000000000000000 66 | Size.PlatformDefault = False 67 | TabOrder = 0 68 | object LabelIcons8: TLabel 69 | Cursor = crHandPoint 70 | StyledSettings = [Family, Size] 71 | HitTest = True 72 | Position.X = 10.000000000000000000 73 | Position.Y = 114.000000000000000000 74 | Size.Width = 207.000000000000000000 75 | Size.Height = 16.000000000000000000 76 | Size.PlatformDefault = False 77 | TextSettings.Font.StyleExt = {04040000000000000004000000} 78 | TextSettings.FontColor = claBlue 79 | TextSettings.HorzAlign = Center 80 | TextSettings.WordWrap = False 81 | Text = 'Icons Provided by Icons8' 82 | OnClick = LabelIcons8Click 83 | end 84 | object Label6: TLabel 85 | Position.X = 43.000000000000000000 86 | Position.Y = 7.000000000000000000 87 | Size.Width = 128.000000000000000000 88 | Size.Height = 16.000000000000000000 89 | Size.PlatformDefault = False 90 | TextSettings.WordWrap = False 91 | Text = 'Calle de las Tercias, 19'#13#10 92 | end 93 | object LabelWebSenCille: TLabel 94 | Cursor = crHandPoint 95 | StyledSettings = [Family, Size] 96 | HitTest = True 97 | Position.X = 66.000000000000000000 98 | Position.Y = 88.000000000000000000 99 | Size.Width = 95.000000000000000000 100 | Size.Height = 16.000000000000000000 101 | Size.PlatformDefault = False 102 | TextSettings.Font.StyleExt = {04040000000000000004000000} 103 | TextSettings.FontColor = claBlue 104 | TextSettings.WordWrap = False 105 | Text = 'www.sencille.es' 106 | OnClick = LabelWebSenCilleClick 107 | end 108 | object Label1: TLabel 109 | Position.X = 35.000000000000000000 110 | Position.Y = 20.000000000000000000 111 | Size.Width = 182.000000000000000000 112 | Size.Height = 23.000000000000000000 113 | Size.PlatformDefault = False 114 | TextSettings.WordWrap = False 115 | Text = '47300 PE'#209'AFIEL (Valladolid)' 116 | end 117 | object Label3: TLabel 118 | Position.X = 59.000000000000000000 119 | Position.Y = 43.000000000000000000 120 | Size.Width = 118.000000000000000000 121 | Size.Height = 16.000000000000000000 122 | Size.PlatformDefault = False 123 | TextSettings.WordWrap = False 124 | Text = 'Phone. 607 880 970' 125 | Visible = False 126 | end 127 | object Label2: TLabel 128 | Position.X = 52.000000000000000000 129 | Position.Y = 46.000000000000000000 130 | Size.Width = 108.000000000000000000 131 | Size.Height = 32.000000000000000000 132 | Size.PlatformDefault = False 133 | TextSettings.WordWrap = False 134 | Text = '+34 607 880 970' 135 | end 136 | object Label4: TLabel 137 | Position.X = 49.000000000000000000 138 | Position.Y = 72.000000000000000000 139 | Text = ' +34 983 880 970' 140 | end 141 | end 142 | end 143 | object Viewport3D1: TViewport3D 144 | Color = claNull 145 | HitTest = False 146 | Position.X = 16.000000000000000000 147 | Position.Y = 80.000000000000000000 148 | Size.Width = 337.000000000000000000 149 | Size.Height = 169.000000000000000000 150 | Size.PlatformDefault = False 151 | object Light1: TLight 152 | Color = claWhite 153 | LightType = Directional 154 | SpotCutOff = 180.000000000000000000 155 | Position.X = -4.972735404968262000 156 | Position.Y = -8.621065139770508000 157 | Position.Z = 0.000001339281197943 158 | RotationAngle.X = 24.660659790039060000 159 | RotationAngle.Z = 22.268035888671880000 160 | Width = 1.000000000000000000 161 | Height = 1.000000000000000000 162 | Depth = 1.000000000000000000 163 | Quanternion = 164 | '(-0.209528207778931,-0.0412370041012764,-0.188650131225586,0.958' + 165 | '544969558716)' 166 | end 167 | object GlowEffect1: TGlowEffect 168 | Softness = 0.400000005960464500 169 | GlowColor = claGold 170 | Opacity = 0.899999976158142100 171 | end 172 | object Cube1: TCube 173 | Position.X = -0.386544138193130500 174 | Position.Y = 1.010106325149536000 175 | Position.Z = 0.000001636869001231 176 | RotationAngle.X = 77.204421997070310000 177 | RotationAngle.Y = 0.709136962890625000 178 | RotationAngle.Z = 28.656188964843750000 179 | Width = 0.143776848912239100 180 | Height = 0.589947819709777800 181 | Depth = 0.030569851398468020 182 | MaterialSource = GouraudMaterialSource1 183 | Quanternion = 184 | '(0.601072192192078,-0.164632141590118,-0.0964489653706551,0.7760' + 185 | '83469390869)' 186 | object FloatAnimation1: TFloatAnimation 187 | AnimationType = InOut 188 | AutoReverse = True 189 | Enabled = True 190 | Duration = 4.000000000000000000 191 | Interpolation = Back 192 | Loop = True 193 | PropertyName = 'RotationAngle.Y' 194 | StartValue = 0.000000000000000000 195 | StopValue = 360.000000000000000000 196 | end 197 | object ColorAnimation1: TColorAnimation 198 | Duration = 0.200000002980232200 199 | PropertyName = 'Material.Diffuse' 200 | StartValue = xFFD49B0B 201 | StopValue = claRed 202 | Trigger = 'IsMouseOver=true' 203 | TriggerInverse = 'IsMouseOver=false' 204 | end 205 | object Text3D1: TText3D 206 | Position.X = 1.112263679504395000 207 | Position.Y = -0.502195060253143300 208 | Position.Z = 0.778045356273651100 209 | RotationAngle.X = 24.555427551269530000 210 | RotationAngle.Y = 341.495056152343800000 211 | RotationAngle.Z = 20.262855529785160000 212 | Width = 15.995641708374020000 213 | Height = 4.061948299407959000 214 | Depth = 0.997694492340087900 215 | HitTest = False 216 | Font.Size = 3.000000000000000000 217 | Font.StyleExt = {00070000000000000004000000} 218 | Text = 'senCille' 219 | Flatness = 1.000000000000000000 220 | Sides = [Front, Back, Shaft] 221 | MaterialBackSource = GouraudMaterialSource2 222 | MaterialShaftSource = GouraudMaterialSource2 223 | MaterialSource = GouraudMaterialSource2 224 | Quanternion = 225 | '(-0.730361938476563,-0.124543741345406,0.188292741775513,0.64467' + 226 | '5731658936)' 227 | end 228 | end 229 | end 230 | end 231 | object GouraudMaterialSource1: TLightMaterialSource 232 | Diffuse = claTomato 233 | Ambient = xFF202020 234 | Emissive = claNull 235 | Specular = xFF606060 236 | Shininess = 30 237 | Left = 314 238 | Top = 62 239 | end 240 | object GouraudMaterialSource2: TLightMaterialSource 241 | Diffuse = claCornflowerblue 242 | Ambient = xFF202020 243 | Emissive = claNull 244 | Specular = claCoral 245 | Shininess = 30 246 | Left = 82 247 | Top = 80 248 | end 249 | end 250 | -------------------------------------------------------------------------------- /MainForm.pas: -------------------------------------------------------------------------------- 1 | unit MainForm; 2 | 3 | interface 4 | 5 | uses 6 | System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, 7 | FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, FMX.TMSBaseControl, 8 | FMX.TMSMemo, FMX.Controls.Presentation, FMX.Menus, FMX.Edit, FMX.Layouts, FMX.Objects, 9 | FMX.TMSMemoStyles, FMX.TMSMemoDialogs, FMX.ListBox; 10 | 11 | type 12 | TOpenSCADStyler = class(TTMSFMXMemoCustomStyler) 13 | constructor Create(AOwner: TComponent); override; 14 | end; 15 | 16 | TFView = class(TForm) 17 | Header: TToolBar; 18 | Footer: TToolBar; 19 | HeaderLabel: TLabel; 20 | MainMenu: TMainMenu; 21 | MenuItemFile: TMenuItem; 22 | MenuItemSearch: TMenuItem; 23 | MenuItemNew: TMenuItem; 24 | Separator01: TMenuItem; 25 | MenuItemOpen: TMenuItem; 26 | MenuItemSave: TMenuItem; 27 | MenuItemSaveAs: TMenuItem; 28 | Separator02: TMenuItem; 29 | MenuItemExit: TMenuItem; 30 | MenuItemFind: TMenuItem; 31 | MenuItemReplace: TMenuItem; 32 | MenuItemRun: TMenuItem; 33 | MenuItemRunRun: TMenuItem; 34 | ToolBar: TToolBar; 35 | BtnLoadFromFile: TSpeedButton; 36 | Image4: TImage; 37 | BtnSaveToFile: TSpeedButton; 38 | Image5: TImage; 39 | BtnCut: TSpeedButton; 40 | Image6: TImage; 41 | BtnCopy: TSpeedButton; 42 | Image7: TImage; 43 | BtnPaste: TSpeedButton; 44 | Image8: TImage; 45 | BtnUndo: TSpeedButton; 46 | Image9: TImage; 47 | BtnRedo: TSpeedButton; 48 | Image10: TImage; 49 | LayoutSeparator1: TLayout; 50 | BtnBookmark: TSpeedButton; 51 | Image11: TImage; 52 | LayoutSeparator2: TLayout; 53 | BtnSearch: TSpeedButton; 54 | Image12: TImage; 55 | Layout2: TLayout; 56 | EditHighlight: TEdit; 57 | BtnHighlight: TSpeedButton; 58 | Image13: TImage; 59 | DialogSave: TSaveDialog; 60 | DialogOpen: TOpenDialog; 61 | DialogSearch: TTMSFMXMemoFindDialog; 62 | BtnRun: TSpeedButton; 63 | Image1: TImage; 64 | BtnLaunchOpenSCAD: TSpeedButton; 65 | DialogFindAndReplace: TTMSFMXMemoFindAndReplaceDialog; 66 | CheckBoxAutoSave: TCheckBox; 67 | CheckBoxAutoExecute: TCheckBox; 68 | TimerExecute: TTimer; 69 | BtnChangeTimerInterval: TSpeedButton; 70 | Image2: TImage; 71 | Layout1: TLayout; 72 | Layout3: TLayout; 73 | Layout4: TLayout; 74 | MenuItemAbout: TMenuItem; 75 | ExpanderExecuteOptions: TExpander; 76 | TextEditor: TTMSFMXMemo; 77 | DialogGetOpenSCADPath: TOpenDialog; 78 | CheckBoxApplyViewAll: TCheckBox; 79 | PathDialog: TOpenDialog; 80 | BtnPathToExe: TSpeedButton; 81 | Image3: TImage; 82 | LabelExePath: TLabel; 83 | ComboBoxFileType: TComboBox; 84 | CheckBoxAndOpen: TCheckBox; 85 | BtnExport: TSpeedButton; 86 | Image14: TImage; 87 | EditFileName: TEdit; 88 | LabelExport: TLabel; 89 | StyleBookCustomized: TStyleBook; 90 | procedure BtnLoadFromFileClick(Sender: TObject); 91 | procedure BtnSaveToFileClick(Sender: TObject); 92 | procedure BtnUndoClick(Sender: TObject); 93 | procedure BtnRedoClick(Sender: TObject); 94 | procedure BtnPasteClick(Sender: TObject); 95 | procedure BtnCutClick(Sender: TObject); 96 | procedure BtnCopyClick(Sender: TObject); 97 | procedure BtnSearchClick(Sender: TObject); 98 | procedure BtnBookmarkClick(Sender: TObject); 99 | procedure BtnHighlightClick(Sender: TObject); 100 | procedure FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); 101 | procedure BtnRunClick(Sender: TObject); 102 | procedure FormCreate(Sender: TObject); 103 | procedure FormDestroy(Sender: TObject); 104 | procedure MenuItemReplaceClick(Sender: TObject); 105 | procedure MenuItemSaveAsClick(Sender: TObject); 106 | procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); 107 | procedure MenuItemNewClick(Sender: TObject); 108 | procedure MenuItemExitClick(Sender: TObject); 109 | procedure TextEditorKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); 110 | procedure CheckBoxAutoExecuteChange(Sender: TObject); 111 | procedure BtnChangeTimerIntervalClick(Sender: TObject); 112 | procedure MenuItemAboutClick(Sender: TObject); 113 | procedure BtnPathToExeClick(Sender: TObject); 114 | procedure EditFileNameDblClick(Sender: TObject); 115 | procedure BtnExportClick(Sender: TObject); 116 | private 117 | const 118 | MainCaption = 'senCilleSCAD IDE'; 119 | TextNotPath = 'Path to exe not informed'; 120 | var 121 | FFileName :string; 122 | FTempFileName :string; 123 | FOpenSCADPath :string; 124 | FINIFileName :string; 125 | FTimerInterval :Integer; 126 | FOpenSCADStyler :TOpenSCADStyler; 127 | FPathToExe :string; 128 | procedure SetFileName(Value :string); 129 | function GetOpenSCADPath:string; 130 | procedure CallWebHelp; 131 | procedure CreateDefaultConfigFile; 132 | procedure SaveConfiguration; 133 | function CheckExtension(AFileName :string):string; 134 | function OpenURL(sCommand: string):Integer; 135 | procedure SetPathToExe(Value :string); 136 | public 137 | property FileName :string read FFileName write SetFileName; 138 | property OpenSCADPath :string read GetOpenSCADPath write FOpenSCADPath; 139 | property PathToExe :string read FPathToExe write SetPathToExe; 140 | end; 141 | 142 | var 143 | FView: TFView; 144 | 145 | implementation 146 | 147 | {$R *.fmx} 148 | 149 | uses {$IFDEF ANDROID} 150 | FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText, 151 | Androidapi.JNI.Net, Androidapi.JNI.JavaTypes, 152 | {$ELSE} 153 | {$IFDEF IOS} 154 | iOSapi.Foundation, FMX.Helpers.iOS, 155 | {$ENDIF IOS} 156 | {$ENDIF ANDROID} 157 | 158 | {$IFDEF MSWINDOWS} 159 | Winapi.ShellAPI, Winapi.Windows, 160 | {$ELSEIF DEFINED(MACOS)} 161 | Posix.Stdlib, 162 | {$ENDIF} 163 | {IdURI,} 164 | System.IOUtils, System.INIFiles, 165 | FMX.DialogService, FMX.DialogService.Async, 166 | AboutsenCille; 167 | {} 168 | constructor TOpenSCADStyler.Create(AOwner: TComponent); 169 | var itm :TElementStyle; 170 | begin 171 | inherited; 172 | BlockStart := '{'; 173 | BlockEnd := '}'; 174 | LineComment := '//'; 175 | MultiCommentLeft := '/*'; 176 | MultiCommentRight := '*/'; 177 | CommentStyle.TextColor := TAlphaColorRec.Navy; 178 | CommentStyle.BkColor := TAlphaColorRec.Null; 179 | CommentStyle.Style := [TFontStyle.fsItalic]; 180 | NumberStyle.TextColor := TAlphaColorRec.Fuchsia; 181 | NumberStyle.BkColor := TAlphaColorRec.Null ; 182 | NumberStyle.Style := [TFontStyle.fsBold] ; 183 | 184 | itm := AllStyles.Add; 185 | itm.Info := 'OpenSCAD'; 186 | itm.FontColor := TAlphaColorRec.Green; 187 | itm.Font.Style := [TFontStyle.fsBold]; 188 | {--- Syntax ---} 189 | itm.KeyWords.Add('var' ); 190 | itm.KeyWords.Add('value' ); 191 | itm.KeyWords.Add('module' ); 192 | itm.KeyWords.Add('function'); 193 | itm.KeyWords.Add('include' ); 194 | itm.KeyWords.Add('use' ); 195 | {--- 2D ---} 196 | itm.KeyWords.Add('circle' ); 197 | itm.KeyWords.Add('square' ); 198 | itm.KeyWords.Add('polygon' ); 199 | itm.KeyWords.Add('text' ); 200 | {--- 3D ---} 201 | itm.KeyWords.Add('sphere' ); 202 | itm.KeyWords.Add('cube' ); 203 | itm.KeyWords.Add('cylinder' ); 204 | itm.KeyWords.Add('polyhedron'); 205 | {--- Transformations ---} 206 | itm.KeyWords.Add('translate'); 207 | itm.KeyWords.Add('rotate' ); 208 | itm.KeyWords.Add('scale' ); 209 | itm.KeyWords.Add('resize' ); 210 | itm.KeyWords.Add('mirror' ); 211 | itm.KeyWords.Add('mulmatrix'); 212 | itm.KeyWords.Add('color' ); 213 | itm.KeyWords.Add('offset' ); 214 | itm.KeyWords.Add('hull' ); 215 | itm.KeyWords.Add('minkowsky'); 216 | {--- Boolean operations ---} 217 | itm.KeyWords.Add('union' ); 218 | itm.KeyWords.Add('difference' ); 219 | itm.KeyWords.Add('intersection'); 220 | {--- Mathematical ---} 221 | itm.KeyWords.Add('abs' ); 222 | itm.KeyWords.Add('sign' ); 223 | itm.KeyWords.Add('sin' ); 224 | itm.KeyWords.Add('cos' ); 225 | itm.KeyWords.Add('tan' ); 226 | itm.KeyWords.Add('acos' ); 227 | itm.KeyWords.Add('asin' ); 228 | itm.KeyWords.Add('atan' ); 229 | itm.KeyWords.Add('atan2'); 230 | itm.KeyWords.Add('floor'); 231 | itm.KeyWords.Add('round'); 232 | itm.KeyWords.Add('cell' ); 233 | itm.KeyWords.Add('ln' ); 234 | itm.KeyWords.Add('len' ); 235 | itm.KeyWords.Add('let' ); 236 | itm.KeyWords.Add('log' ); 237 | itm.KeyWords.Add('pow' ); 238 | itm.KeyWords.Add('sqrt' ); 239 | itm.KeyWords.Add('exp' ); 240 | itm.KeyWords.Add('rands'); 241 | itm.KeyWords.Add('min' ); 242 | itm.KeyWords.Add('max' ); 243 | //itm.KeyWords.Add(' 244 | //itm.KeyWords.Add(' 245 | //itm.KeyWords.Add(' 246 | //itm.KeyWords.Add(' 247 | 248 | (*item 249 | Font.Family = 'Courier New' 250 | Font.Size = 8.000000000000000000 251 | FontColor = claBlue 252 | BGColor = claNull 253 | StyleType = stBracket 254 | BracketStart = #39 255 | BracketEnd = #39 256 | Info = 'Simple Quote' 257 | end 258 | item 259 | Font.Family = 'Courier New' 260 | Font.Size = 8.000000000000000000 261 | FontColor = claBlue 262 | BGColor = claNull 263 | StyleType = stBracket 264 | BracketStart = '"' 265 | BracketEnd = '"' 266 | Info = 'Double Quote' 267 | end 268 | item 269 | Font.Family = 'Courier New' 270 | Font.Size = 8.000000000000000000 271 | FontColor = claRed 272 | BGColor = claNull 273 | StyleType = stSymbol 274 | BracketStart = #0 275 | BracketEnd = #0 276 | Symbols = ' ,;:.()[]=-*/^%&^<>|!~'#13#10 277 | Info = 'Symbols Delimiters' 278 | end 279 | item 280 | CommentLeft = '/*' 281 | CommentRight = '*/' 282 | Font.Family = 'Courier New' 283 | Font.Size = 9.000000000000000000 284 | FontColor = claBlack 285 | BGColor = claNull 286 | StyleType = stKeyword 287 | BracketStart = #0 288 | BracketEnd = #0 289 | Info = 'Open SCAD' 290 | end>*) 291 | HintParameter.TextColor := TAlphaColorRec.Black; 292 | HintParameter.BkColor := TAlphaColorRec.Yellow; 293 | HintParameter.HintCharStart := '('; 294 | HintParameter.HintCharEnd := ')'; 295 | HintParameter.HintCharDelimiter := ';'; 296 | HintParameter.HintClassDelimiter := '.'; 297 | HintParameter.HintCharWriteDelimiter := ','; 298 | HexIdentifier := '0x' ; 299 | Description := 'Open SCAD Styler'; 300 | Filter := 'Open SCAD|*.scad'; 301 | DefaultExtension := '.scad' ; 302 | StylerName := 'Open SCAD Styler'; 303 | Extensions := 'scad' ; 304 | (*RegionDefinitions = < 305 | item 306 | Identifier = 'namespace' 307 | RegionStart = '{' 308 | RegionEnd = '}' 309 | RegionType = rtClosed 310 | ShowComments = False 311 | end 312 | item 313 | Identifier = '#region' 314 | RegionStart = '#region' 315 | RegionEnd = '#endregion' 316 | RegionType = rtClosed 317 | ShowComments = False 318 | end 319 | item 320 | Identifier = 'public' 321 | RegionStart = '{' 322 | RegionEnd = '}' 323 | RegionType = rtClosed 324 | ShowComments = False 325 | end 326 | item 327 | Identifier = 'private' 328 | RegionStart = '{' 329 | RegionEnd = '}' 330 | RegionType = rtClosed 331 | ShowComments = False 332 | end>*) 333 | end; 334 | 335 | procedure TFView.FormCreate(Sender: TObject); 336 | var INIFile :TIniFile; 337 | ExeName :string; 338 | Extension :string; 339 | AppName :string; 340 | AppFolder :string; 341 | FileType :string; 342 | begin 343 | FTimerInterval := 1500; 344 | FView.TimerExecute.Enabled := False; 345 | FView.ExpanderExecuteOptions.IsExpanded := False; 346 | FView.LabelExePath.Text := TextNotPath; 347 | FPathToExe := ''; 348 | FView.TextEditor.Font.Family := 'Courier New'; 349 | FView.TextEditor.Font.Size := 12; 350 | 351 | AppFolder := TPath.GetDirectoryName(ParamStr(0)); 352 | ExeName := ExtractFileName(ParamStr(0)); 353 | Extension := ExtractFileExt (ParamStr(0)); 354 | AppName := Copy(ExeName, 1, Length(ExeName) - Length(Extension)); 355 | FINIFileName := GetEnvironmentVariable('APPDATA')+PathDelim+AppName+'.ini'; 356 | 357 | {--- Things in development ---} 358 | FView.CheckBoxApplyViewAll.Visible := False; 359 | FView.CheckBoxAndOpen.Visible := False; 360 | {-----------------------------} 361 | 362 | if not TFile.Exists(FINIFileName) then begin 363 | CreateDefaultConfigFile; 364 | end; 365 | 366 | INIFile := TIniFile.Create(FINIFileName); 367 | try 368 | {OPTIONS} 369 | OpenSCADPath := INIFile.ReadString('OPTIONS', 'OpenSCADPath', ''); 370 | FView.CheckBoxAutoSave.IsChecked := INIFile.ReadString('OPTIONS', 'AutoSave', 'N') = 'Y'; 371 | FView.CheckBoxAutoExecute.IsChecked := INIFile.ReadString('OPTIONS', 'AutoExecute', 'N') = 'Y'; 372 | FileName := INIFile.ReadString('OPTIONS', 'LastFile', ''); 373 | if FileName <> '' then begin 374 | if TFile.Exists(FileName) then begin 375 | FView.TextEditor.Lines.LoadFromFile(FileName); 376 | FView.TextEditor.SyntaxStyles := FOpenSCADStyler; 377 | FView.TextEditor.UseStyler := True; 378 | end; 379 | end; 380 | FTimerInterval := INIFile.ReadInteger('OPTIONS', 'TimerInterval', 1500); 381 | 382 | PathToExe := INIFile.ReadString('EXECUTE', 'PathToExe', ''); 383 | FView.CheckBoxApplyViewAll.IsChecked := INIFile.ReadString('EXECUTE', 'ApplyViewAll', 'Y') = 'Y'; 384 | 385 | FView.CheckBoxAndOpen.IsChecked := INIFile.ReadString('EXPORT', 'AndOpen', 'Y') = 'Y'; 386 | FView.EditFileName.Text := INIFile.ReadString('EXPORT', 'FileName', ''); 387 | FileType := INIFile.ReadString('EXPORT', 'FileType', ''); 388 | if FileType = 'PNG' then FView.ComboBoxFileType.ItemIndex := 0 else 389 | if FileType = 'STL' then FView.ComboBoxFileType.ItemIndex := 1 else 390 | if FileType = 'OFF' then FView.ComboBoxFileType.ItemIndex := 2 else 391 | if FileType = 'DXF' then FView.ComboBoxFileType.ItemIndex := 3 else 392 | if FileType = 'CSG' then FView.ComboBoxFileType.ItemIndex := 4 393 | else FView.ComboBoxFileType.ItemIndex := -1; 394 | finally 395 | INIFile.Free; 396 | end; 397 | {--- Editor Configuration ---} 398 | FView.TextEditor.ActiveLineSettings.ActiveLineAtCursor := True; 399 | FView.TextEditor.ActiveLineSettings.ShowActiveLine := True; 400 | FView.TextEditor.ActiveLineSettings.ShowActiveLineIndicator := True; 401 | FView.TextEditor.AutoIndent := True; 402 | FView.TextEditor.DelErase := True; 403 | FView.TextEditor.SmartTabs := True; 404 | FView.TextEditor.WantTab := True; 405 | FView.TextEditor.ShowRightMargin := False; 406 | {---} 407 | FOpenSCADStyler := TOpenSCADStyler.Create(FView); 408 | FView.TextEditor.SyntaxStyles := FOpenSCADStyler; 409 | FView.TextEditor.UseStyler := True; 410 | end; 411 | 412 | procedure TFView.SaveConfiguration; 413 | var INIFile :TIniFile; 414 | lBool :string; 415 | begin 416 | 417 | INIFile := TIniFile.Create(FINIFileName); 418 | try 419 | if FView.CheckBoxAutoSave.IsChecked then 420 | lBool := 'Y' 421 | else lBool := 'N'; 422 | INIFile.WriteString('OPTIONS', 'AutoSave', lBool); 423 | 424 | if FView.CheckBoxAutoExecute.IsChecked then 425 | lBool := 'Y' 426 | else lBool := 'N'; 427 | INIFile.WriteString('OPTIONS', 'AutoExecute', lBool); 428 | 429 | INIFile.WriteString('OPTIONS', 'LastFile', FileName); 430 | INIFile.WriteString('OPTIONS', 'LastFile', FileName); 431 | 432 | INIFile.WriteInteger('OPTIONS', 'TimerInterval', FTimerInterval); 433 | 434 | {-----} 435 | 436 | INIFile.WriteString('EXECUTE', 'PathToExe', PathToExe); 437 | 438 | if FView.CheckBoxApplyViewAll.IsChecked then 439 | lBool := 'Y' 440 | else lBool := 'N'; 441 | INIFile.WriteString('EXECUTE', 'ApplyViewAll', lBool); 442 | 443 | if FView.CheckBoxAndOpen.IsChecked then 444 | lBool := 'Y' 445 | else lBool := 'N'; 446 | INIFile.WriteString('EXPORT', 'AndOpen', lBool); 447 | 448 | INIFile.WriteString('EXPORT', 'FileName', EditFileName.Text); 449 | 450 | case FView.ComboBoxFileType.ItemIndex of 451 | 0 :INIFile.WriteString('EXPORT', 'FileType', 'PNG'); 452 | 1 :INIFile.WriteString('EXPORT', 'FileType', 'STL'); 453 | 2 :INIFile.WriteString('EXPORT', 'FileType', 'OFF'); 454 | 3 :INIFile.WriteString('EXPORT', 'FileType', 'DXF'); 455 | 4 :INIFile.WriteString('EXPORT', 'FileType', 'CSG'); 456 | else INIFile.WriteString('EXPORT', 'FileType', '' ); 457 | end; 458 | 459 | INIFile.UpdateFile; 460 | finally 461 | INIFile.Free; 462 | end; 463 | end; 464 | 465 | procedure TFView.SetFileName(Value :string); 466 | begin 467 | if FFileName <> Value then begin 468 | FFileName := Value; 469 | FView.Caption := ExtractFileName(Value) + ' ('+MainCaption+')'; 470 | end; 471 | end; 472 | 473 | procedure TFView.SetPathToExe(Value: string); 474 | begin 475 | if FPathToExe <> Value then begin 476 | FPathToExe := Value; 477 | LabelExePath.Text := Value; 478 | end; 479 | end; 480 | 481 | procedure TFView.BtnPathToExeClick(Sender: TObject); 482 | begin 483 | if FView.PathDialog.Execute then begin 484 | PathToExe := FView.PathDialog.FileName; 485 | end; 486 | end; 487 | 488 | procedure TFView.TextEditorKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); 489 | begin 490 | FView.TimerExecute.Enabled := False; 491 | FView.TimerExecute.Interval := FTimerInterval; 492 | FView.TimerExecute.Enabled := True; 493 | end; 494 | 495 | procedure TFView.BtnBookmarkClick(Sender: TObject); 496 | begin 497 | FView.TextEditor.Bookmark[FView.TextEditor.CurY] := not FView.TextEditor.Bookmark[FView.TextEditor.CurY]; 498 | end; 499 | 500 | procedure TFView.BtnChangeTimerIntervalClick(Sender: TObject); 501 | var Value :Integer; 502 | begin 503 | TDialogServiceAsync.InputQuery('Interval Between Executions', ['Miliseconds'], [IntToStr(FTimerInterval)], 504 | procedure(const AResult: TModalResult; const AValues: array of string) 505 | begin 506 | if AResult = mrOk then begin 507 | if TryStrToInt(AValues[0], Value) then 508 | FTimerInterval := Value; 509 | end; 510 | end 511 | ); 512 | end; 513 | 514 | procedure TFView.BtnCopyClick(Sender: TObject); 515 | begin 516 | FView.TextEditor.CopyToClipboard; 517 | end; 518 | 519 | procedure TFView.BtnCutClick(Sender: TObject); 520 | begin 521 | FView.TextEditor.CutToClipboard; 522 | end; 523 | 524 | {$IFDEF MSWINDOWS} 525 | // Runs application and returns PID. 0 if failed. 526 | function RunApplication(const AExecutableFile, AParameters: string; const AShowOption: Integer = SW_SHOWNORMAL): Integer; 527 | var _SEInfo: TShellExecuteInfo; 528 | begin 529 | Result := 0; 530 | if not FileExists(AExecutableFile) then 531 | Exit; 532 | 533 | FillChar(_SEInfo, SizeOf(_SEInfo), 0); 534 | _SEInfo.cbSize := SizeOf(TShellExecuteInfo); 535 | _SEInfo.fMask := SEE_MASK_NOCLOSEPROCESS; 536 | // _SEInfo.Wnd := Application.Handle; 537 | _SEInfo.lpFile := PChar(AExecutableFile); 538 | _SEInfo.lpParameters := PChar(AParameters); 539 | _SEInfo.nShow := AShowOption; 540 | if ShellExecuteEx(@_SEInfo) then begin 541 | WaitForInputIdle(_SEInfo.hProcess, 3000); 542 | Result := GetProcessID(_SEInfo.hProcess); 543 | end; 544 | end; 545 | {$ENDIF} 546 | 547 | procedure TFView.BtnExportClick(Sender: TObject); 548 | var Parameters :string; 549 | NewFileName :string; 550 | begin 551 | if FView.PathToExe.Trim = '' then begin 552 | ShowMessage('Indicate first, the path to de OpenSCAD executable.'); 553 | Exit; 554 | end; 555 | 556 | if FView.FileName.Trim = '' then begin 557 | ShowMessage('Specify a name for the output file.'); 558 | Exit; 559 | end; 560 | 561 | NewFileName := TPath.GetDirectoryName(FileName)+'\'+EditFileName.Text.Trim+'.'+ComboBoxFileType.Items[ComboBoxFileType.ItemIndex]; 562 | Parameters := ' -o '; 563 | {$IFDEF MSWINDOWS} 564 | RunApplication(PathToExe, Parameters+' "'+NewFileName+'" "'+FTempFileName+'"'); 565 | {$ENDIF} 566 | if FView.CheckBoxAndOpen.IsChecked then begin 567 | OpenURL('"'+NewFileName+'"'); 568 | //ShellExecute(0, 'OPEN', PChar(NewFileName), '', '', SW_SHOWNORMAL); 569 | end; 570 | (* 571 | [ --camera=translatex,y,z,rotx,y,z,dist | \ 572 | --camera=eyex,y,z,centerx,y,z ] \ 573 | [ --autocenter ] \ 574 | [ --viewall ] \ 575 | [ --imgsize=width,height ] [ --projection=(o)rtho|(p)ersp] \ 576 | [ --render | --preview[=throwntogether] ] \ 577 | [ --colorscheme=[Cornfield|Sunset|Metallic|Starnight|BeforeDawn|Nature|DeepOcean] ] \ 578 | [ --csglimit=num ]\ 579 | *) 580 | end; 581 | 582 | procedure TFView.BtnHighlightClick(Sender: TObject); 583 | begin 584 | FView.TextEditor.HighlightText := FView.EditHighlight.Text; 585 | end; 586 | 587 | procedure TFView.BtnLoadFromFileClick(Sender: TObject); 588 | begin 589 | if FView.DialogOpen.Execute then begin 590 | FileName := FView.DialogOpen.FileName; 591 | FView.TextEditor.Lines.LoadFromFile(FFileName); 592 | FView.TextEditor.SyntaxStyles := FOpenSCADStyler; 593 | FView.TextEditor.UseStyler := True; 594 | end; 595 | end; 596 | 597 | procedure TFView.BtnPasteClick(Sender: TObject); 598 | begin 599 | FView.TextEditor.PasteFromClipboard; 600 | end; 601 | 602 | procedure TFView.BtnRedoClick(Sender: TObject); 603 | begin 604 | FView.TextEditor.Redo; 605 | end; 606 | 607 | procedure TFView.BtnRunClick(Sender: TObject); 608 | var Parameters :string; 609 | begin 610 | Parameters := ''; 611 | if FView.CheckBoxApplyViewAll.IsChecked then 612 | Parameters := ' --viewall '; 613 | 614 | //Parameters := ' --colorscheme=Metallic '; 615 | 616 | if FTempFileName.Trim = '' then begin 617 | FTempFileName := TPath.GetTempPath+ExtractFileName(TPath.GetRandomFileName)+'.scad'; 618 | FView.TextEditor.Lines.SaveToFile(FTempFileName); 619 | if PathToExe.Trim <> '' then begin 620 | //RunApplication(PathToExe, Parameters+' "'+FTempFileName+'"'); 621 | OpenURL(FTempFileName{+' '+Parameters}); 622 | //ShellExecute(0, 'OPEN', PChar('"'+PathToExe+'" '+Parameters+'"'+FTempFileName+'"'), '', '', SW_SHOWNORMAL); 623 | 624 | (* 625 | --colorscheme=Metallic 626 | [ --camera=translatex,y,z,rotx,y,z,dist | \ 627 | --camera=eyex,y,z,centerx,y,z ] \ 628 | [ --autocenter ] \ 629 | [ --viewall ] \ 630 | [ --imgsize=width,height ] [ --projection=(o)rtho|(p)ersp] \ 631 | [ --render | --preview[=throwntogether] ] \ 632 | [ --colorscheme=[Cornfield|Sunset|Metallic|Starnight|BeforeDawn|Nature|DeepOcean] ] \ 633 | [ --csglimit=num ]\ 634 | *) 635 | 636 | end 637 | else OpenURL(FTempFileName); 638 | end 639 | else begin 640 | FView.TextEditor.Lines.SaveToFile(FTempFileName); 641 | end; 642 | end; 643 | 644 | function TFView.OpenURL(sCommand: string):Integer; 645 | begin 646 | {$IF DEFINED(MACOS)} 647 | _system(PAnsiChar('open ' + '"' + AnsiString(sCommand) + '"')); 648 | {$ELSEIF DEFINED(MSWINDOWS)} 649 | Result := ShellExecute(0, 'OPEN', PChar(sCommand), '', '', SW_SHOWNORMAL); 650 | {$ELSEIF DEFINED(IOS)} 651 | Result := prvOpenURL(sCommand); 652 | {$ELSEIF DEFINED(ANDROID)} 653 | Result := prvOpenURL(sCommand); 654 | {$ENDIF} 655 | end; 656 | 657 | procedure TFView.BtnSaveToFileClick(Sender: TObject); 658 | begin 659 | if FFileName.Trim <> '' then begin 660 | FView.TextEditor.Lines.SaveToFile(FFileName); 661 | end else 662 | if FView.DialogSave.Execute then begin 663 | FView.TextEditor.Lines.SaveToFile(FView.DialogSave.FileName); 664 | end; 665 | end; 666 | 667 | procedure TFView.BtnSearchClick(Sender: TObject); 668 | begin 669 | FView.DialogSearch.Memo := FView.TextEditor; 670 | FView.DialogSearch.Execute; 671 | end; 672 | 673 | procedure TFView.BtnUndoClick(Sender: TObject); 674 | begin 675 | FView.TextEditor.Undo; 676 | end; 677 | 678 | procedure TFView.CallWebHelp; 679 | begin 680 | OpenURL('https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/The_OpenSCAD_Language#'+FView.TextEditor.FullWordAtCursor); 681 | end; 682 | 683 | function TFView.GetOpenSCADPath:string; 684 | var Path :string; 685 | begin 686 | if FOpenSCADPath.Trim = '' then begin 687 | if FView.DialogGetOpenSCADPath.Execute then begin 688 | Path := FView.DialogGetOpenSCADPath.FileName; 689 | FOpenSCADPath := Path; 690 | Result := FOpenSCADPath; 691 | end; 692 | end 693 | else Result := FOpenSCADPath; 694 | end; 695 | 696 | procedure TFView.MenuItemSaveAsClick(Sender: TObject); 697 | begin 698 | if FFileName.Trim <> '' then begin 699 | FView.DialogSave.FileName := ExtractFileName(FileName); 700 | end; 701 | 702 | if FView.DialogSave.Execute then begin 703 | FView.TextEditor.Lines.SaveToFile(FView.DialogSave.FileName); 704 | FileName := FView.DialogSave.FileName; 705 | end; 706 | end; 707 | 708 | procedure TFView.MenuItemAboutClick(Sender: TObject); 709 | var View :TAboutInvoicingView; 710 | begin 711 | View := TAboutInvoicingView.Create(Application); 712 | try 713 | View.ShowModal; 714 | finally 715 | View.Close; 716 | end; 717 | end; 718 | 719 | procedure TFView.MenuItemExitClick(Sender: TObject); 720 | begin 721 | FView.Close; 722 | end; 723 | 724 | procedure TFView.MenuItemNewClick(Sender: TObject); 725 | var AllowClear :Boolean; 726 | begin 727 | if FView.TextEditor.Modified then begin 728 | TDialogService.PreferredMode := TDialogService.TPreferredMode.Platform; 729 | TDialogService.MessageDialog('do you want to discard current changes?', TMsgDlgType.mtConfirmation, 730 | [TMsgDlgBtn.mbOk, TMsgDlgBtn.mbCancel], TMsgDlgBtn.mbCancel, 0, 731 | procedure(const AResult: TModalResult) 732 | begin 733 | case AResult of 734 | mrOk : AllowClear := True; 735 | mrCancel: AllowClear := False; 736 | end; 737 | end); 738 | end 739 | else AllowClear := True; 740 | 741 | if AllowClear then begin 742 | FileName := ''; 743 | TextEditor.Clear; 744 | end; 745 | end; 746 | 747 | procedure TFView.MenuItemReplaceClick(Sender: TObject); 748 | begin 749 | FView.DialogFindAndReplace.Memo := FView.TextEditor; 750 | FView.DialogFindAndReplace.Execute; 751 | end; 752 | 753 | procedure TFView.CreateDefaultConfigFile; 754 | var INIFile :TIniFile; 755 | begin 756 | INIFile := TIniFile.Create(FINIFileName); 757 | try 758 | INIFile.WriteString('OPTIONS', 'OpenSCADPath', ''); 759 | INIFile.UpdateFile; 760 | finally 761 | INIFile.Free; 762 | end; 763 | end; 764 | 765 | procedure TFView.EditFileNameDblClick(Sender: TObject); 766 | var Name :string; 767 | Ext :string; 768 | begin 769 | Name := ExtractFileName(FileName); 770 | Ext := ExtractFileExt (Name ); 771 | EditFileName.Text := Copy(Name, 1, Length(Name) - Length(Ext)); 772 | end; 773 | 774 | procedure TFView.CheckBoxAutoExecuteChange(Sender: TObject); 775 | begin 776 | FView.TimerExecute.Enabled := FView.CheckBoxAutoExecute.IsChecked; 777 | end; 778 | 779 | function TFView.CheckExtension(AFileName :string):string; 780 | var Extension :string; 781 | begin 782 | Extension := TPath.GetExtension(AFileName); 783 | if Extension.Trim = '' then 784 | Result := AFileName+'.scad' 785 | else Result := AFileName; 786 | end; 787 | 788 | procedure TFView.FormCloseQuery(Sender: TObject; var CanClose: Boolean); 789 | var AllowClose :Boolean; 790 | begin 791 | if FView.CheckBoxAutoSave.IsChecked then begin 792 | if FView.TextEditor.Modified then begin 793 | if FileName <> '' then begin 794 | FView.TextEditor.Lines.SaveToFile(FFileName); 795 | CanClose := True; 796 | end 797 | else begin 798 | FView.DialogSave.FileName := ExtractFileName(FileName); 799 | if FView.DialogSave.Execute then begin 800 | FileName := CheckExtension(FView.DialogSave.FileName); 801 | FView.TextEditor.Lines.SaveToFile(FileName); 802 | CanClose := True; 803 | end 804 | else CanClose := False; 805 | end; 806 | end 807 | else begin {Not modified} 808 | CanClose := True; 809 | end; 810 | end 811 | else begin {not Autosave checked} 812 | if FView.TextEditor.Modified then begin 813 | TDialogService.PreferredMode := TDialogService.TPreferredMode.Platform; 814 | TDialogService.MessageDialog('do you want to discard current changes?', TMsgDlgType.mtConfirmation, 815 | [TMsgDlgBtn.mbOk, TMsgDlgBtn.mbCancel], TMsgDlgBtn.mbCancel, 0, 816 | procedure(const AResult: TModalResult) 817 | begin 818 | case AResult of 819 | mrOk : AllowClose := True; 820 | mrCancel: AllowClose := False; 821 | end; 822 | end); 823 | CanClose := AllowClose; 824 | end; 825 | end; 826 | 827 | if CanClose then SaveConfiguration; 828 | end; 829 | 830 | procedure TFView.FormDestroy(Sender: TObject); 831 | begin 832 | FOpenSCADStyler.Free; 833 | end; 834 | 835 | procedure TFView.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); 836 | begin 837 | case Key of 838 | vkF1 :begin FView.CallWebHelp; Key := 0; end; 839 | else begin 840 | case Key of 841 | //vkF3 :begin if FView.BtnModify.Enabled then begin FView.BtnModify.SetFocus; FView.BtnModify.OnClick(Self); Key := 0; end; end; 842 | //vkF8 :begin if FView.BtnReport.Enabled then begin FView.BtnReport.SetFocus; FView.BtnReport.OnClick(Self); Key := 0; end; end; 843 | vkF9 :begin if FView.BtnRun.Enabled then begin FView.BtnRun.SetFocus; FView.BtnRun.OnClick(Self); Key := 0; end; end; 844 | //vkESCAPE:begin if FView.BtnCancel.Enabled then begin FView.BtnCancel.SetFocus; FView.BtnCancel.OnClick(Self); Key := 0; end; end; 845 | end; 846 | end; 847 | end; 848 | end; 849 | 850 | end. 851 | 852 | 853 | openscad [ -o output_file [ -d deps_file ] ]\ 854 | 855 | [ -m make_command ] [ -D var=val [..] ] \ 856 | [ --help ] print this help message and exit \ 857 | [ --version ] [ --info ] \ 858 | 859 | [ --camera=translatex,y,z,rotx,y,z,dist | \ 860 | --camera=eyex,y,z,centerx,y,z ] \ 861 | [ --autocenter ] \ 862 | [ --viewall ] \ 863 | [ --imgsize=width,height ] [ --projection=(o)rtho|(p)ersp] \ 864 | [ --render | --preview[=throwntogether] ] \ 865 | [ --colorscheme=[Cornfield|Sunset|Metallic|Starnight|BeforeDawn|Nature|DeepOcean] ] \ 866 | [ --csglimit=num ]\ 867 | 868 | filename 869 | -------------------------------------------------------------------------------- /senCilleSCAD.dproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | {A1E00957-BA39-49E3-9093-73504C30DB51} 4 | 18.3 5 | FMX 6 | senCilleSCAD.dpr 7 | True 8 | Debug 9 | Win64 10 | 7 11 | Application 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Base 34 | true 35 | 36 | 37 | true 38 | Base 39 | true 40 | 41 | 42 | true 43 | Base 44 | true 45 | 46 | 47 | true 48 | Base 49 | true 50 | 51 | 52 | true 53 | Base 54 | true 55 | 56 | 57 | true 58 | Cfg_1 59 | true 60 | true 61 | 62 | 63 | true 64 | Cfg_1 65 | true 66 | true 67 | 68 | 69 | true 70 | Cfg_1 71 | true 72 | true 73 | 74 | 75 | true 76 | Cfg_1 77 | true 78 | true 79 | 80 | 81 | true 82 | Cfg_1 83 | true 84 | true 85 | 86 | 87 | true 88 | Base 89 | true 90 | 91 | 92 | true 93 | Cfg_2 94 | true 95 | true 96 | 97 | 98 | senCilleSCAD 99 | $(BDS)\bin\default_app.manifest 100 | System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) 101 | $(BDS)\bin\delphi_PROJECTICON.ico 102 | .\$(Platform)\$(Config) 103 | .\$(Platform)\$(Config) 104 | true 105 | true 106 | true 107 | true 108 | true 109 | true 110 | true 111 | $(BDS)\bin\delphi_PROJECTICNS.icns 112 | true 113 | true 114 | true 115 | false 116 | false 117 | false 118 | false 119 | false 120 | 121 | 122 | center 123 | disabled 124 | $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png 125 | $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png 126 | $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png 127 | android-support-v4.dex.jar;apk-expansion.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar 128 | $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png 129 | 1 130 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png 131 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png 132 | true 133 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png 134 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png 135 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png 136 | package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=preferExternal;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= 137 | Debug 138 | 139 | 140 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_58x58.png 141 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1004.png 142 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2208x1242.png 143 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png 144 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png 145 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_72x72.png 146 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_29x29.png 147 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_100x100.png 148 | Base 149 | $(MSBuildProjectName) 150 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x748.png 151 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_29x29.png 152 | fmxhrh;DBXSqliteDriver;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;bindcomp;DBXInterBaseDriver;DataSnapClient;DataSnapCommon;DataSnapProviderClient;xmlrtl;DbxCommonDriver;IndyProtocols;bindengine;bindcompdbx;CustomIPTransport;dsnap;fmxase;IndyCore;IndyIPCommon;dbexpress;IndyIPClient;$(DCC_UsePackage);$(DCC_UsePackage) 153 | iPhoneAndiPad 154 | true 155 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png 156 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png 157 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png 158 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_50x50.png 159 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png 160 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png 161 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_144x144.png 162 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_750x1334.png 163 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x960.png 164 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png 165 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x1136.png 166 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png 167 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_57x57.png 168 | true 169 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_87x87.png 170 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_320x480.png 171 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png 172 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png 173 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=6.0;CFBundleVersion=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);CFBundleResourceSpecification=ResourceRules.plist;UIDeviceFamily=iPhone & iPad;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera 174 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png 175 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1242x2208.png 176 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_114x114.png 177 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png 178 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2008.png 179 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1496.png 180 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png 181 | true 182 | Debug 183 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1125x2436.png 184 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2436x1125.png 185 | 186 | 187 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_750x1334.png 188 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png 189 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2208x1242.png 190 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1242x2208.png 191 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_87x87.png 192 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_58x58.png 193 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1004.png 194 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png 195 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png 196 | Base 197 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_72x72.png 198 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_29x29.png 199 | $(MSBuildProjectName) 200 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_100x100.png 201 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x748.png 202 | iPhoneAndiPad 203 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_29x29.png 204 | true 205 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png 206 | fmxhrh;DBXSqliteDriver;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;bindcomp;DBXInterBaseDriver;DataSnapClient;DataSnapCommon;DataSnapProviderClient;xmlrtl;DbxCommonDriver;IndyProtocols;bindengine;bindcompdbx;CustomIPTransport;dsnap;fmxase;IndyCore;IndyIPCommon;dbexpress;IndyIPClient;$(DCC_UsePackage);$(DCC_UsePackage) 207 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_50x50.png 208 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png 209 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png 210 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png 211 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png 212 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png 213 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png 214 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x1136.png 215 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x960.png 216 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_57x57.png 217 | true 218 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_320x480.png 219 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png 220 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1496.png 221 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png 222 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=6.0;CFBundleVersion=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);CFBundleResourceSpecification=ResourceRules.plist;UIDeviceFamily=iPhone & iPad;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera 223 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_144x144.png 224 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_114x114.png 225 | true 226 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png 227 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2008.png 228 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png 229 | Debug 230 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1125x2436.png 231 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2436x1125.png 232 | 233 | 234 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_750x1334.png 235 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png 236 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1242x2208.png 237 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_87x87.png 238 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2208x1242.png 239 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png 240 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png 241 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png 242 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png 243 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png 244 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png 245 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png 246 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png 247 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png 248 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png 249 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png 250 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png 251 | iPhoneAndiPad 252 | fmxhrh;bindcompfmx;DBXSqliteDriver;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;bindcomp;DBXInterBaseDriver;DataSnapClient;DataSnapCommon;DataSnapProviderClient;xmlrtl;DbxCommonDriver;IndyProtocols;dbxcds;bindengine;bindcompdbx;CustomIPTransport;dsnap;fmxase;IndyCore;IndyIPCommon;dbexpress;IndyIPClient;$(DCC_UsePackage) 253 | true 254 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=6.0;CFBundleVersion=1.0.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);CFBundleResourceSpecification=ResourceRules.plist;UIDeviceFamily=iPhone & iPad;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera 255 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2008.png 256 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_144x144.png 257 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_72x72.png 258 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x1136.png 259 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_29x29.png 260 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_58x58.png 261 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png 262 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_29x29.png 263 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1496.png 264 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_50x50.png 265 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_100x100.png 266 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1004.png 267 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x748.png 268 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_114x114.png 269 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_57x57.png 270 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x960.png 271 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_320x480.png 272 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1125x2436.png 273 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2436x1125.png 274 | 275 | 276 | true 277 | fmxhrh;FireDACSqliteDriver;FireDACDSDriver;DBXSqliteDriver;FireDACPgDriver;fmx;IndySystem;tethering;DataSnapClient;DataSnapServer;DataSnapCommon;DBXInterBaseDriver;DataSnapProviderClient;DbxCommonDriver;dbxcds;fmxFireDAC;DBXOracleDriver;dsnap;IndyIPServer;fmxase;IndyCore;CloudService;IndyIPCommon;FireDACIBDriver;DataSnapFireDAC;FireDACDBXDriver;soapserver;dsnapxml;FireDACInfxDriver;FireDACASADriver;bindcompfmx;FireDACODBCDriver;RESTBackendComponents;rtl;dbrtl;DbxClientDriver;FireDACCommon;bindcomp;xmlrtl;DataSnapNativeClient;ibxpress;IndyProtocols;DBXMySQLDriver;FireDACCommonDriver;bindcompdbx;bindengine;soaprtl;FireDAC;DBXInformixDriver;FireDACMSSQLDriver;DataSnapServerMidas;DBXFirebirdDriver;inet;fmxobj;FireDACMySQLDriver;soapmidas;DBXSybaseASADriver;FireDACOracleDriver;fmxdae;RESTComponents;DataSnapIndy10ServerTransport;dbexpress;IndyIPClient;$(DCC_UsePackage) 278 | CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts 279 | 280 | 281 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 282 | $(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_44.png 283 | $(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_150.png 284 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 285 | true 286 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 287 | true 288 | 1033 289 | CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName) 290 | 291 | 292 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 293 | $(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_44.png 294 | $(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_150.png 295 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 296 | true 297 | true 298 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) 299 | CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName) 300 | 1033 301 | fmxhrh;FireDACSqliteDriver;FireDACDSDriver;DBXSqliteDriver;FireDACPgDriver;fmx;IndySystem;TeeDB;tethering;vclib;DataSnapClient;DataSnapServer;DataSnapCommon;DBXInterBaseDriver;DataSnapProviderClient;DBXSybaseASEDriver;DbxCommonDriver;vclimg;dbxcds;DatasnapConnectorsFreePascal;MetropolisUILiveTile;vcldb;vcldsnap;fmxFireDAC;DBXDb2Driver;DBXOracleDriver;vclribbon;dsnap;IndyIPServer;fmxase;vcl;IndyCore;CloudService;DBXMSSQLDriver;IndyIPCommon;FireDACIBDriver;DataSnapFireDAC;FireDACDBXDriver;soapserver;dsnapxml;FireDACInfxDriver;FireDACDb2Driver;adortl;FireDACASADriver;bindcompfmx;FireDACODBCDriver;RESTBackendComponents;rtl;dbrtl;DbxClientDriver;FireDACCommon;bindcomp;Tee;DBXOdbcDriver;vclFireDAC;xmlrtl;DataSnapNativeClient;ibxpress;IndyProtocols;DBXMySQLDriver;FireDACCommonDriver;bindcompdbx;bindengine;vclactnband;soaprtl;TeeUI;bindcompvcl;vclie;FireDACADSDriver;vcltouch;VCLRESTComponents;FireDAC;DBXInformixDriver;FireDACMSSQLDriver;Intraweb;VclSmp;DataSnapConnectors;DataSnapServerMidas;DBXFirebirdDriver;dsnapcon;inet;fmxobj;FireDACMySQLDriver;soapmidas;vclx;DBXSybaseASADriver;FireDACOracleDriver;fmxdae;RESTComponents;FireDACMSAccDriver;DataSnapIndy10ServerTransport;dbexpress;IndyIPClient;$(DCC_UsePackage) 302 | 303 | 304 | DEBUG;$(DCC_Define) 305 | true 306 | false 307 | true 308 | true 309 | true 310 | 311 | 312 | 1 313 | 314 | 315 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=6.0;CFBundleVersion=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);CFBundleResourceSpecification=ResourceRules.plist;UIDeviceFamily=iPhone & iPad;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;FMLocalNotificationPermission=false;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSCameraUsageDescription=The reason for accessing the camera 316 | true 317 | 318 | 319 | Debug 320 | 321 | 322 | .\bin 323 | senCilleSCAD_Icon2.ico 324 | senCilleSCAD_Icns1.icns 325 | C:\views\senCilleSCAD\Images\senCilleSCAD 150x150.png 326 | C:\views\senCilleSCAD\Images\senCilleSCAD 44x44.png 327 | true 328 | 1033 329 | true 330 | CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName) 331 | Debug 332 | 333 | 334 | Debug 335 | 336 | 337 | false 338 | RELEASE;$(DCC_Define) 339 | 0 340 | false 341 | 342 | 343 | 1 344 | 345 | 346 | 347 | MainSource 348 | 349 | 350 | iPhone 351 |
FView
352 | fmx 353 |
354 | 355 | 356 | 357 | 358 | Cfg_2 359 | Base 360 | 361 | 362 | Base 363 | 364 | 365 | Cfg_1 366 | Base 367 | 368 |
369 | 370 | Delphi.Personality.12 371 | Application 372 | 373 | 374 | 375 | senCilleSCAD.dpr 376 | 377 | 378 | (untitled) 379 | Microsoft Office 2000 Sample Automation Server Wrapper Components 380 | Microsoft Office XP Sample Automation Server Wrapper Components 381 | 382 | 383 | 384 | False 385 | False 386 | False 387 | False 388 | True 389 | True 390 | True 391 | 392 | 393 | 394 | 395 | .\ 396 | true 397 | 398 | 399 | 400 | 401 | Info.plist 402 | true 403 | 404 | 405 | 406 | 407 | Contents\MacOS\ 408 | senCilleSCAD.rsm 409 | true 410 | 411 | 412 | 413 | 414 | senCilleSCAD.icns 415 | true 416 | 417 | 418 | 419 | 420 | true 421 | 422 | 423 | 424 | 425 | senCilleSCAD 426 | true 427 | 428 | 429 | 430 | 431 | true 432 | 433 | 434 | 435 | 436 | Assets\ 437 | Logo150x150.png 438 | true 439 | 440 | 441 | 442 | 443 | Assets\ 444 | Logo44x44.png 445 | true 446 | 447 | 448 | 449 | 450 | true 451 | 452 | 453 | 454 | 455 | Contents\Resources\StartUp\ 456 | true 457 | 458 | 459 | 460 | 461 | senCilleSCAD.rsm 462 | true 463 | 464 | 465 | 466 | 467 | true 468 | 469 | 470 | 471 | 472 | true 473 | 474 | 475 | 476 | 477 | senCilleSCAD.exe 478 | true 479 | 480 | 481 | 482 | 483 | 1 484 | 485 | 486 | Contents\MacOS 487 | 1 488 | 489 | 490 | Contents\MacOS 491 | 0 492 | 493 | 494 | 495 | 496 | classes 497 | 1 498 | 499 | 500 | 501 | 502 | library\lib\armeabi-v7a 503 | 1 504 | 505 | 506 | 507 | 508 | library\lib\armeabi 509 | 1 510 | 511 | 512 | 513 | 514 | library\lib\mips 515 | 1 516 | 517 | 518 | 519 | 520 | library\lib\armeabi-v7a 521 | 1 522 | 523 | 524 | 525 | 526 | res\drawable 527 | 1 528 | 529 | 530 | 531 | 532 | res\values 533 | 1 534 | 535 | 536 | 537 | 538 | res\drawable 539 | 1 540 | 541 | 542 | 543 | 544 | res\drawable-xxhdpi 545 | 1 546 | 547 | 548 | 549 | 550 | res\drawable-ldpi 551 | 1 552 | 553 | 554 | 555 | 556 | res\drawable-mdpi 557 | 1 558 | 559 | 560 | 561 | 562 | res\drawable-hdpi 563 | 1 564 | 565 | 566 | 567 | 568 | res\drawable-xhdpi 569 | 1 570 | 571 | 572 | 573 | 574 | res\drawable-small 575 | 1 576 | 577 | 578 | 579 | 580 | res\drawable-normal 581 | 1 582 | 583 | 584 | 585 | 586 | res\drawable-large 587 | 1 588 | 589 | 590 | 591 | 592 | res\drawable-xlarge 593 | 1 594 | 595 | 596 | 597 | 598 | 1 599 | 600 | 601 | Contents\MacOS 602 | 1 603 | 604 | 605 | 0 606 | 607 | 608 | 609 | 610 | Contents\MacOS 611 | 1 612 | .framework 613 | 614 | 615 | 0 616 | 617 | 618 | 619 | 620 | 1 621 | .dylib 622 | 623 | 624 | 1 625 | .dylib 626 | 627 | 628 | 1 629 | .dylib 630 | 631 | 632 | Contents\MacOS 633 | 1 634 | .dylib 635 | 636 | 637 | 0 638 | .dll;.bpl 639 | 640 | 641 | 642 | 643 | 1 644 | .dylib 645 | 646 | 647 | 1 648 | .dylib 649 | 650 | 651 | 1 652 | .dylib 653 | 654 | 655 | Contents\MacOS 656 | 1 657 | .dylib 658 | 659 | 660 | 0 661 | .bpl 662 | 663 | 664 | 665 | 666 | 0 667 | 668 | 669 | 0 670 | 671 | 672 | 0 673 | 674 | 675 | 0 676 | 677 | 678 | Contents\Resources\StartUp\ 679 | 0 680 | 681 | 682 | 0 683 | 684 | 685 | 686 | 687 | 1 688 | 689 | 690 | 1 691 | 692 | 693 | 1 694 | 695 | 696 | 697 | 698 | 1 699 | 700 | 701 | 1 702 | 703 | 704 | 1 705 | 706 | 707 | 708 | 709 | 1 710 | 711 | 712 | 1 713 | 714 | 715 | 1 716 | 717 | 718 | 719 | 720 | 1 721 | 722 | 723 | 1 724 | 725 | 726 | 1 727 | 728 | 729 | 730 | 731 | 1 732 | 733 | 734 | 1 735 | 736 | 737 | 1 738 | 739 | 740 | 741 | 742 | 1 743 | 744 | 745 | 1 746 | 747 | 748 | 1 749 | 750 | 751 | 752 | 753 | 1 754 | 755 | 756 | 1 757 | 758 | 759 | 1 760 | 761 | 762 | 763 | 764 | 1 765 | 766 | 767 | 768 | 769 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 770 | 1 771 | 772 | 773 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 774 | 1 775 | 776 | 777 | 778 | 779 | 1 780 | 781 | 782 | 1 783 | 784 | 785 | 786 | 787 | ..\ 788 | 1 789 | 790 | 791 | ..\ 792 | 1 793 | 794 | 795 | 796 | 797 | 1 798 | 799 | 800 | 1 801 | 802 | 803 | 1 804 | 805 | 806 | 807 | 808 | 1 809 | 810 | 811 | 1 812 | 813 | 814 | 1 815 | 816 | 817 | 818 | 819 | ..\ 820 | 1 821 | 822 | 823 | 824 | 825 | Contents 826 | 1 827 | 828 | 829 | 830 | 831 | Contents\Resources 832 | 1 833 | 834 | 835 | 836 | 837 | library\lib\armeabi-v7a 838 | 1 839 | 840 | 841 | 1 842 | 843 | 844 | 1 845 | 846 | 847 | 1 848 | 849 | 850 | 1 851 | 852 | 853 | Contents\MacOS 854 | 1 855 | 856 | 857 | 0 858 | 859 | 860 | 861 | 862 | 1 863 | 864 | 865 | 1 866 | 867 | 868 | 869 | 870 | Assets 871 | 1 872 | 873 | 874 | Assets 875 | 1 876 | 877 | 878 | 879 | 880 | Assets 881 | 1 882 | 883 | 884 | Assets 885 | 1 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 12 899 | 900 | 901 | 902 | 903 |
904 | --------------------------------------------------------------------------------