Fluid: update documentation scripts

TeX and pdf generation untested at this point
This commit is contained in:
Matthias Melcher 2025-04-18 21:40:33 +02:00
parent 374f22b8bf
commit 48e22d246d
4 changed files with 56 additions and 49 deletions

View File

@ -15,6 +15,7 @@
#
set(DOCS)
set(GIT_REVISION "")
set(YEAR "")
set(CURRENT_DATE "")
@ -26,19 +27,16 @@ if(FLTK_BUILD_FLUID_DOCS OR FLTK_BUILD_PDF_DOCS)
# create required variables
execute_process(COMMAND date "+%Y"
OUTPUT_VARIABLE YEAR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(TIMESTAMP YEAR "%Y" UTC)
# note: current locale is used for abbreviated month
execute_process(COMMAND date "+%b %d, %Y"
OUTPUT_VARIABLE CURRENT_DATE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(TIMESTAMP CURRENT_DATE "%b %d, %Y" UTC)
string(TIMESTAMP PDF_DATE "D:%Y%m%d%H%M%SZ" UTC)
string(TIMESTAMP TODAY "%B %d, %Y" UTC)
string(REPLACE " 0" " " TODAY "${TODAY}")
# Find "short" doxygen version if it was built from Git
# Note: this is still needed in CMake 3.12.0 but later CMake versions
# Note: this is still needed in CMake 3.15 but later CMake versions
# (notably 3.25) remove the Git revision in 'DOXYGEN_VERSION'.
# Todo: Find the "first good" CMake version and remove this redundant
# code once we require this as our minimal version and replace the
@ -144,6 +142,8 @@ if(FLTK_BUILD_PDF_DOCS AND FLTK_BUILD_FLUID_DOCS)
# convert Doxybook to current doxygen version
set(DOXY_VERSION "${DOXYGEN_VERSION_SHORT}") #
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${DOXYFILE}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
@ -164,6 +164,12 @@ if(FLTK_BUILD_PDF_DOCS AND FLTK_BUILD_FLUID_DOCS)
@ONLY
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/make_pdf.in
${CMAKE_CURRENT_BINARY_DIR}/make_pdf
@ONLY
)
# generate fluid.pdf
add_custom_command(
@ -173,7 +179,7 @@ if(FLTK_BUILD_PDF_DOCS AND FLTK_BUILD_FLUID_DOCS)
${CMAKE_CURRENT_BINARY_DIR}/fluid-title.tex
${CMAKE_CURRENT_BINARY_DIR}/fluid-book.tex
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE}
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/make_pdf
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/make_pdf
COMMAND cp -f latex/refman.pdf fluid.pdf
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${DOXYFILE}
${CMAKE_CURRENT_BINARY_DIR}/fluid-title.tex

View File

@ -26,10 +26,15 @@
#
# Used in: Makefile and CMakeLists.txt
run_pdflatex() {
pdflatex --interaction=nonstopmode \
"\pdfinfo{/CreationDate(@PDF_DATE@)/ModDate(@PDF_DATE@)}\input{refman.tex}"
}
( cd latex
pdflatex --interaction=nonstopmode refman.tex
run_pdflatex
makeindex refman.idx
pdflatex --interaction=nonstopmode refman.tex
run_pdflatex
latex_count=5
while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log \
&& [ $latex_count -gt 0 ]

View File

@ -23,9 +23,9 @@ Permission is granted to reproduce this manual or any portion for any purpose,}\
{\small
provided this copyright and permission notice are preserved.}\\
\vspace*{1.5cm}
{\large Generated by Doxygen @DOXYGEN_VERSION_SHORT@}\\
{\large Generated by Doxygen @DOXYGEN_VERSION@}\\
\vspace*{0.5cm}
\today{}\\
@TODAY@\\
\vspace*{0.5cm}
{\small Git revision @FLTK_GIT_REVISION@}\\
\end{center}

View File

@ -10,29 +10,29 @@
This feature allows developers to edit the C++ source files generated by Fluid and
then merge those changes back into the corresponding Fluid project file (.fl). This
can streamline the development process by reducing the need to switch between Fluid
and your code editor for minor adjustments.
and your code editor for minor adjustments.
**Important Note:** MergeBack is currently experimental and may not handle all
\note MergeBack is currently experimental and may not handle all
scenarios perfectly. It's advisable to back up your project files before using this
feature to prevent potential data loss.
feature to prevent potential data loss.
**Enabling MergeBack:**
<H2>Enabling MergeBack</H2>
1. **Open Your Project in Fluid:**
- Launch Fluid and load your existing `.fl` project file.
- Launch Fluid and load your existing `.fl` project file.
2. **Enable MergeBack:**
- Navigate to the **Settings Panel**.
- In the **Project Settings**, locate and enable the **MergeBack** option.
- Navigate to the **Settings Panel**.
- In the **Project Settings**, locate and enable the **MergeBack** option.
Once enabled, Fluid assigns a unique ID to each node in your project.
Additionally, user-editable code sections in the generated source files will
be marked with special divider lines, indicating areas that can be edited
and later merged back.
**Understanding the Code Markers:**
<H2>Understanding the Code Markers:</H2>
In the generated `.cxx` files, editable sections are demarcated as follows:
In the generated `.cxx` files, editable sections are demarcated as follows:
```cpp
static void cb_script_panel(Fl_Double_Window*, void*) {
@ -42,43 +42,39 @@
//fl ▲ ----------=~-~~=-=--=~-----------~-==--~=~-~~--~=-~=~- ▲ fl//
}
```
The lines beginning with `//fl ▼` and `//fl ▲` are markers that Fluid
uses to identify editable sections. These markers contain encoded information
about the code block, including a CRC32 checksum and a unique node ID. Fluid
uses this information during the merge process to detect changes and associate
them with the correct nodes in your project.
them with the correct nodes in your project.
**Editing and Merging Back:**
<H2>Editing and Merging Back</H2>
1. **Edit the Source Code:**
- Open the generated `.cxx` file in your preferred code editor.
- Make your desired changes within the marked sections.
- Open the generated `.cxx` file in your preferred code editor.
- Make your desired changes within the marked sections.
2. **Merge Changes Back into Fluid:**
- After saving your edits, return to Fluid.
- Select **File > MergeBack** from the main menu or press `Ctrl+Shift+M`.
- Fluid will analyze the `.cxx` file, detect changes within the marked
sections, and offer to merge them back into the `.fl` project file.
- After saving your edits, return to Fluid.
- Select **File > MergeBack** from the main menu or press `Ctrl+Shift+M`.
- Fluid will analyze the `.cxx` file, detect changes within the marked
sections, and offer to merge them back into the `.fl` project file.
**Things to Keep in Mind:**
<H2>Things to Keep in Mind</H2>
- **Scope of MergeBack:** Currently, MergeBack supports merging changes
made to code blocks and widget callbacks. Other modifications might
not be recognized or merged correctly.
- **Scope of MergeBack:** Currently, MergeBack supports merging changes
made to code blocks and widget callbacks. Other modifications might
not be recognized or merged correctly.
- **Conflict Detection:** Fluid calculates checksums (CRC32) for the
code blocks to detect changes. If discrepancies are found, Fluid
will prompt you with options to merge or cancel the changes.
- **Undo Functionality:** In case of unintended merges, Fluid provides
an undo feature to revert the project to its previous state.
- **Conflict Detection:** Fluid calculates checksums (CRC32) for the
code blocks to detect changes. If discrepancies are found, Fluid
will prompt you with options to merge or cancel the changes.
<H2>Caution</H2>
- **Undo Functionality:** In case of unintended merges, Fluid provides
an undo feature to revert the project to its previous state.
**Caution:** Given the experimental nature of MergeBack, unexpected
behaviors may occur. Always ensure you have backups of your project
files before using this feature.
\note The MergeBack feature is still under development. It's recommended
to use it cautiously and provide feedback to the FLTK development
team to help improve its functionality and reliability.
Given the experimental nature of MergeBack, unexpected
behaviors may occur. Always ensure you have backups of your project
files before using this feature.
*/