Index: CHANGES.txt
==================================================================
--- CHANGES.txt
+++ CHANGES.txt
@@ -6,10 +6,11 @@
[Improved] If no error has occurred, the log file will contain a success message.
[Improved] The default font looked gross on macOS. This should be better now.
[Bugfix] Calling troff over the system default shell now, potentially finding more paths.
[Improved] BuildDocument uses a simpler execution approach now.
[Feature] macOS Cmd+X/C/V are supported now.
+[Feature] Added a loading window so you won't think groffstudio would procrastinate.
-------------------------------
Version 0.12.0
2022-03-14
Index: src/groffstudio.lpi
==================================================================
--- src/groffstudio.lpi
+++ src/groffstudio.lpi
@@ -21,11 +21,11 @@
-
+
@@ -75,10 +75,18 @@
+
+
+
+
+
+
+
+
Index: src/groffstudio.lpr
==================================================================
--- src/groffstudio.lpr
+++ src/groffstudio.lpr
@@ -1,25 +1,51 @@
-program groffstudio;
-
-{$mode objfpc}{$H+}
-
-uses
- {$IFDEF UNIX}
- cthreads,
- {$ENDIF}
- {$IFDEF HASAMIGA}
- athreads,
- {$ENDIF}
- Interfaces, // this includes the LCL widgetset
- Forms, lazcontrols, Unit1, Helpers, BuildOutputWindow
- { you can add units after this };
-
-{$R *.res}
-
-begin
- RequireDerivedFormResource:=True;
- Application.Scaled:=True;
- Application.Initialize;
- Application.CreateForm(TMainForm, MainForm);
- Application.Run;
-end.
-
+program groffstudio;
+
+{
+ The contents of this file are subject to the terms of the
+ Common Development and Distribution License, Version 1.1 only
+ (the "License"). You may not use this file except in compliance
+ with the License.
+
+ See the file LICENSE in this distribution for details.
+ A copy of the CDDL is also available via the Internet at
+ https://spdx.org/licenses/CDDL-1.1.html
+
+ When distributing Covered Code, include this CDDL HEADER in each
+ file and include the contents of the LICENSE file from this
+ distribution.
+}
+
+{$mode objfpc}{$H+}
+
+uses
+ {$IFDEF UNIX}
+ cthreads,
+ {$ENDIF}
+ {$IFDEF HASAMIGA}
+ athreads,
+ {$ENDIF}
+ Interfaces,
+ Forms, lazcontrols, Unit1, Helpers, BuildOutputWindow, Splashscreen;
+
+{$R *.res}
+
+var
+ Splash: TSplashscreenWindow;
+
+begin
+ RequireDerivedFormResource:=True;
+ Application.Scaled:=True;
+ Application.Initialize;
+
+ { Load the loading screen }
+ Splash := TSplashscreenWindow.Create(Application);
+ Splash.Show;
+ Splash.Update;
+ Application.ProcessMessages;
+
+ Application.CreateForm(TMainForm, MainForm);
+
+ Splash.Close;
+ Application.Run;
+end.
+
ADDED src/splashscreen.lfm
Index: src/splashscreen.lfm
==================================================================
--- /dev/null
+++ src/splashscreen.lfm
@@ -0,0 +1,20 @@
+object SplashscreenWindow: TSplashscreenWindow
+ Left = 493
+ Height = 80
+ Top = 160
+ Width = 168
+ BorderStyle = bsNone
+ Caption = 'preparing'
+ ClientHeight = 80
+ ClientWidth = 168
+ FormStyle = fsSplash
+ object Label1: TLabel
+ Left = 16
+ Height = 37
+ Top = 16
+ Width = 141
+ Caption = 'preparing ...'
+ Font.Height = -27
+ ParentFont = False
+ end
+end
ADDED src/splashscreen.pas
Index: src/splashscreen.pas
==================================================================
--- /dev/null
+++ src/splashscreen.pas
@@ -0,0 +1,42 @@
+unit Splashscreen;
+
+{
+ The contents of this file are subject to the terms of the
+ Common Development and Distribution License, Version 1.1 only
+ (the "License"). You may not use this file except in compliance
+ with the License.
+
+ See the file LICENSE in this distribution for details.
+ A copy of the CDDL is also available via the Internet at
+ https://spdx.org/licenses/CDDL-1.1.html
+
+ When distributing Covered Code, include this CDDL HEADER in each
+ file and include the contents of the LICENSE file from this
+ distribution.
+}
+
+{$mode ObjFPC}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
+
+type
+
+ { TSplashscreenWindow }
+
+ TSplashscreenWindow = class(TForm)
+ Label1: TLabel;
+ private
+
+ public
+
+ end;
+
+implementation
+
+{$R *.lfm}
+
+end.
+
Index: src/unit1.lfm
==================================================================
--- src/unit1.lfm
+++ src/unit1.lfm
@@ -5,17 +5,17 @@
Width = 847
Caption = 'groffstudio'
ClientHeight = 692
ClientWidth = 847
DefaultMonitor = dmPrimary
- LCLVersion = '3.99.0.0'
+ Position = poScreenCenter
OnClose = FormClose
OnCreate = FormCreate
object MainStatusBar: TStatusBar
Left = 0
- Height = 18
- Top = 674
+ Height = 23
+ Top = 669
Width = 847
Panels = <
item
Text = 'file name with save status'
Width = 200
@@ -40,40 +40,40 @@
Style = tsFlatButtons
TabIndex = 0
TabOrder = 1
object tsEdit: TTabSheet
Caption = 'edit a groff document'
- ClientHeight = 626
- ClientWidth = 821
+ ClientHeight = 631
+ ClientWidth = 819
ParentFont = False
object GroupBox1: TGroupBox
Left = 10
Height = 66
- Top = 555
- Width = 801
+ Top = 560
+ Width = 799
Align = alBottom
BorderSpacing.Left = 10
BorderSpacing.Right = 10
BorderSpacing.Bottom = 5
Caption = 'build'
- ClientHeight = 39
- ClientWidth = 791
+ ClientHeight = 46
+ ClientWidth = 795
TabOrder = 0
object Label1: TLabel
Left = 184
- Height = 16
+ Height = 15
Top = -4
- Width = 83
+ Width = 72
Caption = 'macro to use:'
ParentColor = False
end
object cmbMacro: TComboBox
Left = 184
- Height = 20
+ Height = 23
Top = 16
Width = 100
- ItemHeight = 19
+ ItemHeight = 15
Items.Strings = (
'man'
'me'
'mm'
'mom'
@@ -81,50 +81,50 @@
)
TabOrder = 0
Text = '[ select ]'
end
object Label2: TLabel
- Left = 659
- Height = 16
+ Left = 672
+ Height = 15
Top = -4
- Width = 87
+ Width = 78
Anchors = [akTop, akRight]
Caption = 'output format:'
ParentColor = False
end
object rdPs: TRadioButton
- Left = 655
- Height = 18
+ Left = 673
+ Height = 19
Top = 16
- Width = 85
+ Width = 71
Anchors = [akTop, akRight]
Caption = 'PostScript'
TabOrder = 1
end
object rdPdf: TRadioButton
- Left = 738
- Height = 18
+ Left = 753
+ Height = 19
Top = 16
- Width = 50
+ Width = 39
Anchors = [akTop, akRight]
Caption = 'PDF'
TabOrder = 2
end
object Label3: TLabel
- Left = 400
- Height = 16
+ Left = 419
+ Height = 15
Top = -4
- Width = 91
+ Width = 76
Anchors = [akTop, akRight]
Caption = 'preprocessors:'
ParentColor = False
end
object Label4: TLabel
- Left = 533
- Height = 16
+ Left = 544
+ Height = 15
Top = -4
- Width = 41
+ Width = 34
Anchors = [akTop, akRight]
Caption = 'extras:'
ParentColor = False
end
object btnBuild: TButton
@@ -140,21 +140,21 @@
TabOrder = 3
OnClick = btnBuildClick
end
object chkLogFile: TCheckBox
Left = 80
- Height = 18
+ Height = 19
Hint = 'If enabled, a log file containing the groff output will be placed alongside the source document.'
Top = 16
- Width = 79
+ Width = 68
Caption = 'log to file'
Enabled = False
TabOrder = 4
end
object chkBoxPreprocessors: TCheckComboBox
- Left = 415
- Height = 20
+ Left = 419
+ Height = 22
Top = 15
Width = 100
Anchors = [akTop, akRight]
ItemHeight = 16
Items.Strings = (
@@ -164,68 +164,66 @@
'pic'
'refer'
'tbl'
)
TabOrder = 5
- Text = '0'
end
object chkBoxExtras: TCheckComboBox
- Left = 540
- Height = 20
+ Left = 544
+ Height = 22
Top = 15
Width = 100
Anchors = [akTop, akRight]
ItemHeight = 16
Items.Strings = (
'hdtbl'
'Pdfmark'
)
TabOrder = 6
- Text = '0'
end
end
object btnSaveGroff: TButton
- Left = 736
+ Left = 734
Height = 28
- Top = 523
+ Top = 528
Width = 75
Anchors = [akRight, akBottom]
Caption = 'save'
Font.Style = [fsBold]
ParentFont = False
TabOrder = 1
OnClick = btnSaveGroffClick
end
object btnLoadGroff: TButton
- Left = 655
+ Left = 653
Height = 28
- Top = 523
+ Top = 528
Width = 75
Anchors = [akRight, akBottom]
Caption = 'load'
Font.Style = [fsBold]
ParentFont = False
TabOrder = 2
OnClick = btnLoadGroffClick
end
object Label5: TLabel
- Left = 128
- Height = 16
- Top = 535
- Width = 509
+ Left = 197
+ Height = 15
+ Top = 541
+ Width = 438
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 = 518
+ Height = 523
Top = 0
- Width = 801
+ Width = 799
Anchors = [akTop, akLeft, akRight, akBottom]
Font.CharSet = 4
Font.Height = -13
Font.Name = 'Andale Mono'
Font.Pitch = fpFixed
@@ -734,85 +732,85 @@
end
end
end
object tsSettings: TTabSheet
Caption = 'groffstudio settings'
- ClientHeight = 626
- ClientWidth = 821
+ ClientHeight = 631
+ ClientWidth = 819
object chkAutoSaveBuildSettings: TCheckBox
Left = 0
- Height = 18
+ Height = 19
Top = 16
- Width = 341
+ Width = 309
Caption = 'save and restore the chosen build settings for next time'
TabOrder = 0
end
object btnSaveSettings: TButton
- Left = 732
+ Left = 730
Height = 25
- Top = 595
+ Top = 600
Width = 91
Anchors = [akRight, akBottom]
Caption = 'save settings'
TabOrder = 1
OnClick = btnSaveSettingsClick
end
object Label14: TLabel
Left = 0
- Height = 16
+ Height = 15
Top = 80
- Width = 150
+ Width = 129
Caption = 'yes, that''s all for now. :-)'
ParentColor = False
end
object chkUpdateCheckOnStart: TCheckBox
Left = 0
- Height = 18
+ Height = 19
Top = 40
- Width = 190
+ Width = 169
Caption = 'check for updates on startup'
TabOrder = 2
end
end
object tsGroff: TTabSheet
Caption = 'groff version'
- ClientHeight = 626
- ClientWidth = 821
+ ClientHeight = 631
+ ClientWidth = 819
object GroupBox2: TGroupBox
Left = 20
Height = 57
- Top = 561
- Width = 781
+ Top = 566
+ Width = 779
Align = alBottom
BorderSpacing.Left = 20
BorderSpacing.Right = 20
BorderSpacing.Bottom = 8
Caption = 'groff for Windows'
- ClientHeight = 30
- ClientWidth = 771
+ ClientHeight = 37
+ ClientWidth = 775
TabOrder = 0
object Label6: TLabel
Left = 8
- Height = 16
+ Height = 15
Top = 8
- Width = 125
+ Width = 108
Caption = 'latest version online:'
ParentColor = False
end
object edtOnlineGroffVersionWindows: TEdit
Left = 136
- Height = 17
+ Height = 15
Top = 8
- Width = 538
+ Width = 542
Anchors = [akTop, akLeft, akRight]
BorderStyle = bsNone
Enabled = False
TabOrder = 0
Text = 'fetching ...'
end
object btnDownloadGroffWindows: TButton
- Left = 682
+ Left = 686
Height = 25
Top = 5
Width = 80
Anchors = [akTop, akRight]
Caption = 'download it'
@@ -820,42 +818,42 @@
OnClick = btnDownloadGroffWindowsClick
end
end
object Label7: TLabel
Left = 8
- Height = 32
+ Height = 30
Top = 8
- Width = 809
+ Width = 807
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
+ Height = 15
Top = 56
- Width = 81
+ Width = 70
Caption = 'groff version:'
ParentColor = False
end
object edtGroffInstalledVersion: TEdit
Left = 144
- Height = 17
+ Height = 15
Top = 56
- Width = 673
+ Width = 671
Anchors = [akTop, akLeft, akRight]
BorderStyle = bsNone
Enabled = False
TabOrder = 1
end
object lblTroffCommandNotFound: TLabel
Left = 8
- Height = 48
+ Height = 45
Top = 112
- Width = 808
+ Width = 806
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
@@ -862,95 +860,95 @@
Visible = False
WordWrap = True
end
object edtGroffstudioInstalledVersion: TEdit
Left = 144
- Height = 17
+ Height = 15
Top = 77
- Width = 673
+ Width = 671
Anchors = [akTop, akLeft, akRight]
BorderStyle = bsNone
Enabled = False
TabOrder = 2
end
object Label10: TLabel
Left = 8
- Height = 16
+ Height = 15
Top = 77
- Width = 118
+ Width = 103
Caption = 'groffstudio version:'
ParentColor = False
end
end
object tsAbout: TTabSheet
Caption = 'about groffstudio'
- ClientHeight = 626
- ClientWidth = 821
+ ClientHeight = 631
+ ClientWidth = 819
object lblAboutProductName: TLabel
Left = 0
- Height = 53
+ Height = 61
Top = 16
- Width = 297
+ Width = 315
Caption = 'groffstudio x.y.z'
Font.Color = clBlue
Font.Height = -45
ParentColor = False
ParentFont = False
end
object Label8: TLabel
Left = 20
- Height = 16
+ Height = 15
Top = 80
- Width = 246
+ Width = 217
Caption = 'brought to you by tux0r and contributors'
ParentColor = False
end
object Label11: TLabel
Left = 0
- Height = 16
+ Height = 15
Top = 128
- Width = 53
+ Width = 45
Caption = 'Website:'
Font.Style = [fsItalic]
ParentColor = False
ParentFont = False
end
object Label12: TLabel
Left = 0
- Height = 16
+ Height = 15
Top = 152
- Width = 69
+ Width = 57
Caption = 'Repository:'
Font.Style = [fsItalic]
ParentColor = False
ParentFont = False
end
object Label13: TLabel
Left = 0
- Height = 16
+ Height = 15
Top = 176
- Width = 119
+ Width = 99
Caption = 'Repository (mirror):'
Font.Style = [fsItalic]
ParentColor = False
ParentFont = False
end
object mLicense: TMemo
Left = 0
Height = 418
Top = 216
- Width = 828
+ Width = 826
Anchors = [akTop, akLeft, akRight]
ScrollBars = ssAutoBoth
TabOrder = 0
end
object lblWebsite: TLabel
Cursor = crHandPoint
Left = 120
- Height = 16
+ Height = 15
Top = 128
- Width = 113
+ Width = 99
Caption = 'groff.tuxproject.de'
Font.Color = clBlue
Font.Style = [fsUnderline]
ParentColor = False
ParentFont = False
@@ -957,13 +955,13 @@
OnClick = lblWebsiteClick
end
object lblFossilRepo: TLabel
Cursor = crHandPoint
Left = 120
- Height = 16
+ Height = 15
Top = 152
- Width = 140
+ Width = 121
Caption = 'code.rosaelefanten.org'
Font.Color = clBlue
Font.Style = [fsUnderline]
ParentColor = False
ParentFont = False
@@ -970,13 +968,13 @@
OnClick = lblFossilRepoClick
end
object lblGithubRepo: TLabel
Cursor = crHandPoint
Left = 120
- Height = 16
+ Height = 15
Top = 176
- Width = 68
+ Width = 62
Caption = 'github.com'
Font.Color = clBlue
Font.Style = [fsUnderline]
ParentColor = False
ParentFont = False