Overview
Comment: | groffstudio 0.9.9.1: Finally, macOS is supported. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | release-0.9.9.1 |
Files: | files | file ages | folders |
SHA3-256: |
b79f447e7e67092253d0c114b5eb5960 |
User & Date: | Cthulhux on 2022-03-10 03:54:04 |
Other Links: | manifest | tags |
Context
2022-03-10
| ||
04:32 | Removed outdated comment. check-in: 07e7ab3732 user: Cthulhux tags: trunk | |
03:54 | groffstudio 0.9.9.1: Finally, macOS is supported. check-in: b79f447e7e user: Cthulhux tags: release-0.9.9.1, trunk | |
2022-03-03
| ||
20:53 | Ugh. I forgot that I changed the account last year. check-in: 9bfb75a8e1 user: Cthulhux tags: trunk | |
Changes
Modified CHANGES.txt from [03a8ad260f] to [56d538b5c0].
1 2 3 4 | Version 0.9.9.0 2022-02-24 [Feature] First working version. | > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 | Version 0.9.9.1 2022-03-10 [Feature] macOS builds are working now. [Feature] First macOS release. Version 0.9.9.0 2022-02-24 [Feature] First working version. |
Modified src/groffstudio.lpi from [bfab7126b8] to [3a55aa8a78].
︙ | ︙ | |||
20 21 22 23 24 25 26 27 28 29 30 31 32 33 | </Resources> </General> <VersionInfo> <UseVersionInfo Value="True"/> <AutoIncrementBuild Value="True"/> <MinorVersionNr Value="9"/> <RevisionNr Value="9"/> <Attributes pvaPreRelease="True"/> <StringTable ProductName="groffstudio"/> </VersionInfo> <BuildModes> <Item Name="Default" Default="True"/> </BuildModes> <PublishOptions> | > | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | </Resources> </General> <VersionInfo> <UseVersionInfo Value="True"/> <AutoIncrementBuild Value="True"/> <MinorVersionNr Value="9"/> <RevisionNr Value="9"/> <BuildNr Value="1"/> <Attributes pvaPreRelease="True"/> <StringTable ProductName="groffstudio"/> </VersionInfo> <BuildModes> <Item Name="Default" Default="True"/> </BuildModes> <PublishOptions> |
︙ | ︙ | |||
117 118 119 120 121 122 123 124 125 126 | </Item> <Item> <Name Value="ECodetoolError"/> </Item> <Item> <Name Value="EFOpenError"/> </Item> </Exceptions> </Debugging> </CONFIG> | > > > | 118 119 120 121 122 123 124 125 126 127 128 129 130 | </Item> <Item> <Name Value="ECodetoolError"/> </Item> <Item> <Name Value="EFOpenError"/> </Item> <Item> <Name Value="ESocketError"/> </Item> </Exceptions> </Debugging> </CONFIG> |
Modified src/groffstudio.lps from [10df3282b6] to [0be9739d67].
1 2 3 4 5 6 7 8 9 10 | <?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectSession> <PathDelim Value="\"/> <Version Value="12"/> <BuildModes Active="Default"/> <Units> <Unit> <Filename Value="groffstudio.lpr"/> <IsPartOfProject Value="True"/> | < | | | < > | | | | | | | | | | > > > > > > > > | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | <?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectSession> <PathDelim Value="\"/> <Version Value="12"/> <BuildModes Active="Default"/> <Units> <Unit> <Filename Value="groffstudio.lpr"/> <IsPartOfProject Value="True"/> <EditorIndex Value="-1"/> <CursorPos X="60" Y="17"/> <UsageCount Value="264"/> </Unit> <Unit> <Filename Value="unit1.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="MainForm"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit1"/> <IsVisibleTab Value="True"/> <TopLine Value="414"/> <CursorPos X="23" Y="431"/> <UsageCount Value="264"/> <Loaded Value="True"/> <LoadedDesigner Value="True"/> </Unit> <Unit> <Filename Value="helpers.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="Helpers"/> <EditorIndex Value="2"/> <TopLine Value="10"/> <CursorPos X="40" Y="42"/> <UsageCount Value="257"/> <Loaded Value="True"/> </Unit> <Unit> <Filename Value="buildoutputwindow.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="BuildStatusWindow"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="BuildOutputWindow"/> <EditorIndex Value="1"/> <TopLine Value="61"/> <CursorPos X="39" Y="66"/> <UsageCount Value="246"/> <Loaded Value="True"/> <LoadedDesigner Value="True"/> </Unit> <Unit> <Filename Value="..\..\..\..\..\Applications\Lazarus\lcl\lcltype.pp"/> <UnitName Value="LCLType"/> <EditorIndex Value="-1"/> <TopLine Value="5"/> <CursorPos X="42" Y="18"/> <UsageCount Value="121"/> </Unit> <Unit> <Filename Value="..\..\..\..\..\Applications\Lazarus\components\rtticontrols\rttigrids.pas"/> <UnitName Value="RTTIGrids"/> <EditorIndex Value="-1"/> <TopLine Value="1234"/> <CursorPos X="3" Y="1247"/> <UsageCount Value="10"/> </Unit> <Unit> <Filename Value="..\..\..\..\..\Applications\Lazarus\lcl\interfaces\fpgui\fpguicrosshelpers.pas"/> <EditorIndex Value="-1"/> <CursorPos X="5" Y="10"/> <UsageCount Value="10"/> </Unit> <Unit> <Filename Value="..\..\..\..\..\Applications\Lazarus\components\ideintf\columndlg.pp"/> <UnitName Value="ColumnDlg"/> <EditorIndex Value="-1"/> <TopLine Value="417"/> <CursorPos X="5" Y="430"/> <UsageCount Value="10"/> </Unit> <Unit> <Filename Value="..\..\..\..\..\Applications\Lazarus\components\codetools\basiccodetools.pas"/> <UnitName Value="BasicCodeTools"/> <EditorIndex Value="-1"/> <TopLine Value="10"/> <CursorPos X="65" Y="23"/> <UsageCount Value="10"/> </Unit> <Unit> <Filename Value="..\..\..\..\..\usr\local\share\fpcsrc\3.2.0\packages\fcl-net\src\sslbase.pp"/> <EditorIndex Value="-1"/> <CursorPos X="55" Y="11"/> <UsageCount Value="10"/> </Unit> </Units> <JumpHistory HistoryIndex="28"> <Position> <Filename Value="unit1.pas"/> <Caret Line="227" Column="28" TopLine="211"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="225" Column="54" TopLine="211"/> |
︙ | ︙ | |||
177 178 179 180 181 182 183 184 185 186 187 188 189 190 | <Filename Value="buildoutputwindow.pas"/> <Caret Line="55" Column="8" TopLine="39"/> </Position> <Position> <Filename Value="buildoutputwindow.pas"/> <Caret Line="44" Column="7" TopLine="36"/> </Position> </JumpHistory> <RunParams> <FormatVersion Value="2"/> <Modes ActiveMode=""/> </RunParams> </ProjectSession> </CONFIG> | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 | <Filename Value="buildoutputwindow.pas"/> <Caret Line="55" Column="8" TopLine="39"/> </Position> <Position> <Filename Value="buildoutputwindow.pas"/> <Caret Line="44" Column="7" TopLine="36"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="227" Column="40" TopLine="207"/> </Position> <Position> <Filename Value="buildoutputwindow.pas"/> <Caret Line="66" Column="39" TopLine="49"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="106" Column="9" TopLine="90"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="29" Column="25" TopLine="21"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="221" Column="44" TopLine="208"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="222" Column="39" TopLine="221"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="29" Column="37" TopLine="13"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="221" Column="5" TopLine="219"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="114" Column="9" TopLine="89"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="430" Column="17" TopLine="409"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="241" Column="6" TopLine="219"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="196" Column="75" TopLine="175"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="230" Column="68" TopLine="209"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="274" Column="29" TopLine="252"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="196" Column="75" TopLine="184"/> </Position> <Position> <Filename Value="unit1.pas"/> <Caret Line="436" Column="48" TopLine="414"/> </Position> </JumpHistory> <RunParams> <FormatVersion Value="2"/> <Modes ActiveMode=""/> </RunParams> </ProjectSession> </CONFIG> |
Modified src/unit1.lfm from [8e183c2957] to [41c07b026a].
1 | object MainForm: TMainForm | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | object MainForm: TMainForm Left = 819 Height = 692 Top = 147 Width = 861 Caption = 'groffstudio' ClientHeight = 692 ClientWidth = 861 OnClose = FormClose OnCreate = FormCreate LCLVersion = '2.3.0.0' object MainStatusBar: TStatusBar Left = 0 Height = 18 Top = 674 Width = 861 Panels = < item Text = 'file name with save status' Width = 200 end item |
︙ | ︙ | |||
37 38 39 40 41 42 43 | ActivePage = tsEdit Anchors = [akTop, akLeft, akRight, akBottom] Style = tsFlatButtons TabIndex = 0 TabOrder = 1 object tsEdit: TTabSheet Caption = 'edit a groff document' | | | | | | | | | > | | | | | > | | | | | | | | | > | | | | | | | | | | | | | | | | | | | | | > | | | | | | | | | | > | | | | 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 | ActivePage = tsEdit Anchors = [akTop, akLeft, akRight, akBottom] Style = tsFlatButtons TabIndex = 0 TabOrder = 1 object tsEdit: TTabSheet Caption = 'edit a groff document' ClientHeight = 632 ClientWidth = 835 ParentFont = False object GroupBox1: TGroupBox Left = 10 Height = 65 Top = 562 Width = 815 Align = alBottom BorderSpacing.Left = 10 BorderSpacing.Right = 10 BorderSpacing.Bottom = 5 Caption = 'build' ClientHeight = 46 ClientWidth = 805 TabOrder = 0 object Label1: TLabel Left = 112 Height = 16 Top = -4 Width = 83 Caption = 'macro to use:' ParentColor = False end object cmbMacro: TComboBox Left = 112 Height = 20 Top = 14 Width = 100 ItemHeight = 19 Items.Strings = ( 'man' 'me' 'mm' 'mom' 'ms' ) TabOrder = 0 Text = '[ select ]' end object Label2: TLabel Left = 673 Height = 16 Top = -4 Width = 87 Anchors = [akTop, akRight] Caption = 'output format:' ParentColor = False end object rdPs: TRadioButton Left = 670 Height = 18 Top = 14 Width = 85 Anchors = [akTop, akRight] Caption = 'PostScript' OnChange = rdPsChange TabOrder = 1 end object rdPdf: TRadioButton Left = 753 Height = 18 Top = 14 Width = 50 Anchors = [akTop, akRight] Caption = 'PDF' OnChange = rdPdfChange TabOrder = 2 end object Label3: TLabel Left = 285 Height = 16 Top = -4 Width = 91 Anchors = [akTop, akRight] Caption = 'preprocessors:' ParentColor = False end object chkEqn: TCheckBox Left = 348 Height = 18 Top = 14 Width = 48 Anchors = [akTop, akRight] Caption = 'eqn' TabOrder = 3 end object chkPic: TCheckBox Left = 434 Height = 18 Top = 14 Width = 44 Anchors = [akTop, akRight] Caption = 'pic' TabOrder = 4 end object chkTbl: TCheckBox Left = 523 Height = 18 Top = 14 Width = 41 Anchors = [akTop, akRight] Caption = 'tbl' TabOrder = 5 end object chkGrn: TCheckBox Left = 392 Height = 18 Top = 14 Width = 46 Anchors = [akTop, akRight] Caption = 'grn' TabOrder = 6 end object chkChem: TCheckBox Left = 292 Height = 18 Top = 14 Width = 58 Anchors = [akTop, akRight] Caption = 'chem' TabOrder = 7 end object chkRefer: TCheckBox Left = 473 Height = 18 Top = 14 Width = 53 Anchors = [akTop, akRight] Caption = 'refer' TabOrder = 8 end object Label4: TLabel Left = 576 Height = 16 Top = -4 Width = 41 Anchors = [akTop, akRight] Caption = 'extras:' ParentColor = False end object chkPdfMark: TCheckBox Left = 574 Height = 18 Top = 14 Width = 74 Anchors = [akTop, akRight] Caption = 'Pdfmark' Enabled = False TabOrder = 9 end object btnBuild: TButton Left = 16 Height = 29 Top = 8 Width = 75 Caption = 'build' Color = clLime Enabled = False Font.Style = [fsBold, fsItalic] OnClick = btnBuildClick ParentFont = False TabOrder = 10 end end object btnSaveGroff: TButton Left = 750 Height = 28 Top = 531 Width = 75 Anchors = [akRight, akBottom] Caption = 'save' Font.Style = [fsBold] OnClick = btnSaveGroffClick ParentFont = False TabOrder = 1 end object btnLoadGroff: TButton Left = 669 Height = 28 Top = 531 Width = 75 Anchors = [akRight, akBottom] Caption = 'load' Font.Style = [fsBold] OnClick = btnLoadGroffClick ParentFont = False TabOrder = 2 end object Label5: TLabel Left = 142 Height = 16 Top = 543 Width = 509 Anchors = [akRight, akBottom] Caption = 'note that everything build-related will be stored in the document''s storage directory' Font.Color = clBlue Font.Style = [fsItalic] ParentColor = False ParentFont = False end inline SynEdit1: TSynEdit Left = 10 Height = 524 Top = 0 Width = 815 Anchors = [akTop, akLeft, akRight, akBottom] Font.CharSet = 4 Font.Height = -13 Font.Name = 'Consolas' Font.Pitch = fpFixed Font.Quality = fqCleartypeNatural ParentColor = False ParentFont = False TabOrder = 3 Gutter.Width = 67 Gutter.MouseActions = <> RightGutter.Width = 0 RightGutter.MouseActions = <> Keystrokes = < item Command = ecUp ShortCut = 38 |
︙ | ︙ | |||
705 706 707 708 709 710 711 | OnChange = SynEdit1Change inline SynLeftGutterPartList1: TSynGutterPartList object SynGutterMarks1: TSynGutterMarks Width = 24 MouseActions = <> end object SynGutterLineNumber1: TSynGutterLineNumber | | | 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 | OnChange = SynEdit1Change inline SynLeftGutterPartList1: TSynGutterPartList object SynGutterMarks1: TSynGutterMarks Width = 24 MouseActions = <> end object SynGutterLineNumber1: TSynGutterLineNumber Width = 27 MouseActions = <> MarkupInfo.Background = clBtnFace MarkupInfo.Foreground = clNone DigitCount = 2 ShowOnlyLineNumbersMultiplesOf = 1 ZeroStart = False LeadingZeros = False |
︙ | ︙ | |||
738 739 740 741 742 743 744 | MouseActionsCollapsed = <> end end end end object tsSettings: TTabSheet Caption = 'groffstudio settings' | | | | | | | | | > | | | | | | | | > | | | | | > | | > | | | | > | | | | > | | | | > | | > | | > | | > | | > | | | > | | > | | > | 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 | MouseActionsCollapsed = <> end end end end object tsSettings: TTabSheet Caption = 'groffstudio settings' ClientHeight = 632 ClientWidth = 835 object chkAutoSaveBuildSettings: TCheckBox Left = 0 Height = 18 Top = 16 Width = 342 Caption = 'Save and restore the chosen build settings for next time' TabOrder = 0 end object btnSaveSettings: TButton Left = 746 Height = 25 Top = 601 Width = 91 Anchors = [akRight, akBottom] Caption = 'save settings' OnClick = btnSaveSettingsClick TabOrder = 1 end object Label14: TLabel Left = 0 Height = 16 Top = 48 Width = 150 Caption = 'Yes, that''s all for now. :-)' ParentColor = False end end object tsGroff: TTabSheet Caption = 'groff version' ClientHeight = 632 ClientWidth = 835 object GroupBox2: TGroupBox Left = 20 Height = 57 Top = 567 Width = 795 Align = alBottom BorderSpacing.Left = 20 BorderSpacing.Right = 20 BorderSpacing.Bottom = 8 Caption = 'groff for Windows' ClientHeight = 38 ClientWidth = 785 TabOrder = 0 object Label6: TLabel Left = 8 Height = 16 Top = 8 Width = 125 Caption = 'latest version online:' ParentColor = False end object edtOnlineGroffVersionWindows: TEdit Left = 136 Height = 17 Top = 8 Width = 552 Anchors = [akTop, akLeft, akRight] BorderStyle = bsNone Enabled = False TabOrder = 0 Text = 'fetching ...' end object btnDownloadGroffWindows: TButton Left = 696 Height = 25 Top = 5 Width = 80 Anchors = [akTop, akRight] Caption = 'download it' OnClick = btnDownloadGroffWindowsClick TabOrder = 1 end end object Label7: TLabel Left = 8 Height = 32 Top = 8 Width = 823 Anchors = [akTop, akLeft, akRight] Caption = 'as you might guess, groffstudio requires a working installation of groff. this page performs the basic checks for you. note that on windows, everything is harder than it should. :-)' Constraints.MaxHeight = 582 ParentColor = False WordWrap = True end object Label9: TLabel Left = 8 Height = 16 Top = 56 Width = 81 Caption = 'groff version:' ParentColor = False end object edtGroffInstalledVersion: TEdit Left = 144 Height = 17 Top = 56 Width = 687 Anchors = [akTop, akLeft, akRight] BorderStyle = bsNone Enabled = False TabOrder = 1 end object lblTroffCommandNotFound: TLabel Left = 8 Height = 48 Top = 112 Width = 822 Anchors = [akTop, akLeft, akRight] Caption = 'groff was not found. in order to use groffstudio, you absolutely need groff in your PATH variable. on unix and unix-like systems, you''ll need to edit the $PATH variable. on windows, i warmly recommend the Rapid Environment Editor for that.'#13#10'please exit groffstudio at your nearest convenience and adjust your PATH variables. then try again.' Font.Color = clRed ParentColor = False ParentFont = False Visible = False WordWrap = True end object edtGroffstudioInstalledVersion: TEdit Left = 144 Height = 17 Top = 77 Width = 687 Anchors = [akTop, akLeft, akRight] BorderStyle = bsNone Enabled = False TabOrder = 2 end object Label10: TLabel Left = 8 Height = 16 Top = 77 Width = 118 Caption = 'groffstudio version:' ParentColor = False end end object tsAbout: TTabSheet Caption = 'about groffstudio' ClientHeight = 632 ClientWidth = 835 object lblAboutProductName: TLabel Left = 0 Height = 53 Top = 16 Width = 297 Caption = 'groffstudio x.y.z' Font.Color = clBlue Font.Height = -45 ParentColor = False ParentFont = False end object Label8: TLabel Left = 20 Height = 16 Top = 80 Width = 246 Caption = 'brought to you by tux0r and contributors' ParentColor = False end object Label11: TLabel Left = 0 Height = 16 Top = 128 Width = 53 Caption = 'Website:' Font.Style = [fsItalic] ParentColor = False ParentFont = False end object Label12: TLabel Left = 0 Height = 16 Top = 152 Width = 69 Caption = 'Repository:' Font.Style = [fsItalic] ParentColor = False ParentFont = False end object Label13: TLabel Left = 0 Height = 16 Top = 176 Width = 119 Caption = 'Repository (mirror):' Font.Style = [fsItalic] ParentColor = False ParentFont = False end object mLicense: TMemo Left = 0 Height = 418 Top = 216 Width = 842 Anchors = [akTop, akLeft, akRight] ScrollBars = ssAutoBoth TabOrder = 0 end object lblWebsite: TLabel Cursor = crHandPoint Left = 120 Height = 16 Top = 128 Width = 113 Caption = 'groff.tuxproject.de' Font.Color = clBlue Font.Style = [fsUnderline] ParentColor = False ParentFont = False OnClick = lblWebsiteClick end object lblFossilRepo: TLabel Cursor = crHandPoint Left = 120 Height = 16 Top = 152 Width = 140 Caption = 'code.rosaelefanten.org' Font.Color = clBlue Font.Style = [fsUnderline] ParentColor = False ParentFont = False OnClick = lblFossilRepoClick end object lblGithubRepo: TLabel Cursor = crHandPoint Left = 120 Height = 16 Top = 176 Width = 68 Caption = 'github.com' Font.Color = clBlue Font.Style = [fsUnderline] ParentColor = False ParentFont = False OnClick = lblGithubRepoClick end end end object odOpenGroffFile: TOpenDialog Title = 'open a groff document' |
︙ | ︙ |
Modified src/unit1.pas from [c2d29a1e1b] to [7509f5f6d3].
︙ | ︙ | |||
21 22 23 24 25 26 27 | uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, ExtendedNotebook, SynEdit, fphttpclient, opensslsockets, RegExpr, LCLIntf, LCLType, IniPropStorage, Process, Helpers, fileinfo, {$IF DEFINED(WINDOWS)} winpeimagereader, | | | | 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, ExtendedNotebook, SynEdit, fphttpclient, opensslsockets, RegExpr, LCLIntf, LCLType, IniPropStorage, Process, Helpers, fileinfo, {$IF DEFINED(WINDOWS)} winpeimagereader, {$ELSEIF DEFINED(DARWIN)} machoreader, ssockets, sslsockets, sslbase, {$ELSEIF DEFINED(LINUX)} elfreader, {$ENDIF} BuildOutputWindow; type |
︙ | ︙ | |||
97 98 99 100 101 102 103 104 105 106 107 108 109 | procedure FormCreate(Sender: TObject); procedure lblFossilRepoClick(Sender: TObject); procedure lblGithubRepoClick(Sender: TObject); procedure lblWebsiteClick(Sender: TObject); procedure rdPdfChange(Sender: TObject); procedure rdPsChange(Sender: TObject); procedure SynEdit1Change(Sender: TObject); private var currentGroffFilePath: String; var currentGroffFileName: String; var hasGroff: Boolean; var unsavedChanges: Boolean; var latestGroffWindowsUrl: String; | > > > > | > > > | > > > | 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | procedure FormCreate(Sender: TObject); procedure lblFossilRepoClick(Sender: TObject); procedure lblGithubRepoClick(Sender: TObject); procedure lblWebsiteClick(Sender: TObject); procedure rdPdfChange(Sender: TObject); procedure rdPsChange(Sender: TObject); procedure SynEdit1Change(Sender: TObject); {$IFDEF DARWIN} procedure GetSocketHandler(Sender: TObject; const UseSSL: Boolean; out AHandler: TSocketHandler); {$ENDIF} private var currentGroffFilePath: String; var currentGroffFileName: String; var hasGroff: Boolean; var unsavedChanges: Boolean; {$IFDEF WINDOWS} var latestGroffWindowsUrl: String; {$ENDIF} var storeBuildSettings: Boolean; public end; var MainForm: TMainForm; BuildWindow: TBuildStatusWindow; implementation {$R *.lfm} { TMainForm } procedure TMainForm.FormCreate(Sender: TObject); var GroffOutputVersion: String; OnlineVersionsFile: String; {$IFDEF WINDOWS} reGroffVersion: TRegExpr; {$ENDIF} reGroffStudioVersion: TRegExpr; FileVerInfo: TFileVersionInfo; HasVersionUpdate: Integer; GroffHelpers: TGroffHelpers; ResStream: TResourceStream; {$IFDEF DARWIN} HTTPClient: TFPHttpClient; {$ENDIF} begin // What's the current running groff version? if RunCommand('troff', ['--version'], GroffOutputVersion) then begin edtGroffInstalledVersion.Text := GroffOutputVersion; hasGroff := True; end else begin |
︙ | ︙ | |||
170 171 172 173 174 175 176 | chkRefer.Checked := iniStorage.ReadBoolean('BuildUseRefer', False); chkTbl.Checked := iniStorage.ReadBoolean('BuildUseTbl', False); chkPdfMark.Checked := iniStorage.ReadBoolean('BuildUsePdfMark', False); rdPs.Checked := iniStorage.ReadBoolean('BuildToPostscript', False); rdPdf.Checked := iniStorage.ReadBoolean('BuildToPDF', False); end; | < > | 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 | chkRefer.Checked := iniStorage.ReadBoolean('BuildUseRefer', False); chkTbl.Checked := iniStorage.ReadBoolean('BuildUseTbl', False); chkPdfMark.Checked := iniStorage.ReadBoolean('BuildUsePdfMark', False); rdPs.Checked := iniStorage.ReadBoolean('BuildToPostscript', False); rdPdf.Checked := iniStorage.ReadBoolean('BuildToPDF', False); end; // What's the latest available version? FileVerInfo := TFileVersionInfo.Create(nil); try FileVerInfo.ReadFileInfo; edtGroffStudioInstalledVersion.Text := FileVerInfo.VersionStrings.Values['FileVersion']; lblAboutProductName.Caption := FileVerInfo.VersionStrings.Values['ProductName'] + ' ' + FileVerInfo.VersionStrings.Values['FileVersion']; {$IFDEF WINDOWS} OnlineVersionsFile := TFPCustomHTTPClient.SimpleGet('https://groff.tuxproject.de/updates/versions.txt'); reGroffVersion := TRegExpr.Create('groff-win ([\d\.]+) (.*)$'); reGroffVersion.ModifierM := True; if reGroffVersion.Exec(OnlineVersionsFile) then begin edtOnlineGroffVersionWindows.Text := reGroffVersion.Match[1]; latestGroffWindowsUrl := reGroffVersion.Match[2]; |
︙ | ︙ | |||
204 205 206 207 208 209 210 | // Compare the two versions - ours and the online one: GroffHelpers.VerStrCompare(reGroffStudioVersion.Match[1], FileVerInfo.VersionStrings.Values['FileVersion'], HasVersionUpdate); if HasVersionUpdate > 0 then MainStatusBar.Panels[2].Text := 'update ' + reGroffStudioVersion.Match[1] + ' available' else MainStatusBar.Panels[2].Text := IntToStr(HasVersionUpdate); end else MainStatusBar.Panels[2].Text := ''; | > > > > > > > > > > > > > > > > > > > > > | | | | < | | < > > > | 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 | // Compare the two versions - ours and the online one: GroffHelpers.VerStrCompare(reGroffStudioVersion.Match[1], FileVerInfo.VersionStrings.Values['FileVersion'], HasVersionUpdate); if HasVersionUpdate > 0 then MainStatusBar.Panels[2].Text := 'update ' + reGroffStudioVersion.Match[1] + ' available' else MainStatusBar.Panels[2].Text := IntToStr(HasVersionUpdate); end else MainStatusBar.Panels[2].Text := ''; {$ELSE} // Non-Windows platforms won't need some of that. {$IFDEF DARWIN} // What's the latest available version? MainStatusBar.Panels[2].Text := ''; try HTTPClient := TFPHTTPClient.Create(Nil); HTTPClient.OnGetSocketHandler := @GetSocketHandler; OnlineVersionsFile := HTTPClient.SimpleGet('https://groff.tuxproject.de/updates/versions.txt'); reGroffStudioVersion := TRegExpr.Create('studio-macos ([\d\.]+) (.*)$'); reGroffStudioVersion.ModifierM := True; if reGroffStudioVersion.Exec(OnlineVersionsFile) then begin // Compare the two versions - ours and the online one: GroffHelpers.VerStrCompare(reGroffStudioVersion.Match[1], FileVerInfo.VersionStrings.Values['FileVersion'], HasVersionUpdate); if HasVersionUpdate > 0 then MainStatusBar.Panels[2].Text := 'update ' + reGroffStudioVersion.Match[1] + ' available' else MainStatusBar.Panels[2].Text := IntToStr(HasVersionUpdate); end; finally HTTPClient.Free; end; {$ENDIF} edtOnlineGroffVersionWindows.Text := 'n/a'; btnDownloadGroffWindows.Enabled := False; {$ENDIF} finally FileVerInfo.Free; end; // Loaded file display MainStatusBar.Panels[0].Text := ''; // Groff build status MainStatusBar.Panels[1].Text := ''; end; |
︙ | ︙ | |||
390 391 392 393 394 395 396 397 398 399 | if unsavedChanges then with Application do begin BoxStyle := MB_ICONQUESTION + MB_YESNO; Reply := MessageBox('Do you want to save the document first?', 'UnsavedChanges', BoxStyle); if Reply = IDYES then SynEdit1.Lines.SaveToFile(currentGroffFilePath); end; end; end. | > > > > > > > > > > > | 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 | if unsavedChanges then with Application do begin BoxStyle := MB_ICONQUESTION + MB_YESNO; Reply := MessageBox('Do you want to save the document first?', 'UnsavedChanges', BoxStyle); if Reply = IDYES then SynEdit1.Lines.SaveToFile(currentGroffFilePath); end; end; {$IFDEF DARWIN} // Fix HTTPS on macOS: procedure TMainForm.GetSocketHandler(Sender: TObject; const UseSSL: Boolean; out AHandler: TSocketHandler); begin if UseSSL then begin AHandler := TSSLSocketHandler.Create; TSSLSocketHandler(AHandler).SSLType := stTLSv1_2; end else AHandler := TSocketHandler.Create; end; {$ENDIF} end. |