16 Commits

Author SHA1 Message Date
Jaye Evins 1c902230fe Big-Ugly Style Update (#278)
* Bulk replaced tabs with spaces
* Bulk removed trailing whitespace from lines
* Replaced c-style comments with c++-style comments in file banners
* Replace nested namespace definitions with single concise definitions (C++17), this keeps the indentation more manageable
* Cleanup ordering and spacing of include directives
* Bulk renaming of header file extensions from '.h' to '.hpp'.
* Update CODING-STYLE.md
* Update target_compile_features from cxx_std_11 to cxx_std_20.
* Refresh .clang-format file.  Still needs a lot of tweaking.
2026-01-07 19:43:34 -05:00
Jaye Evins 3cd173a37f Replaced all Qt foreach loops with modern C++ range-based loops. (#277) 2026-01-05 15:24:00 -05:00
Jaye Evins 45a92eda89 Base TemplatePicker on QListView instead of QListWidget (#276) 2026-01-05 14:09:00 -05:00
Jaye Evins 742b80fc47 Use canonical file paths for filenames in model (#275) 2026-01-02 13:34:44 -05:00
Jaye Evins d17bb2e1be Add merge input option to glabels-batch-qt. (#267,#274) 2026-01-01 19:51:38 -05:00
alextrical 3309837080 Add instructions to compile on MacOS AMD64 and ARM64 (#244)
* Add instructions to compile on MacOS AMD64 and ARM64
* Update build instructions for QT6
* Update BUILD-INSTRUCTIONS-MACOS.md
2025-12-30 21:26:00 -05:00
Martin Malec 19a8c246ad Update glabels-4 major version in doc from qt-5 to qt-6 (#269) 2025-12-30 18:48:27 -05:00
Jaye Evins ce8bbad26c Bypass Qt font metric calculations (#272)
- This originally showed up as fonts rendering differently on X11 than Wayland. (#230)
- Setting font size in points should be device and back end independent, however the same exact font face and size, on
  the same machine, sometimes results in different font metrics between the xcb and wayland Qt back ends.
- Setting font size in pixels, assuming a virtual DPI of 96 pixels/inch, results in consistent font metrics and rendering
  between these back ends. Furthermore, this virtual DPI works for either on-screen or hi-res printer QPainter contexts.
- This virtual DPI seems to work correctly with some limited testing with Windows and MacOS.
- Add rendering tests to build-tests CI script.
2025-12-30 00:33:17 -05:00
Jaye Evins 82b264a7a0 Manpages update for glabels-qt and glabels-batch-qt
- Document new verbose version option (-V/--Version) introduced in #257
2025-12-17 23:50:33 -05:00
Jaye Evins 90e236f847 Remove files from Settings::recentFileList(), if they fail to open. (#268)
- i.e. they no longer exist or have been moved
- update recent file menu in StartupView as Settings change
2025-12-17 21:26:30 -05:00
p0358 aba0f11616 Preparation for flatpack support (#255)
- Updates to project and desktop metadata in preparation for flatpak packaging
- These updates are independent of flatpack
- This commit unmingles the actual flatpack packaging from #255
2025-12-17 16:07:57 -05:00
Jaye Evins 41656aef6b Update README to specify repo is for glabels-qt
Clarify repository purpose and differentiate from legacy version.
2025-12-11 19:57:29 -05:00
Merikei 7f1fa64114 Fix typo that prevents user roll templates from having a customisable length (#263) 2025-12-10 13:38:44 -05:00
Jaye Evins 6c10571ba4 In MergeView, replace QTableWidget with QTableView with custom model (#266,#217)
QTableWidget was a major bottleneck for large merge sources (#217).  This is because a QTableWidgetItem needed to be created for every field in every record of the merge data, whether they are being displayed or not.  This was not a problem for small merge sources (only a few dozen records max), however for larger data sets this would severely affect performance and make the application unresponsive.  QTableView only renders the fields and records currently visible.
2025-12-10 13:17:25 -05:00
Jaye Evins f1e50d8574 Polling of available printers in now asynchronous (#264,#256)
- Increased polling interval from 1s to 10s
- Use QtConcurrent::run to initiate a poll asynchronously to main event loop
- Do not initiate a poll if the previous poll has not completed
- Use copies instead of references to mCurrentAvailablePrinters in public API
2025-12-09 09:22:54 -05:00
Jaye Evins b6cac2d208 Fix several compile issues (#261)
Fixed several code issues.  Mostly pedantic compiler warnings.  But also a sign issue exposed by newer compilers (#228, #260)
2025-12-06 15:58:38 -05:00
477 changed files with 52403 additions and 51914 deletions
+178 -20
View File
@@ -1,28 +1,72 @@
--- ---
Language: Cpp Language: Cpp
# BasedOnStyle: Google
AccessModifierOffset: -8 AccessModifierOffset: -8
AlignAfterOpenBracket: Align AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: true AlignArrayOfStructures: None
AlignConsecutiveDeclarations: true AlignConsecutiveAssignments:
AlignEscapedNewlinesLeft: true Enabled: true
AlignOperands: true AcrossEmptyLines: false
AlignTrailingComments: true AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: true
AlignConsecutiveBitFields:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: false
AlignConsecutiveDeclarations:
Enabled: true
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: true
AlignConsecutiveMacros:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: false
AlignConsecutiveShortCaseStatements:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCaseColons: false
AlignEscapedNewlines: Left
AlignOperands: Align
AlignTrailingComments:
Kind: Always
OverEmptyLines: 0
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false AllowBreakBeforeNoexceptSpecifier: Never
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false AllowShortCaseLabelsOnASingleLine: false
AllowShortCompoundRequirementOnASingleLine: true
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Inline AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: false AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: false AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true AlwaysBreakTemplateDeclarations: Yes
AttributeMacros:
- __capability
BinPackArguments: false BinPackArguments: false
BinPackParameters: false BinPackParameters: false
BitFieldColonSpacing: Both
BraceWrapping: BraceWrapping:
AfterCaseLabel: false
AfterClass: true AfterClass: true
AfterControlStatement: true AfterControlStatement: Always
AfterEnum: true AfterEnum: true
AfterExternBlock: false
AfterFunction: true AfterFunction: true
AfterNamespace: true AfterNamespace: true
AfterObjCDeclaration: true AfterObjCDeclaration: true
@@ -30,62 +74,176 @@ BraceWrapping:
AfterUnion: true AfterUnion: true
BeforeCatch: true BeforeCatch: true
BeforeElse: true BeforeElse: true
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakAdjacentStringLiterals: true
BreakAfterAttributes: Leave
BreakAfterJavaFieldAnnotations: false
BreakArrays: true
BreakBeforeBinaryOperators: None BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: Always
BreakBeforeBraces: Custom BreakBeforeBraces: Custom
BreakBeforeInlineASMColon: OnlyMultiline
BreakBeforeTernaryOperators: true BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false BreakConstructorInitializers: BeforeColon
BreakInheritanceList: BeforeColon
BreakStringLiterals: true
ColumnLimit: 110 ColumnLimit: 110
CommentPragmas: '^ IWYU pragma:' CommentPragmas: '^ IWYU pragma:'
ConstructorInitializerAllOnOneLineOrOnePerLine: true CompactNamespaces: false
ConstructorInitializerIndentWidth: 8 ConstructorInitializerIndentWidth: 8
ContinuationIndentWidth: 8 ContinuationIndentWidth: 8
Cpp11BracedListStyle: true Cpp11BracedListStyle: true
DerivePointerAlignment: true DerivePointerAlignment: true
DisableFormat: false DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false ExperimentalAutoDetectBinPacking: false
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] FixNamespaceComments: false
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
IncludeBlocks: Preserve
IncludeCategories: IncludeCategories:
- Regex: '^"[A-Z].*\.h' - Regex: '^"[A-Z].*\.h'
Priority: 1 Priority: 1
SortPriority: 0
CaseSensitive: false
- Regex: '^<Q[A-Za-z]*\>' - Regex: '^<Q[A-Za-z]*\>'
Priority: 2 Priority: 2
SortPriority: 0
CaseSensitive: false
- Regex: '^<[a-z]*>' - Regex: '^<[a-z]*>'
Priority: 3 Priority: 3
SortPriority: 0
CaseSensitive: false
- Regex: '.*' - Regex: '.*'
Priority: 4 Priority: 4
SortPriority: 0
CaseSensitive: false
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseBlocks: false
IndentCaseLabels: false IndentCaseLabels: false
IndentExternBlock: AfterExternBlock
IndentGotoLabels: true
IndentPPDirectives: None
IndentRequiresClause: true
IndentWidth: 8 IndentWidth: 8
IndentWrappedFunctionNames: false IndentWrappedFunctionNames: false
InsertBraces: false
InsertNewlineAtEOF: false
InsertTrailingCommas: None
IntegerLiteralSeparator:
Binary: 0
BinaryMinDigits: 0
Decimal: 0
DecimalMinDigits: 0
Hex: 0
HexMinDigits: 0
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true KeepEmptyLinesAtTheStartOfBlocks: true
KeepEmptyLinesAtEOF: false
LambdaBodyIndentation: Signature
LineEnding: DeriveLF
MacroBlockBegin: '' MacroBlockBegin: ''
MacroBlockEnd: '' MacroBlockEnd: ''
MaxEmptyLinesToKeep: 2 MaxEmptyLinesToKeep: 2
NamespaceIndentation: All NamespaceIndentation: All
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2 ObjCBlockIndentWidth: 2
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: false ObjCSpaceBeforeProtocolList: false
PackConstructorInitializers: NextLine
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 1 PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300 PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120 PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakScopeResolution: 500
PenaltyBreakString: 1000 PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000 PenaltyExcessCharacter: 1000000
PenaltyIndentedWhitespace: 0
PenaltyReturnTypeOnItsOwnLine: 200 PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Left PointerAlignment: Left
PPIndentWidth: -1
QualifierAlignment: Leave
ReferenceAlignment: Pointer
ReflowComments: true ReflowComments: true
SortIncludes: true RemoveBracesLLVM: false
RemoveParentheses: Leave
RemoveSemicolon: false
RequiresClausePosition: OwnLine
RequiresExpressionIndentation: OuterScope
SeparateDefinitionBlocks: Leave
ShortNamespaceLines: 1
SkipMacroDefinitionBody: false
SortIncludes: CaseSensitive
SortJavaStaticImport: Before
SortUsingDeclarations: LexicographicNumeric
SpaceAfterCStyleCast: false SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeJsonColon: false
SpaceBeforeParens: ControlStatements SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false SpaceBeforeParensOptions:
AfterControlStatements: true
AfterForeachMacros: true
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: true
AfterOverloadedOperator: false
AfterPlacementOperator: true
AfterRequiresInClause: false
AfterRequiresInExpression: false
BeforeNonEmptyParentheses: false
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpacesBeforeTrailingComments: 1 SpacesBeforeTrailingComments: 1
SpacesInAngles: false SpacesInAngles: Never
SpacesInContainerLiterals: true SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false SpacesInLineCommentPrefix:
SpacesInParentheses: true Minimum: 1
Maximum: -1
SpacesInParens: Custom
SpacesInParensOptions:
InCStyleCasts: false
InConditionalStatements: true
InEmptyParentheses: false
Other: true
SpacesInSquareBrackets: false SpacesInSquareBrackets: false
Standard: Cpp11 Standard: c++20
StatementAttributeLikeMacros:
- Q_EMIT
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 8 TabWidth: 8
UseTab: ForIndentation UseTab: Never
VerilogBreakBetweenInstancePorts: true
WhitespaceSensitiveMacros:
- BOOST_PP_STRINGIZE
- CF_SWIFT_NAME
- NS_SWIFT_NAME
- PP_STRINGIZE
- STRINGIZE
... ...
+137 -12
View File
@@ -23,23 +23,18 @@ jobs:
matrix: matrix:
include: include:
- os: ubuntu-latest - os: ubuntu-latest
build_type: Release
c_compiler: gcc c_compiler: gcc
cpp_compiler: g++ cpp_compiler: g++
- os: ubuntu-latest - os: ubuntu-latest
build_type: Release
c_compiler: clang c_compiler: clang
cpp_compiler: clang++ cpp_compiler: clang++
- os: ubuntu-22.04 - os: ubuntu-22.04
build_type: Release
c_compiler: gcc c_compiler: gcc
cpp_compiler: g++ cpp_compiler: g++
- os: windows-latest - os: windows-latest
build_type: Release
c_compiler: cl c_compiler: cl
cpp_compiler: cl cpp_compiler: cl
- os: macos-latest - os: macos-latest
build_type: Release
c_compiler: clang c_compiler: clang
cpp_compiler: clang++ cpp_compiler: clang++
@@ -105,7 +100,7 @@ jobs:
with: with:
version: '6.2.*' version: '6.2.*'
install-deps: 'true' install-deps: 'true'
archives: 'qtbase qtsvg qttools icu qttranslations' archives: 'qtbase qtsvg qttools icu qttranslations qtwayland'
- name: Set reusable strings - name: Set reusable strings
id: strings id: strings
@@ -118,32 +113,162 @@ jobs:
cmake -B ${{ steps.strings.outputs.build-output-dir }} cmake -B ${{ steps.strings.outputs.build-output-dir }}
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_BUILD_TYPE=Release
-DCMAKE_TOOLCHAIN_FILE=${{ env.TOOLCHAIN_FILE }} -DCMAKE_TOOLCHAIN_FILE=${{ env.TOOLCHAIN_FILE }}
-S ${{ github.workspace }} -S ${{ github.workspace }}
- name: Build - name: Build
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config Release
- name: Test (Ubuntu) - name: Test (Ubuntu)
if: startsWith( matrix.os, 'ubuntu-' ) if: startsWith( matrix.os, 'ubuntu-' )
working-directory: ${{ steps.strings.outputs.build-output-dir }} working-directory: ${{ steps.strings.outputs.build-output-dir }}
run: | run: |
xvfb-run ./glabels/glabels-qt --Version xvfb-run -a ./glabels/glabels-qt --Version
xvfb-run ctest --build-config ${{ matrix.build_type }} xvfb-run -a ctest --build-config Release
- name: Test (Windows) - name: Test (Windows)
if: startsWith( matrix.os, 'windows-' ) if: startsWith( matrix.os, 'windows-' )
working-directory: ${{ steps.strings.outputs.build-output-dir }} working-directory: ${{ steps.strings.outputs.build-output-dir }}
env:
QT_ASSUME_STDERR_HAS_CONSOLE: 1
run: | run: |
ctest --build-config ${{ matrix.build_type }} ./glabels-batch/Release/glabels-batch-qt --Version
ctest --build-config Release
- name: Test (MacOS) - name: Test (MacOS)
if: startsWith( matrix.os, 'macos-' ) if: startsWith( matrix.os, 'macos-' )
working-directory: ${{ steps.strings.outputs.build-output-dir }} working-directory: ${{ steps.strings.outputs.build-output-dir }}
run: | run: |
./glabels/glabels-qt --Version ./glabels/glabels-qt --Version
ctest --build-config ${{ matrix.build_type }} ctest --build-config Release
- name: Install render test dependencies (Ubuntu-latest)
if: startsWith( matrix.os, 'ubuntu-latest' )
working-directory: ${{ steps.strings.outputs.build-output-dir }}
run: |
sudo apt-get -y install xwayland-run
sudo apt-get -y install comparepdf
- name: Install render test dependencies (Windows)
if: startsWith( matrix.os, 'windows' )
working-directory: ${{ steps.strings.outputs.build-output-dir }}
run: |
choco install diff-pdf
- name: Install render test dependencies (MacOS)
if: startsWith( matrix.os, 'macos' )
working-directory: ${{ steps.strings.outputs.build-output-dir }}
run: |
brew install diff-pdf
- name: Render tests (Ubuntu-latest)
if: startsWith( matrix.os, 'ubuntu-latest' )
working-directory: ${{ steps.strings.outputs.build-output-dir }}
shell: bash
env:
TEST_DIR: ${{ github.workspace }}/test-data
run: |
set +e
run-x() { xvfb-run -a "$@"; }
run-w() { wlheadless-run -c weston --log=/dev/null -- "$@"; }
#
#
echo "================"
echo "X11 render tests"
echo "================"
run-x ./glabels-batch/glabels-batch-qt --Version
#
# echo "-- Available fonts (X) -------------------------------------------------"
# run-x fc-list : family
# echo "------------------------------------------------------------------------"
#
echo "-----------------------------------"
run-x ./glabels-batch/glabels-batch-qt -o simple-shapes-x.pdf "$TEST_DIR/simple-shapes.glabels"
comparepdf -ca -v2 "$TEST_DIR/simple-shapes.pdf" simple-shapes-x.pdf
echo "-----------------------------------"
run-x ./glabels-batch/glabels-batch-qt -o simple-code39-x.pdf "$TEST_DIR/simple-code39.glabels"
comparepdf -ca -v2 "$TEST_DIR/simple-code39.pdf" simple-code39-x.pdf
echo "-----------------------------------"
run-x ./glabels-batch/glabels-batch-qt -o simple-text-liberation-sans-x.pdf "$TEST_DIR/simple-text-liberation-sans.glabels"
comparepdf -ca -v2 "$TEST_DIR/simple-text-liberation-sans.pdf" simple-text-liberation-sans-x.pdf
echo "-----------------------------------"
run-x ./glabels-batch/glabels-batch-qt -o simple-text-liberation-serif-x.pdf "$TEST_DIR/simple-text-liberation-serif.glabels"
comparepdf -ca -v2 "$TEST_DIR/simple-text-liberation-serif.pdf" simple-text-liberation-serif-x.pdf
echo "-----------------------------------"
#
#
echo "===================="
echo "Wayland render tests"
echo "===================="
run-w ./glabels-batch/glabels-batch-qt --Version
#
# echo "-- Available fonts (X) -------------------------------------------------"
# run-w fc-list : family
# echo "------------------------------------------------------------------------"
#
echo "-----------------------------------"
run-w ./glabels-batch/glabels-batch-qt -o simple-shapes-w.pdf "$TEST_DIR/simple-shapes.glabels"
comparepdf -ca -v2 "$TEST_DIR/simple-shapes.pdf" simple-shapes-w.pdf
echo "-----------------------------------"
run-w ./glabels-batch/glabels-batch-qt -o simple-code39-w.pdf "$TEST_DIR/simple-code39.glabels"
comparepdf -ca -v2 "$TEST_DIR/simple-code39.pdf" simple-code39-w.pdf
echo "-----------------------------------"
run-w ./glabels-batch/glabels-batch-qt -o simple-text-liberation-sans-w.pdf "$TEST_DIR/simple-text-liberation-sans.glabels"
comparepdf -ca -v2 "$TEST_DIR/simple-text-liberation-sans.pdf" simple-text-liberation-sans-w.pdf
echo "-----------------------------------"
run-w ./glabels-batch/glabels-batch-qt -o simple-text-liberation-serif-w.pdf "$TEST_DIR/simple-text-liberation-serif.glabels"
comparepdf -ca -v2 "$TEST_DIR/simple-text-liberation-serif.pdf" simple-text-liberation-serif-w.pdf
echo "-----------------------------------"
- name: Render tests (Windows)
if: startsWith( matrix.os, 'windows' )
working-directory: ${{ steps.strings.outputs.build-output-dir }}
shell: pwsh
env:
TEST_DIR: ${{ github.workspace }}/test-data
QT_ASSUME_STDERR_HAS_CONSOLE: 1
run: |
set +e
./glabels-batch/Release/glabels-batch-qt --Version
echo "-----------------------------------"
./glabels-batch/Release/glabels-batch-qt -o simple-shapes-windows.pdf "$env:TEST_DIR/simple-shapes.glabels" 2>&1
diff-pdf -v "$env:TEST_DIR/simple-shapes.pdf" simple-shapes-windows.pdf 2>&1
echo "-----------------------------------"
./glabels-batch/Release/glabels-batch-qt -o simple-code39-windows.pdf "$env:TEST_DIR/simple-code39.glabels" 2>&1
diff-pdf -v "$env:TEST_DIR/simple-code39.pdf" simple-code39-windows.pdf 2>&1
echo "-----------------------------------"
#
# TODO: Create text-based rendering tests using fonts available on Windows
#
- name: Render tests (MacOS)
if: startsWith( matrix.os, 'macos' )
working-directory: ${{ steps.strings.outputs.build-output-dir }}
shell: bash
env:
TEST_DIR: ${{ github.workspace }}/test-data
run: |
set +e
./glabels-batch/glabels-batch-qt --Version
echo "-----------------------------------"
./glabels-batch/glabels-batch-qt -o simple-shapes-mac.pdf "$TEST_DIR/simple-shapes.glabels"
diff-pdf -v "$TEST_DIR/simple-shapes.pdf" simple-shapes-mac.pdf
echo "-----------------------------------"
./glabels-batch/glabels-batch-qt -o simple-code39-mac.pdf "$TEST_DIR/simple-code39.glabels"
diff-pdf -v "$TEST_DIR/simple-code39.pdf" simple-code39-mac.pdf
echo "-----------------------------------"
#
# TODO: Create text-based rendering tests using fonts available on MacOS
#
- name: Upload render tests for manual inspection
if: always()
uses: actions/upload-artifact@v4
with:
name: render-tests-${{ matrix.os }}-${{ matrix.cpp_compiler }}-${{ github.run_number }}
path: ${{ steps.strings.outputs.build-output-dir }}/*.pdf
# - name: Tmate # - name: Tmate
# uses: mxschmitt/action-tmate@v3 # uses: mxschmitt/action-tmate@v3
+14 -2
View File
@@ -17,6 +17,7 @@ set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/"
set (ORGANIZATION_NAME "glabels.org") set (ORGANIZATION_NAME "glabels.org")
set (ORGANIZATION_DOMAIN "glabels.org") set (ORGANIZATION_DOMAIN "glabels.org")
set (APPLICATION_NAME "glabels-qt") set (APPLICATION_NAME "glabels-qt")
set (DESKTOP_FILE_NAME "org.glabels.glabels-qt")
set (WEBSITE "glabels.org") set (WEBSITE "glabels.org")
set (BUG_WEBSITE "https://github.com/j-evins/glabels-qt/issues") set (BUG_WEBSITE "https://github.com/j-evins/glabels-qt/issues")
@@ -115,7 +116,7 @@ if (MINGW)
set (CMAKE_PREFIX_PATH ${MINGW_BASE_DIR} ) set (CMAKE_PREFIX_PATH ${MINGW_BASE_DIR} )
endif () endif ()
find_package (Qt6 6.2 REQUIRED COMPONENTS Core Gui Widgets PrintSupport Xml Svg LinguistTools Test) find_package (Qt6 6.2 REQUIRED COMPONENTS Concurrent Core Gui Widgets PrintSupport Xml Svg LinguistTools Test)
if (WIN32) if (WIN32)
# Locate Qt directories # Locate Qt directories
@@ -140,7 +141,17 @@ find_package (Qt5Test 5.6 QUIET)
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
# #
# Uncomment to compile everything with aggressively pedantic options # Uncomment to compile everything with aggressively pedantic options
# (not recommended -- only for testing -- also not portable) # (not recommended -- only for testing)
#
#add_compile_options("-Wall" "-Wextra" "-Wpedantic" "-Wno-unused-parameter" "-Werror")
# Uncomment to always compile with debug symbols
add_compile_options("-g")
endif ()
if (${CMAKE_CXX_COMPILER_ID} MATCHES "^.*Clang$") # "Clang", "AppleClang", etc.
#
# Uncomment to compile everything with aggressively pedantic options
# (not recommended -- only for testing)
# #
#add_compile_options("-Wall" "-Wextra" "-Wpedantic" "-Wno-unused-parameter" "-Werror") #add_compile_options("-Wall" "-Wextra" "-Wpedantic" "-Wno-unused-parameter" "-Werror")
@@ -156,6 +167,7 @@ if (Qt6Test_FOUND)
enable_testing () enable_testing ()
endif () endif ()
#======================================= #=======================================
# Subdirectories # Subdirectories
#======================================= #=======================================
+3
View File
@@ -1,3 +1,6 @@
>[!IMPORTANT]
>This repo is for *glabels-qt*, NOT the legacy *glabels-3* version (which I have not maintained since 2018).
![gLabels Label Designer](glabels/images/glabels-label-designer.png) ![gLabels Label Designer](glabels/images/glabels-label-designer.png)
![Cover Image](docs/images/cover-image.png) ![Cover Image](docs/images/cover-image.png)
+31 -33
View File
@@ -1,36 +1,35 @@
/* Backends.cpp // Backends.cpp
* //
* Copyright (C) 2014 Jaye Evins <evins@snaught.com> // Copyright (C) 2014 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "Backends.h"
#include "GnuBarcode.h"
#include "QrEncode.h"
#include "Zint.h"
#include "glbarcode/Factory.h"
namespace glabels #include "Backends.hpp"
#include "GnuBarcode.hpp"
#include "QrEncode.hpp"
#include "Zint.hpp"
#include "glbarcode/Factory.hpp"
namespace glabels::barcode
{ {
namespace barcode
{
// //
// Static data // Static data
@@ -556,7 +555,7 @@ namespace glabels
const Style& Backends::style( const QString& backendId, const QString& StyleId ) const Style& Backends::style( const QString& backendId, const QString& StyleId )
{ {
foreach ( const Style& bcStyle, mStyleList ) for ( const Style& bcStyle : mStyleList )
{ {
if ( (bcStyle.backendId() == backendId) && (bcStyle.id() == StyleId) ) if ( (bcStyle.backendId() == backendId) && (bcStyle.id() == StyleId) )
{ {
@@ -595,5 +594,4 @@ namespace glabels
mStyleList.append( style ); mStyleList.append( style );
} }
} // namespace barcode }
} //namespace glabels
-98
View File
@@ -1,98 +0,0 @@
/* Backends.h
*
* Copyright (C) 2014 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef barcode_Backends_h
#define barcode_Backends_h
#include "Style.h"
#include <QList>
#include <QMap>
#include <QObject>
#include <QString>
namespace glabels
{
namespace barcode
{
///
/// Backends Database
///
class Backends : public QObject
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
Backends();
public:
static void init();
/////////////////////////////////
// Public Methods
/////////////////////////////////
public:
static const QStringList& backendList();
static QString backendName( const QString& backendId );
static const QList<Style>& styleList();
static const Style& defaultStyle();
static const Style& style( const QString& backendId, const QString& StyleId );
/////////////////////////////////
// Private Methods
/////////////////////////////////
private:
static void registerBackend( const QString &backendId, const QString &backendName );
static void registerStyle( const QString& id,
const QString& backendId,
const QString& name,
bool canText,
bool textOptional,
bool canChecksum,
bool checksumOptional,
const QString& defaultDigits,
bool canFreeForm,
int preferedN );
/////////////////////////////////
// Private Members
/////////////////////////////////
static QStringList mBackendIdList;
static QMap<QString,QString> mBackendNameMap;
static QList<Style> mStyleList;
};
}
}
#endif // barcode_Backends_h
+95
View File
@@ -0,0 +1,95 @@
// Backends.hpp
//
// Copyright (C) 2014 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef barcode_Backends_hpp
#define barcode_Backends_hpp
#include "Style.hpp"
#include <QList>
#include <QMap>
#include <QObject>
#include <QString>
namespace glabels::barcode
{
///
/// Backends Database
///
class Backends : public QObject
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
Backends();
public:
static void init();
/////////////////////////////////
// Public Methods
/////////////////////////////////
public:
static const QStringList& backendList();
static QString backendName( const QString& backendId );
static const QList<Style>& styleList();
static const Style& defaultStyle();
static const Style& style( const QString& backendId, const QString& StyleId );
/////////////////////////////////
// Private Methods
/////////////////////////////////
private:
static void registerBackend( const QString &backendId, const QString &backendName );
static void registerStyle( const QString& id,
const QString& backendId,
const QString& name,
bool canText,
bool textOptional,
bool canChecksum,
bool checksumOptional,
const QString& defaultDigits,
bool canFreeForm,
int preferedN );
/////////////////////////////////
// Private Members
/////////////////////////////////
static QStringList mBackendIdList;
static QMap<QString,QString> mBackendNameMap;
static QList<Style> mStyleList;
};
}
#endif // barcode_Backends_hpp
+4 -5
View File
@@ -37,7 +37,7 @@ set (barcode_sources
) )
set (barcode_qobject_headers set (barcode_qobject_headers
Backends.h Backends.hpp
) )
qt6_wrap_cpp (barcode_moc_sources ${barcode_qobject_headers}) qt6_wrap_cpp (barcode_moc_sources ${barcode_qobject_headers})
@@ -50,10 +50,9 @@ add_library (Barcode STATIC
${barcode_moc_sources} ${barcode_moc_sources}
) )
#target_compile_features (Barcode target_compile_features (Barcode
# PUBLIC cxx_std_11 PUBLIC cxx_std_20
#) )
set_property (TARGET Barcode PROPERTY CXX_STANDARD 11)
target_include_directories (Barcode target_include_directories (Barcode
PUBLIC .. PUBLIC ..
+27 -29
View File
@@ -1,31 +1,34 @@
/* GnuBarcode.cpp // GnuBarcode.cpp
* //
* Copyright (C) 2017 Jaye Evins <evins@snaught.com> // Copyright (C) 2017 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#if HAVE_GNU_BARCODE #if HAVE_GNU_BARCODE
#include "GnuBarcode.h"
#include <QtDebug> #include "GnuBarcode.hpp"
#include <barcode.h>
#include <QDebug>
#include <cctype> #include <cctype>
#include <barcode.h>
namespace namespace
{ {
@@ -34,12 +37,8 @@ namespace
} }
namespace glabels namespace glabels::barcode::GnuBarcode
{ {
namespace barcode
{
namespace GnuBarcode
{
bool Base::isAscii( const std::string& data ) const bool Base::isAscii( const std::string& data ) const
{ {
@@ -902,8 +901,7 @@ namespace glabels
} }
}
}
} }
#endif // HAVE_GNU_BARCODE #endif // HAVE_GNU_BARCODE
-424
View File
@@ -1,424 +0,0 @@
/* GnuBarcode.h
*
* Copyright (C) 2017 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef barcode_GnuBarcode_h
#define barcode_GnuBarcode_h
#if HAVE_GNU_BARCODE
#include "glbarcode/Barcode1dBase.h"
namespace glabels
{
namespace barcode
{
namespace GnuBarcode
{
/**
* GnuBarcode::Base base class for all GNU Barcodes
*
* Implements glbarcode::Barcode1dBase.
*/
class Base : public glbarcode::Barcode1dBase
{
protected:
int flags;
bool isAscii( const std::string& data ) const;
bool isNumericLengthValid( const std::string& data,
unsigned int nMin,
unsigned int nMax ) const;
bool isNumericLength1Valid( const std::string& data,
unsigned int nMin,
unsigned int nMax ) const;
bool isNumericLength2Valid( const std::string& data,
unsigned int nMin,
unsigned int nMax ) const;
void vectorize( const std::string& encodedData,
const std::string& displayText,
const std::string& cookedData,
double& w,
double& h ) override;
};
/**
* EAN Barcode (Any)
*/
class Ean : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* EAN-8 Barcode
*/
class Ean8 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* EAN-8+2 Barcode
*/
class Ean8_2 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* EAN-8+5 Barcode
*/
class Ean8_5 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* EAN-13 Barcode
*/
class Ean13 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* EAN-13+2 Barcode
*/
class Ean13_2 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* EAN-13+5 Barcode
*/
class Ean13_5 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* UPC Barcode (Any)
*/
class Upc : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* UPC-A Barcode
*/
class UpcA : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* UPC-A+2 Barcode
*/
class UpcA_2 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* UPC-A+5 Barcode
*/
class UpcA_5 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* UPC-E Barcode
*/
class UpcE : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* UPC-E+2 Barcode
*/
class UpcE_2 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* UPC-E+5 Barcode
*/
class UpcE_5 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* ISBN Barcode
*/
class Isbn : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* ISBN+5 Barcode
*/
class Isbn_5 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* Code39 Barcode
*/
class Code39 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* Code128 Barcode
*/
class Code128 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* Code128C Barcode
*/
class Code128C : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* Code128B Barcode
*/
class Code128B : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* I25 Barcode
*/
class I25 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* CBR Barcode
*/
class Cbr : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* MSI Barcode
*/
class Msi : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* PLS Barcode
*/
class Pls : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* Code93 Barcode
*/
class Code93 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
}
}
}
#endif // HAVE_GNU_BARCODE
#endif // barcode_GnuBarcode_h
+419
View File
@@ -0,0 +1,419 @@
// GnuBarcode.hpp
//
// Copyright (C) 2017 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef barcode_GnuBarcode_hpp
#define barcode_GnuBarcode_hpp
#if HAVE_GNU_BARCODE
#include "glbarcode/Barcode1dBase.hpp"
namespace glabels::barcode::GnuBarcode
{
/**
* GnuBarcode::Base base class for all GNU Barcodes
*
* Implements glbarcode::Barcode1dBase.
*/
class Base : public glbarcode::Barcode1dBase
{
protected:
int flags;
bool isAscii( const std::string& data ) const;
bool isNumericLengthValid( const std::string& data,
unsigned int nMin,
unsigned int nMax ) const;
bool isNumericLength1Valid( const std::string& data,
unsigned int nMin,
unsigned int nMax ) const;
bool isNumericLength2Valid( const std::string& data,
unsigned int nMin,
unsigned int nMax ) const;
void vectorize( const std::string& encodedData,
const std::string& displayText,
const std::string& cookedData,
double& w,
double& h ) override;
};
/**
* EAN Barcode (Any)
*/
class Ean : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* EAN-8 Barcode
*/
class Ean8 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* EAN-8+2 Barcode
*/
class Ean8_2 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* EAN-8+5 Barcode
*/
class Ean8_5 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* EAN-13 Barcode
*/
class Ean13 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* EAN-13+2 Barcode
*/
class Ean13_2 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* EAN-13+5 Barcode
*/
class Ean13_5 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* UPC Barcode (Any)
*/
class Upc : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* UPC-A Barcode
*/
class UpcA : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* UPC-A+2 Barcode
*/
class UpcA_2 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* UPC-A+5 Barcode
*/
class UpcA_5 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* UPC-E Barcode
*/
class UpcE : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* UPC-E+2 Barcode
*/
class UpcE_2 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* UPC-E+5 Barcode
*/
class UpcE_5 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* ISBN Barcode
*/
class Isbn : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* ISBN+5 Barcode
*/
class Isbn_5 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* Code39 Barcode
*/
class Code39 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* Code128 Barcode
*/
class Code128 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* Code128C Barcode
*/
class Code128C : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* Code128B Barcode
*/
class Code128B : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* I25 Barcode
*/
class I25 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* CBR Barcode
*/
class Cbr : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* MSI Barcode
*/
class Msi : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* PLS Barcode
*/
class Pls : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
/**
* Code93 Barcode
*/
class Code93 : public Base
{
public:
static Barcode* create();
protected:
bool validate( const std::string& rawData ) override;
std::string encode( const std::string& cookedData ) override;
};
}
#endif // HAVE_GNU_BARCODE
#endif // barcode_GnuBarcode_hpp
+22 -27
View File
@@ -1,36 +1,33 @@
/* QrEncode.cpp // QrEncode.cpp
* //
* Copyright (C) 2017 Jaye Evins <evins@snaught.com> // Copyright (C) 2017 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#if HAVE_QRENCODE #if HAVE_QRENCODE
#include "QrEncode.h"
#include "QrEncode.hpp"
#include <qrencode.h> #include <qrencode.h>
namespace glabels namespace glabels::barcode::QrEncode
{ {
namespace barcode
{
namespace QrEncode
{
/* /*
* Static QrCode barcode creation method * Static QrCode barcode creation method
@@ -84,8 +81,6 @@ namespace glabels
return true; return true;
} }
}
}
} }
-60
View File
@@ -1,60 +0,0 @@
/* QrEncode.h
*
* Copyright (C) 2017 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef barcode_QrEncode_h
#define barcode_QrEncode_h
#if HAVE_QRENCODE
#include "glbarcode/Barcode2dBase.h"
namespace glabels
{
namespace barcode
{
namespace QrEncode
{
/**
* QrEncode::QrCode QR Code Barcode
*
* Implements glbarcode::Barcode2dBase.
*/
class QrCode : public glbarcode::Barcode2dBase
{
public:
static Barcode* create();
private:
bool validate( const std::string& rawData ) override;
bool encode( const std::string& cookedData,
glbarcode::Matrix<bool>& encodedData ) override;
};
}
}
}
#endif // HAVE_QRENCODE
#endif // barcode_QrEncode_h
+55
View File
@@ -0,0 +1,55 @@
// QrEncode.hpp
//
// Copyright (C) 2017 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef barcode_QrEncode_hpp
#define barcode_QrEncode_hpp
#if HAVE_QRENCODE
#include "glbarcode/Barcode2dBase.hpp"
namespace glabels::barcode::QrEncode
{
///
/// QrEncode::QrCode QR Code Barcode
///
/// Implements glbarcode::Barcode2dBase.
///
class QrCode : public glbarcode::Barcode2dBase
{
public:
static Barcode* create();
private:
bool validate( const std::string& rawData ) override;
bool encode( const std::string& cookedData,
glbarcode::Matrix<bool>& encodedData ) override;
};
}
#endif // HAVE_QRENCODE
#endif // barcode_QrEncode_hpp
+26 -28
View File
@@ -1,32 +1,31 @@
/* Style.cpp // Style.cpp
* //
* Copyright (C) 2013 Jaye Evins <evins@snaught.com> // Copyright (C) 2013 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "Style.h"
#include "Backends.h"
namespace glabels #include "Style.hpp"
#include "Backends.hpp"
namespace glabels::barcode
{ {
namespace barcode
{
/// ///
/// Default Constructor /// Default Constructor
@@ -221,5 +220,4 @@ namespace glabels
return (mBackendId != other.mBackendId) || (mId != other.mId); return (mBackendId != other.mBackendId) || (mId != other.mId);
} }
} // namespace barcode }
} // namespace glabels
-120
View File
@@ -1,120 +0,0 @@
/* Style.h
*
* Copyright (C) 2013 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef barcode_Style_h
#define barcode_Style_h
#include <QString>
namespace glabels
{
namespace barcode
{
///
/// Style Type
///
class Style
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
Style ();
Style ( const QString& id,
const QString& backendId,
const QString& name,
bool canText,
bool textOptional,
bool canChecksum,
bool checksumOptional,
const QString& defaultDigits,
bool canFreeform,
int preferedN );
/////////////////////////////////
// Properties
/////////////////////////////////
const QString& id() const;
QString fullId() const;
const QString& backendId() const;
const QString& name() const;
QString fullName() const;
bool canText() const;
bool textOptional() const;
bool canChecksum() const;
bool checksumOptional() const;
const QString& defaultDigits() const;
bool canFreeform() const;
int preferedN() const;
/////////////////////////////////
// Methods
/////////////////////////////////
public:
QString exampleDigits( int n ) const;
/////////////////////////////////
// Operators
/////////////////////////////////
public:
bool operator!=( const Style& other ) const;
/////////////////////////////////
// Private Data
/////////////////////////////////
private:
QString mId;
QString mBackendId;
QString mName;
bool mCanText;
bool mTextOptional;
bool mCanChecksum;
bool mChecksumOptional;
QString mDefaultDigits;
bool mCanFreeform;
int mPreferedN;
};
}
}
#endif // barcode_Style_h
+117
View File
@@ -0,0 +1,117 @@
// Style.hpp
//
// Copyright (C) 2013 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef barcode_Style_hpp
#define barcode_Style_hpp
#include <QString>
namespace glabels::barcode
{
///
/// Style Type
///
class Style
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
Style ();
Style ( const QString& id,
const QString& backendId,
const QString& name,
bool canText,
bool textOptional,
bool canChecksum,
bool checksumOptional,
const QString& defaultDigits,
bool canFreeform,
int preferedN );
/////////////////////////////////
// Properties
/////////////////////////////////
const QString& id() const;
QString fullId() const;
const QString& backendId() const;
const QString& name() const;
QString fullName() const;
bool canText() const;
bool textOptional() const;
bool canChecksum() const;
bool checksumOptional() const;
const QString& defaultDigits() const;
bool canFreeform() const;
int preferedN() const;
/////////////////////////////////
// Methods
/////////////////////////////////
public:
QString exampleDigits( int n ) const;
/////////////////////////////////
// Operators
/////////////////////////////////
public:
bool operator!=( const Style& other ) const;
/////////////////////////////////
// Private Data
/////////////////////////////////
private:
QString mId;
QString mBackendId;
QString mName;
bool mCanText;
bool mTextOptional;
bool mCanChecksum;
bool mChecksumOptional;
QString mDefaultDigits;
bool mCanFreeform;
int mPreferedN;
};
}
#endif // barcode_Style_hpp
+24 -32
View File
@@ -1,47 +1,41 @@
/* Zint.cpp // Zint.cpp
* //
* Copyright (C) 2017 Jaye Evins <evins@snaught.com> // Copyright (C) 2017 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#if HAVE_ZINT #if HAVE_ZINT
#include "Zint.h"
#include <QtDebug> #include "Zint.hpp"
#include <QDebug>
#include <zint.h> #include <zint.h>
namespace namespace
{ {
const double FONT_SCALE = 0.9;
const int W_PTS_DEFAULT = 144;
const int H_PTS_DEFAULT = 72;
const double TWO_DIVIDED_BY_SQRT3 = 1.15470053837925152902; const double TWO_DIVIDED_BY_SQRT3 = 1.15470053837925152902;
} }
namespace glabels namespace glabels::barcode::Zint
{ {
namespace barcode
{
namespace Zint
{
// //
// Base constructor // Base constructor
@@ -1560,8 +1554,6 @@ namespace glabels
} }
}
}
} }
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+4 -5
View File
@@ -20,7 +20,7 @@ set (merge_sources
) )
set (merge_qobject_headers set (merge_qobject_headers
Merge.h Merge.hpp
) )
qt6_wrap_cpp (merge_moc_sources ${merge_qobject_headers}) qt6_wrap_cpp (merge_moc_sources ${merge_qobject_headers})
@@ -33,10 +33,9 @@ add_library (Merge STATIC
${merge_moc_sources} ${merge_moc_sources}
) )
#target_compile_features (Merge target_compile_features (Merge
# PUBLIC cxx_std_11 PUBLIC cxx_std_20
#) )
set_property (TARGET Merge PROPERTY CXX_STANDARD 11)
target_include_directories (Merge target_include_directories (Merge
PUBLIC .. PUBLIC ..
+34 -36
View File
@@ -1,40 +1,39 @@
/* Merge/Factory.cpp // Merge/Factory.cpp
* //
* Copyright (C) 2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "Factory.h"
#include "None.h"
#include "TextCsv.h"
#include "TextCsvKeys.h"
#include "TextTsv.h"
#include "TextTsvKeys.h"
#include "TextColon.h"
#include "TextColonKeys.h"
#include "TextSemicolon.h"
#include "TextSemicolonKeys.h"
namespace glabels #include "Factory.hpp"
#include "None.hpp"
#include "TextCsv.hpp"
#include "TextCsvKeys.hpp"
#include "TextTsv.hpp"
#include "TextTsvKeys.hpp"
#include "TextColon.hpp"
#include "TextColonKeys.hpp"
#include "TextSemicolon.hpp"
#include "TextSemicolonKeys.hpp"
namespace glabels::merge
{ {
namespace merge
{
// //
// Static data // Static data
@@ -218,5 +217,4 @@ namespace glabels
mNameList << name; mNameList << name;
} }
} // namespace merge }
} // namespace glabels
-110
View File
@@ -1,110 +0,0 @@
/* Merge/Factory.h
*
* Copyright (C) 2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef merge_Factory_h
#define merge_Factory_h
#include <QCoreApplication>
#include <QStringList>
#include <QMap>
namespace glabels
{
namespace merge
{
// Forward references
class Merge;
///
/// Factory
///
class Factory
{
Q_DECLARE_TR_FUNCTIONS(Factory)
/////////////////////////////////
// Source Type
/////////////////////////////////
public:
enum SourceType { NONE, FIXED, FILE };
/////////////////////////////////
// Life Cycle
/////////////////////////////////
protected:
Factory();
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static void init();
static Merge* createMerge( const QString& id );
static QStringList nameList();
static QString idToName( const QString& id );
static QString nameToId( const QString& name );
static SourceType idToType( const QString& id );
static QString indexToId( int index );
/////////////////////////////////
// private methods
/////////////////////////////////
private:
using CreateFct = Merge* (*)();
static void registerBackend( const QString& id,
const QString& name,
SourceType type,
CreateFct create );
/////////////////////////////////
// private data
/////////////////////////////////
class BackendEntry
{
public:
QString id;
QString name;
SourceType type;
CreateFct create;
};
static QMap<QString,BackendEntry> mBackendIdMap;
static QMap<QString,BackendEntry> mBackendNameMap;
static QStringList mNameList;
};
}
}
#endif // merge_Factory_h
+107
View File
@@ -0,0 +1,107 @@
// Merge/Factory.hpp
//
// Copyright (C) 2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef merge_Factory_hpp
#define merge_Factory_hpp
#include <QCoreApplication>
#include <QStringList>
#include <QMap>
namespace glabels::merge
{
// Forward references
class Merge;
///
/// Factory
///
class Factory
{
Q_DECLARE_TR_FUNCTIONS(Factory)
/////////////////////////////////
// Source Type
/////////////////////////////////
public:
enum SourceType { NONE, FIXED, FILE };
/////////////////////////////////
// Life Cycle
/////////////////////////////////
protected:
Factory();
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static void init();
static Merge* createMerge( const QString& id );
static QStringList nameList();
static QString idToName( const QString& id );
static QString nameToId( const QString& name );
static SourceType idToType( const QString& id );
static QString indexToId( int index );
/////////////////////////////////
// private methods
/////////////////////////////////
private:
using CreateFct = Merge* (*)();
static void registerBackend( const QString& id,
const QString& name,
SourceType type,
CreateFct create );
/////////////////////////////////
// private data
/////////////////////////////////
class BackendEntry
{
public:
QString id;
QString name;
SourceType type;
CreateFct create;
};
static QMap<QString,BackendEntry> mBackendIdMap;
static QMap<QString,BackendEntry> mBackendNameMap;
static QStringList mNameList;
};
}
#endif // merge_Factory_hpp
+22 -25
View File
@@ -1,31 +1,29 @@
/* Merge/Merge.cpp // Merge/Merge.cpp
* //
* Copyright (C) 2015-2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2015-2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "Merge.h" #include "Merge.hpp"
namespace glabels namespace glabels::merge
{ {
namespace merge
{
/// ///
/// Constructor /// Constructor
@@ -197,5 +195,4 @@ namespace glabels
return list; return list;
} }
} // namespace merge }
} // namespace glabels
-124
View File
@@ -1,124 +0,0 @@
/* Merge/Merge.h
*
* Copyright (C) 2015-2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef merge_Merge_h
#define merge_Merge_h
#include "Record.h"
#include <QObject>
#include <QString>
#include <QStringList>
#include <QList>
namespace glabels
{
namespace merge
{
// Forward references
class Record;
///
/// Merge Object
///
class Merge : public QObject
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
protected:
Merge() = default;
Merge( const Merge* merge );
public:
virtual ~Merge() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
virtual Merge* clone() const = 0;
/////////////////////////////////
// Properties
/////////////////////////////////
public:
QString id() const;
QString source() const;
void setSource( const QString& source );
void reloadSource();
const QList<Record>& recordList( ) const;
/////////////////////////////////
// Selection methods
/////////////////////////////////
public:
void setSelected( int i, bool state = true );
void selectAll();
void unselectAll();
int nSelectedRecords() const;
const QList<Record> selectedRecords() const;
/////////////////////////////////
// Virtual methods
/////////////////////////////////
public:
virtual QStringList keys() const = 0;
virtual QString primaryKey() const = 0;
protected:
virtual void open() = 0;
virtual void close() = 0;
virtual Record readNextRecord() = 0;
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void sourceChanged();
void selectionChanged();
/////////////////////////////////
// Private data
/////////////////////////////////
protected:
QString mId;
private:
QString mSource;
QList<Record> mRecordList;
};
}
}
#endif // merge_Merge_h
+121
View File
@@ -0,0 +1,121 @@
// Merge/Merge.hpp
//
// Copyright (C) 2015-2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef merge_Merge_hpp
#define merge_Merge_hpp
#include "Record.hpp"
#include <QObject>
#include <QString>
#include <QStringList>
#include <QList>
namespace glabels::merge
{
// Forward references
class Record;
///
/// Merge Object
///
class Merge : public QObject
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
protected:
Merge() = default;
Merge( const Merge* merge );
public:
virtual ~Merge() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
virtual Merge* clone() const = 0;
/////////////////////////////////
// Properties
/////////////////////////////////
public:
QString id() const;
QString source() const;
void setSource( const QString& source );
void reloadSource();
const QList<Record>& recordList( ) const;
/////////////////////////////////
// Selection methods
/////////////////////////////////
public:
void setSelected( int i, bool state = true );
void selectAll();
void unselectAll();
int nSelectedRecords() const;
const QList<Record> selectedRecords() const;
/////////////////////////////////
// Virtual methods
/////////////////////////////////
public:
virtual QStringList keys() const = 0;
virtual QString primaryKey() const = 0;
protected:
virtual void open() = 0;
virtual void close() = 0;
virtual Record readNextRecord() = 0;
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void sourceChanged();
void selectionChanged();
/////////////////////////////////
// Private data
/////////////////////////////////
protected:
QString mId;
private:
QString mSource;
QList<Record> mRecordList;
};
}
#endif // merge_Merge_hpp
+24 -26
View File
@@ -1,30 +1,29 @@
/* Merge/None.cpp // Merge/None.cpp
* //
* Copyright (C) 2015-2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2015-2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "None.h"
namespace glabels #include "None.hpp"
namespace glabels::merge
{ {
namespace merge
{
/// ///
/// Constructor /// Constructor
@@ -113,5 +112,4 @@ namespace glabels
return NullRecord(); return NullRecord();
} }
} // namespace merge }
} // namespace glabels
-78
View File
@@ -1,78 +0,0 @@
/* Merge/None.h
*
* Copyright (C) 2015-2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef merge_None_h
#define merge_None_h
#include "Merge.h"
namespace glabels
{
namespace merge
{
///
/// None Merge Backend
///
struct None : public Merge
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
None();
None( const None* merge );
virtual ~None() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
None* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
/////////////////////////////////
// Implementation of virtual methods
/////////////////////////////////
public:
QStringList keys() const override;
QString primaryKey() const override;
protected:
void open() override;
void close() override;
Record readNextRecord() override;
};
}
}
#endif // merge_None_h
+76
View File
@@ -0,0 +1,76 @@
// Merge/None.hpp
//
// Copyright (C) 2015-2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef merge_None_hpp
#define merge_None_hpp
#include "Merge.hpp"
namespace glabels::merge
{
///
/// None Merge Backend
///
struct None : public Merge
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
None();
None( const None* merge );
virtual ~None() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
None* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
/////////////////////////////////
// Implementation of virtual methods
/////////////////////////////////
public:
QStringList keys() const override;
QString primaryKey() const override;
protected:
void open() override;
void close() override;
Record readNextRecord() override;
};
}
#endif // merge_None_hpp
+24 -26
View File
@@ -1,30 +1,29 @@
/* Merge/Record.cpp // Merge/Record.cpp
* //
* Copyright (C) 2013-2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2013-2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "Record.h"
namespace glabels #include "Record.hpp"
namespace glabels::merge
{ {
namespace merge
{
/// ///
/// Is record selected? /// Is record selected?
@@ -43,5 +42,4 @@ namespace glabels
mSelected = value; mSelected = value;
} }
} // namespace merge }
} // namespace glabels
-62
View File
@@ -1,62 +0,0 @@
/* Merge/Record.h
*
* Copyright (C) 2013-2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef merge_Record_h
#define merge_Record_h
#include <QString>
#include <QMap>
namespace glabels
{
namespace merge
{
///
/// Merge Record
///
class Record : public QMap<QString,QString>
{
/////////////////////////////////
// Properties
/////////////////////////////////
public:
bool isSelected() const;
void setSelected( bool value );
/////////////////////////////////
// Private data
/////////////////////////////////
private:
bool mSelected{ true };
};
using NullRecord = const Record;
}
}
#endif // merge_Record_h
+59
View File
@@ -0,0 +1,59 @@
// Merge/Record.hpp
//
// Copyright (C) 2013-2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef merge_Record_hpp
#define merge_Record_hpp
#include <QString>
#include <QMap>
namespace glabels::merge
{
///
/// Merge Record
///
class Record : public QMap<QString,QString>
{
/////////////////////////////////
// Properties
/////////////////////////////////
public:
bool isSelected() const;
void setSelected( bool value );
/////////////////////////////////
// Private data
/////////////////////////////////
private:
bool mSelected{ true };
};
using NullRecord = const Record;
}
#endif // merge_Record_hpp
+24 -27
View File
@@ -1,35 +1,33 @@
/* Merge/Text.cpp // Merge/Text.cpp
* //
* Copyright (C) 2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "Text.h" #include "Text.hpp"
#include "Record.h" #include "Record.hpp"
#include <QtDebug> #include <QDebug>
namespace glabels namespace glabels::merge
{ {
namespace merge
{
/// ///
/// Constructor /// Constructor
@@ -415,5 +413,4 @@ namespace glabels
return fields; return fields;
} }
} // namespace merge }
} // namespace glabels
-85
View File
@@ -1,85 +0,0 @@
/* Merge/Text.h
*
* Copyright (C) 2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef merge_Text_h
#define merge_Text_h
#include "Merge.h"
#include <QFile>
namespace glabels
{
namespace merge
{
///
/// Text Merge Backend
///
struct Text : public Merge
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
protected:
Text( QChar delimiter, bool line1HasKeys );
Text( const Text* merge );
virtual ~Text() = default;
/////////////////////////////////
// Implementation of virtual methods
/////////////////////////////////
public:
QStringList keys() const override;
QString primaryKey() const override;
protected:
void open() override;
void close() override;
Record readNextRecord() override;
/////////////////////////////////
// Private methods
/////////////////////////////////
QString keyFromIndex( int iField ) const;
QStringList parseLine();
/////////////////////////////////
// Private data
/////////////////////////////////
private:
QChar mDelimeter;
bool mLine1HasKeys;
QFile mFile;
QStringList mKeys;
int mNFieldsMax;
};
}
}
#endif // merge_Text_h
+82
View File
@@ -0,0 +1,82 @@
// Merge/Text.hpp
//
// Copyright (C) 2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef merge_Text_hpp
#define merge_Text_hpp
#include "Merge.hpp"
#include <QFile>
namespace glabels::merge
{
///
/// Text Merge Backend
///
struct Text : public Merge
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
protected:
Text( QChar delimiter, bool line1HasKeys );
Text( const Text* merge );
virtual ~Text() = default;
/////////////////////////////////
// Implementation of virtual methods
/////////////////////////////////
public:
QStringList keys() const override;
QString primaryKey() const override;
protected:
void open() override;
void close() override;
Record readNextRecord() override;
/////////////////////////////////
// Private methods
/////////////////////////////////
QString keyFromIndex( int iField ) const;
QStringList parseLine();
/////////////////////////////////
// Private data
/////////////////////////////////
private:
QChar mDelimeter;
bool mLine1HasKeys;
QFile mFile;
QStringList mKeys;
int mNFieldsMax;
};
}
#endif // merge_Text_hpp
+28 -27
View File
@@ -1,34 +1,36 @@
/* Merge/TextColon.cpp // Merge/TextColon.cpp
* //
* Copyright (C) 2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "TextColon.h"
namespace glabels #include "TextColon.hpp"
namespace
{ {
namespace merge
{
static const QString ID = "Text/Colon"; static const QString ID = "Text/Colon";
}
namespace glabels::merge
{
/// ///
/// Constructor /// Constructor
/// ///
@@ -72,5 +74,4 @@ namespace glabels
return new TextColon(); return new TextColon();
} }
} // namespace merge }
} // namespace glabels
-68
View File
@@ -1,68 +0,0 @@
/* Merge/TextColon.h
*
* Copyright (C) 2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef merge_TextColon_h
#define merge_TextColon_h
#include "Text.h"
namespace glabels
{
namespace merge
{
///
/// TextColon Merge Backend
///
struct TextColon : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextColon();
TextColon( const TextColon* merge );
virtual ~TextColon() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextColon* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
}
#endif // merge_TextColon_h
+65
View File
@@ -0,0 +1,65 @@
// Merge/TextColon.hpp
//
// Copyright (C) 2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef merge_TextColon_hpp
#define merge_TextColon_hpp
#include "Text.hpp"
namespace glabels::merge
{
///
/// TextColon Merge Backend
///
struct TextColon : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextColon();
TextColon( const TextColon* merge );
virtual ~TextColon() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextColon* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
#endif // merge_TextColon_hpp
+28 -27
View File
@@ -1,34 +1,36 @@
/* Merge/TextColonKeys.cpp // Merge/TextColonKeys.cpp
* //
* Copyright (C) 2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "TextColonKeys.h"
namespace glabels #include "TextColonKeys.hpp"
namespace
{ {
namespace merge
{
static const QString ID = "Text/Colon/Line1Keys"; static const QString ID = "Text/Colon/Line1Keys";
}
namespace glabels::merge
{
/// ///
/// Constructor /// Constructor
/// ///
@@ -72,5 +74,4 @@ namespace glabels
return new TextColonKeys(); return new TextColonKeys();
} }
} // namespace merge }
} // namespace glabels
-68
View File
@@ -1,68 +0,0 @@
/* Merge/TextColonKeys.h
*
* Copyright (C) 2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef merge_TextColonKeys_h
#define merge_TextColonKeys_h
#include "Text.h"
namespace glabels
{
namespace merge
{
///
/// TextColonKeys Merge Backend
///
struct TextColonKeys : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextColonKeys();
TextColonKeys( const TextColonKeys* merge );
virtual ~TextColonKeys() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextColonKeys* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
}
#endif // merge_TextColonKeys_h
+65
View File
@@ -0,0 +1,65 @@
// Merge/TextColonKeys.hpp
//
// Copyright (C) 2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef merge_TextColonKeys_hpp
#define merge_TextColonKeys_hpp
#include "Text.hpp"
namespace glabels::merge
{
///
/// TextColonKeys Merge Backend
///
struct TextColonKeys : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextColonKeys();
TextColonKeys( const TextColonKeys* merge );
virtual ~TextColonKeys() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextColonKeys* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
#endif // merge_TextColonKeys_hpp
+28 -27
View File
@@ -1,34 +1,36 @@
/* Merge/TextCsv.cpp // Merge/TextCsv.cpp
* //
* Copyright (C) 2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "TextCsv.h"
namespace glabels #include "TextCsv.hpp"
namespace
{ {
namespace merge
{
static const QString ID = "Text/Comma"; static const QString ID = "Text/Comma";
}
namespace glabels::merge
{
/// ///
/// Constructor /// Constructor
/// ///
@@ -72,5 +74,4 @@ namespace glabels
return new TextCsv(); return new TextCsv();
} }
} // namespace merge }
} // namespace glabels
-68
View File
@@ -1,68 +0,0 @@
/* Merge/TextCsv.h
*
* Copyright (C) 2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef merge_TextCsv_h
#define merge_TextCsv_h
#include "Text.h"
namespace glabels
{
namespace merge
{
///
/// TextCsv Merge Backend
///
struct TextCsv : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextCsv();
TextCsv( const TextCsv* merge );
virtual ~TextCsv() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextCsv* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
}
#endif // merge_TextCsv_h
+65
View File
@@ -0,0 +1,65 @@
// Merge/TextCsv.hpp
//
// Copyright (C) 2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef merge_TextCsv_hpp
#define merge_TextCsv_hpp
#include "Text.hpp"
namespace glabels::merge
{
///
/// TextCsv Merge Backend
///
struct TextCsv : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextCsv();
TextCsv( const TextCsv* merge );
virtual ~TextCsv() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextCsv* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
#endif // merge_TextCsv_hpp
+28 -27
View File
@@ -1,34 +1,36 @@
/* Merge/TextCsvKeys.cpp // Merge/TextCsvKeys.cpp
* //
* Copyright (C) 2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "TextCsvKeys.h"
namespace glabels #include "TextCsvKeys.hpp"
namespace
{ {
namespace merge
{
static const QString ID = "Text/Comma/Line1Keys"; static const QString ID = "Text/Comma/Line1Keys";
}
namespace glabels::merge
{
/// ///
/// Constructor /// Constructor
/// ///
@@ -72,5 +74,4 @@ namespace glabels
return new TextCsvKeys(); return new TextCsvKeys();
} }
} // namespace merge }
} // namespace glabels
-68
View File
@@ -1,68 +0,0 @@
/* Merge/TextCsvKeys.h
*
* Copyright (C) 2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef merge_TextCsvKeys_h
#define merge_TextCsvKeys_h
#include "Text.h"
namespace glabels
{
namespace merge
{
///
/// TextCsvKeys Merge Backend
///
struct TextCsvKeys : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextCsvKeys();
TextCsvKeys( const TextCsvKeys* merge );
virtual ~TextCsvKeys() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextCsvKeys* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
}
#endif // merge_TextCsvKeys_h
+65
View File
@@ -0,0 +1,65 @@
// Merge/TextCsvKeys.hpp
//
// Copyright (C) 2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef merge_TextCsvKeys_hpp
#define merge_TextCsvKeys_hpp
#include "Text.hpp"
namespace glabels::merge
{
///
/// TextCsvKeys Merge Backend
///
struct TextCsvKeys : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextCsvKeys();
TextCsvKeys( const TextCsvKeys* merge );
virtual ~TextCsvKeys() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextCsvKeys* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
#endif // merge_TextCsvKeys_hpp
+28 -27
View File
@@ -1,34 +1,36 @@
/* Merge/TextSemicolon.cpp // Merge/TextSemicolon.cpp
* //
* Copyright (C) 2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "TextSemicolon.h"
namespace glabels #include "TextSemicolon.hpp"
namespace
{ {
namespace merge
{
static const QString ID = "Text/Semicolon"; static const QString ID = "Text/Semicolon";
}
namespace glabels::merge
{
/// ///
/// Constructor /// Constructor
/// ///
@@ -72,5 +74,4 @@ namespace glabels
return new TextSemicolon(); return new TextSemicolon();
} }
} // namespace merge }
} // namespace glabels
-68
View File
@@ -1,68 +0,0 @@
/* Merge/TextSemicolon.h
*
* Copyright (C) 2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef merge_TextSemicolon_h
#define merge_TextSemicolon_h
#include "Text.h"
namespace glabels
{
namespace merge
{
///
/// TextSemicolon Merge Backend
///
struct TextSemicolon : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextSemicolon();
TextSemicolon( const TextSemicolon* merge );
virtual ~TextSemicolon() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextSemicolon* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
}
#endif // merge_TextSemicolon_h
+65
View File
@@ -0,0 +1,65 @@
// Merge/TextSemicolon.hpp
//
// Copyright (C) 2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef merge_TextSemicolon_hpp
#define merge_TextSemicolon_hpp
#include "Text.hpp"
namespace glabels::merge
{
///
/// TextSemicolon Merge Backend
///
struct TextSemicolon : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextSemicolon();
TextSemicolon( const TextSemicolon* merge );
virtual ~TextSemicolon() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextSemicolon* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
#endif // merge_TextSemicolon_hpp
+28 -27
View File
@@ -1,34 +1,36 @@
/* Merge/TextSemicolonKeys.cpp // Merge/TextSemicolonKeys.cpp
* //
* Copyright (C) 2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "TextSemicolonKeys.h"
namespace glabels #include "TextSemicolonKeys.hpp"
namespace
{ {
namespace merge
{
static const QString ID = "Text/Semicolon/Keys"; static const QString ID = "Text/Semicolon/Keys";
}
namespace glabels::merge
{
/// ///
/// Constructor /// Constructor
/// ///
@@ -72,5 +74,4 @@ namespace glabels
return new TextSemicolonKeys(); return new TextSemicolonKeys();
} }
} // namespace merge }
} // namespace glabels
-68
View File
@@ -1,68 +0,0 @@
/* Merge/TextSemicolonKeys.h
*
* Copyright (C) 2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef merge_TextSemicolonKeys_h
#define merge_TextSemicolonKeys_h
#include "Text.h"
namespace glabels
{
namespace merge
{
///
/// TextSemicolonKeys Merge Backend
///
struct TextSemicolonKeys : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextSemicolonKeys();
TextSemicolonKeys( const TextSemicolonKeys* merge );
virtual ~TextSemicolonKeys() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextSemicolonKeys* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
}
#endif // merge_TextSemicolonKeys_h
+65
View File
@@ -0,0 +1,65 @@
// Merge/TextSemicolonKeys.hpp
//
// Copyright (C) 2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef merge_TextSemicolonKeys_hpp
#define merge_TextSemicolonKeys_hpp
#include "Text.hpp"
namespace glabels::merge
{
///
/// TextSemicolonKeys Merge Backend
///
struct TextSemicolonKeys : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextSemicolonKeys();
TextSemicolonKeys( const TextSemicolonKeys* merge );
virtual ~TextSemicolonKeys() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextSemicolonKeys* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
#endif // merge_TextSemicolonKeys_hpp
+28 -27
View File
@@ -1,34 +1,36 @@
/* Merge/TextTsv.cpp // Merge/TextTsv.cpp
* //
* Copyright (C) 2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "TextTsv.h"
namespace glabels #include "TextTsv.hpp"
namespace
{ {
namespace merge
{
static const QString ID = "Text/Tab"; static const QString ID = "Text/Tab";
}
namespace glabels::merge
{
/// ///
/// Constructor /// Constructor
/// ///
@@ -72,5 +74,4 @@ namespace glabels
return new TextTsv(); return new TextTsv();
} }
} // namespace merge }
} // namespace glabels
-68
View File
@@ -1,68 +0,0 @@
/* Merge/TextTsv.h
*
* Copyright (C) 2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef merge_TextTsv_h
#define merge_TextTsv_h
#include "Text.h"
namespace glabels
{
namespace merge
{
///
/// TextTsv Merge Backend
///
struct TextTsv : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextTsv();
TextTsv( const TextTsv* merge );
virtual ~TextTsv() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextTsv* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
}
#endif // merge_TextTsv_h
+65
View File
@@ -0,0 +1,65 @@
// Merge/TextTsv.hpp
//
// Copyright (C) 2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef merge_TextTsv_hpp
#define merge_TextTsv_hpp
#include "Text.hpp"
namespace glabels::merge
{
///
/// TextTsv Merge Backend
///
struct TextTsv : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextTsv();
TextTsv( const TextTsv* merge );
virtual ~TextTsv() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextTsv* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
#endif // merge_TextTsv_hpp
+29 -27
View File
@@ -1,34 +1,36 @@
/* Merge/TextTsvKeys.cpp // Merge/TextTsvKeys.cpp
* //
* Copyright (C) 2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "TextTsvKeys.h"
namespace glabels #include "TextTsvKeys.hpp"
namespace
{ {
namespace merge
{
static const QString ID = "Text/Tab/Line1Keys"; static const QString ID = "Text/Tab/Line1Keys";
}
namespace glabels::merge
{
/// ///
/// Constructor /// Constructor
/// ///
@@ -72,5 +74,5 @@ namespace glabels
return new TextTsvKeys(); return new TextTsvKeys();
} }
} // namespace merge }
} // namespace glabels
-68
View File
@@ -1,68 +0,0 @@
/* Merge/TextTsvKeys.h
*
* Copyright (C) 2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef merge_TextTsvKeys_h
#define merge_TextTsvKeys_h
#include "Text.h"
namespace glabels
{
namespace merge
{
///
/// TextTsvKeys Merge Backend
///
struct TextTsvKeys : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextTsvKeys();
TextTsvKeys( const TextTsvKeys* merge );
virtual ~TextTsvKeys() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextTsvKeys* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
}
#endif // merge_TextTsvKeys_h
+65
View File
@@ -0,0 +1,65 @@
// Merge/TextTsvKeys.hpp
//
// Copyright (C) 2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef merge_TextTsvKeys_hpp
#define merge_TextTsvKeys_hpp
#include "Text.hpp"
namespace glabels::merge
{
///
/// TextTsvKeys Merge Backend
///
struct TextTsvKeys : public Text
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
TextTsvKeys();
TextTsvKeys( const TextTsvKeys* merge );
virtual ~TextTsvKeys() = default;
/////////////////////////////////
// Object duplication
/////////////////////////////////
public:
TextTsvKeys* clone() const override;
/////////////////////////////////
// Static methods
/////////////////////////////////
public:
static QString id();
static Merge* create();
};
}
#endif // merge_TextTsvKeys_hpp
+3 -3
View File
@@ -1,7 +1,7 @@
#======================================= #=======================================
# Install # Install
#======================================= #=======================================
install (FILES glabels-qt.desktop DESTINATION share/applications) install (FILES org.glabels.glabels-qt.desktop DESTINATION share/applications)
install (FILES x-glabels-document.mime.xml DESTINATION share/mime/packages) install (FILES org.glabels.glabels-qt.mime.xml DESTINATION share/mime/packages)
install (FILES glabels-qt.appdata.xml DESTINATION share/appdata) install (FILES org.glabels.glabels-qt.metainfo.xml DESTINATION share/metainfo)
-29
View File
@@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
<id>glabels-qt.desktop</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0+</project_license>
<name>gLabels</name>
<summary>Create labels, business cards and media covers</summary>
<description>
<p>gLabels is a program for creating labels and business cards. It is
designed to work with various laser/ink-jet peel-off label and business
card sheets that you'll find at most office supply stores.</p>
<p>gLabels can be used to design address labels, name tags, price tags,
cd/dvd labels, or just about anything else that is organized in a regular
pattern on a sheet of paper. Labels (or cards) can contain text, images,
lines, shapes, and barcodes. gLabels also includes a document-merge feature
which lets you print a unique label for each record from an external data
source, such as a CSV file.</p>
</description>
<!--
<screenshots>
<screenshot width="881" type="default" height="640">
<image>http://glabels.org/screenshots/400-screenshot-main.png</image>
</screenshot>
</screenshots>
-->
<url type="homepage">http://glabels.org/</url>
<url type="bugtracker">https://github.com/j-evins/glabels-qt/issues</url>
<update_contact>evins_at_snaught.com</update_contact>
</component>
-11
View File
@@ -1,11 +0,0 @@
[Desktop Entry]
Name=gLabels Label Designer 4
Comment=Create labels, business cards and media covers
Keywords=label;card;print;office;barcode;
Exec=glabels-qt %F
Icon=glabels
Terminal=false
Type=Application
Categories=Office;
StartupNotify=true
MimeType=application/x-glabels;
+19
View File
@@ -0,0 +1,19 @@
[Desktop Entry]
Name=gLabels Label Designer 4
Comment=Create labels and business cards
Comment[de]=Entwurf von Etiketten und Visitenkarten
Comment[es]=Crear etiquetas y tarjetas de visita
Comment[fr]=Créer des étiquettes et des cartes de visite
Comment[it]=Crea etichette e biglietti da visita
Comment[pl]=Twórz etykiety i wizytówki
Comment[pt]=Crie etiquetas e cartões de visita
Comment[pt_BR]=Crie etiquetas e cartões de visita
Comment[uk]=Створюйте етикетки та візитки
Keywords=label;card;print;office;barcode;
Exec=glabels-qt %F
Icon=glabels
Terminal=false
Type=Application
Categories=Office;
StartupNotify=true
MimeType=application/x-glabels;
+72
View File
@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>org.glabels.glabels-qt</id>
<developer id="io.github.j-evins">
<name>Jaye Evins</name>
</developer>
<launchable type="desktop-id">org.glabels.glabels-qt.desktop</launchable>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0+</project_license>
<name>gLabels</name>
<summary>Create labels and business cards</summary>
<summary xml:lang="de">Entwurf von Etiketten und Visitenkarten</summary>
<summary xml:lang="es">Crear etiquetas y tarjetas de visita</summary>
<summary xml:lang="fr">Créer des étiquettes et des cartes de visite</summary>
<summary xml:lang="it">Crea etichette e biglietti da visita</summary>
<summary xml:lang="pl">Twórz etykiety i wizytówki</summary>
<summary xml:lang="pt">Crie etiquetas e cartões de visita</summary>
<summary xml:lang="pt_BR">Crie etiquetas e cartões de visita</summary>
<summary xml:lang="uk">Створюйте етикетки та візитки</summary>
<description>
<p>gLabels is a program for creating labels, business cards and media covers.
It is designed to work with various laser/ink-jet peel-off label and business
card sheets that you'll find at most office supply stores.</p>
<p>gLabels can be used to design address labels, name tags, price tags,
cd/dvd labels, or just about anything else that is organized in a regular
pattern on a sheet of paper. Labels (or cards) can contain text, images,
lines, shapes, and barcodes. gLabels also includes a document-merge feature
which lets you print a unique label for each record from an external data
source, such as a CSV file.</p>
</description>
<categories>
<category>Office</category>
</categories>
<keywords>
<keyword>label</keyword>
<keyword>card</keyword>
<keyword>print</keyword>
<keyword>office</keyword>
<keyword>barcode</keyword>
<keyword translate="no">qt</keyword>
</keywords>
<url type="homepage">https://glabels.org/</url>
<url type="bugtracker">https://github.com/j-evins/glabels-qt/issues</url>
<url type="vcs-browser">https://github.com/j-evins/glabels-qt</url>
<update_contact>evins_at_snaught.com</update_contact>
<content_rating type="oars-1.1" />
<branding>
<color type="primary" scheme_preference="light">#bbdb69</color>
<color type="primary" scheme_preference="dark">#4e9a06</color>
</branding>
<translation type="qt">glabels-qt/translations/glabels</translation>
<!--
<screenshots>
<screenshot type="default">
<image>https://glabels.org/screenshots/400-screenshot-main.png</image>
<caption>...</caption>
</screenshot>
</screenshots>
<releases>
<release version="4.0.0" date="2025-12-01">
<url type="details">https://example.org/changelog.html#version_4.0.0</url>
<description>
<p>Release description</p>
<ul>
<li>List of changes</li>
<li>List of changes</li>
</ul>
</description>
</release>
</releases>
-->
</component>
@@ -3,7 +3,7 @@
<mime-type type="application/x-glabels"> <mime-type type="application/x-glabels">
<comment>gLabels Project File</comment> <comment>gLabels Project File</comment>
<sub-class-of type="application/xml"/> <sub-class-of type="application/xml"/>
<generic-icon name="x-glabels-project"/> <icon name="x-glabels-project"/>
<glob pattern="*.glabels"/> <glob pattern="*.glabels"/>
</mime-type> </mime-type>
</mime-info> </mime-info>
+21 -3
View File
@@ -2,19 +2,37 @@ gLabels MacOS Build Instructions
================================ ================================
## Prerequisites ## Prerequisites
``` ```
brew install cmake brew install cmake
brew install qt brew install qt@6
```
## Optional dependencies
```
brew install zlib
brew install qrencode
brew install zint
``` ```
## Compile and Install ## Compile and Install
<pre> <pre>
export SDKROOT=$(xcrun --show-sdk-path)
# Detect architecture and set appropriate paths
if [[ "$(uname -m)" == "arm64" ]]; then
# Apple Silicon
CMAKE_PATH="/opt/homebrew/bin/cmake"
CMAKE_PREFIX_PATH="/opt/homebrew/opt"
else
# Intel
CMAKE_PATH="/usr/local/bin/cmake"
CMAKE_PREFIX_PATH="/usr/local/opt"
fi
cd <i>glabels_source_directory</i> cd <i>glabels_source_directory</i>
mkdir build mkdir build
cd build cd build
cmake -D CMAKE_PREFIX_PATH=/usr/local/opt/qt .. $CMAKE_PATH -DCMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH/qt@6 ..
make make
sudo make install sudo make install
</pre> </pre>
+39 -20
View File
@@ -4,29 +4,20 @@ Glabels Coding Style
This file describes the coding style used in all glabels source code. Any This file describes the coding style used in all glabels source code. Any
patches or pull requests should adhere to this style. patches or pull requests should adhere to this style.
:bulb: **Note:** The top-level glabels source directory includes a *.clang-format* file.
This file can be used with `clang-format` to reformat code to a reasonable approximation
of the style described here.
Formatting Formatting
---------- ----------
### Tabs vs. Spaces ### Tabs vs. Spaces
Tabs are only used at the beginning of a line, and only used to express Use spaces for all code indentation and line-to-line alignment of code elements.
indentation level. Spaces are used for any other type of vertical alignment, (e.g. aligning function arguments). This ensures that the code displays
e.g. aligning function arguments. This ensures that the code displays correctly everywhere.
correctly everywhere, regardless of the viewer's tab size, and does not inflict
the viewer with my choice of tab size (8 spaces).
I use the emacs smart-tabs-mode to automatically enforce this. See
https://www.emacswiki.org/emacs/SmartTabs for more information.
### Indentation Style ### Indentation Style
Glabels code uses the Allman style (a.k.a "BSD Style") of code indentation. Glabels code uses the Allman[^1] style (a.k.a "BSD Style") of code indentation.
I.e. the brace associated with a control statement is placed on the next line, I.e. the brace associated with a control statement is placed on the next line,
indented to the same level as the control statement. Statements within the indented to the same level as the control statement. Statements within the
braces are indented to the next level. braces are indented to the next level.
@@ -50,8 +41,6 @@ else
Also applies to function, class and namespace declaration statements. Also applies to function, class and namespace declaration statements.
See https://en.wikipedia.org/wiki/Indent_style#Allman_style for more
information.
### Parenthesis ### Parenthesis
@@ -98,8 +87,8 @@ Code Organization
Generally code is organized into modules. Usually a module defines a single Generally code is organized into modules. Usually a module defines a single
class or a small namespace of functions/constants/etc. A module is defined by class or a small namespace of functions/constants/etc. A module is defined by
two files: a header file (its specification) and an implementation file. two files: a header file (its specification) and an implementation file.
Header filenames have a ".h" extension and implementation filenames have a Header filenames have a `.hpp` extension[^2] and implementation filenames have a
".cpp" extension. `.cpp` extension.
### Self-contained Headers ### Self-contained Headers
@@ -114,8 +103,8 @@ shall include its header file before any other includes.
All header files should have an ifndef guard to prevent multiple inclusion. All header files should have an ifndef guard to prevent multiple inclusion.
``` ```
#ifndef ns_Module_h #ifndef ns_Module_hpp
#define ns_Module_h #define ns_Module_hpp
... ...
@@ -127,7 +116,7 @@ All header files should have an ifndef guard to prevent multiple inclusion.
Header files should be included in the following order. Header files should be included in the following order.
1. header file for this module (e.g. this would be "Foo.h" in "Foo.cpp"). 1. header file for this module (e.g. this would be `Foo.hpp` in `Foo.cpp`).
2. Glabels header files. 2. Glabels header files.
3. Qt header files 3. Qt header files
3. C++ system header files (e.g. STL files) 3. C++ system header files (e.g. STL files)
@@ -152,3 +141,33 @@ include directives instead.
- Private definitions are placed in unnamed namespaces to limit scope to the current translation unit. - Private definitions are placed in unnamed namespaces to limit scope to the current translation unit.
- All other glabels code is placed in the top-level "glabels" namespace. - All other glabels code is placed in the top-level "glabels" namespace.
- Nested namespace declarations should follow the more concise C++17 syntax
```
namespace glabels::model
{
...
}
```
Notes
-----
### Emacs
The following is an excerpt from my emacs configuration supporting the style
```
(defun my-c++-hook ()
(setq c-default-style "bsd"
c-basic-offset 8
indent-tabs-mode nil
show-trailing-whitespace t))
(add-hook 'c++-mode-hook 'my-c++-hook)
```
References
----------
[^1]: https://en.wikipedia.org/wiki/Indent_style#Allman_style
[^2]: [C++ Weekly - Ep 442 - Stop Using .h For C++ Header Files!](https://www.youtube.com/watch?v=mr3sOT-Delg)
+1 -1
View File
@@ -43,7 +43,7 @@ gLabels Version numbering
* major version indicates a major change in architecture or technology * major version indicates a major change in architecture or technology
- 2.x.x was based on gtk+-2 - 2.x.x was based on gtk+-2
- 3.x.x was based on gtk+-3 - 3.x.x was based on gtk+-3
- 4.x.x is based on qt-5 - 4.x.x is based on qt-6
* minor version indicates a minor change in features or design * minor version indicates a minor change in features or design
- A new stable branch will be created for each new minor version - A new stable branch will be created for each new minor version
* micro version indicates a bugfix release * micro version indicates a bugfix release
+2 -2
View File
@@ -10,12 +10,12 @@ set (glabels-batch_sources
#===================================== #=====================================
# Target # Target
#===================================== #=====================================
add_executable (glabels-batch-qt WIN32 add_executable (glabels-batch-qt
${glabels-batch_sources} ${glabels-batch_sources}
) )
target_compile_features (glabels-batch-qt target_compile_features (glabels-batch-qt
PUBLIC cxx_std_11 PUBLIC cxx_std_20
) )
target_link_libraries (glabels-batch-qt target_link_libraries (glabels-batch-qt
+46 -28
View File
@@ -1,32 +1,33 @@
/* main.cpp // main.cpp
* //
* Copyright (C) 2013-2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2013-2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "model/FileUtil.h"
#include "model/Db.h"
#include "model/Model.h"
#include "model/PageRenderer.h"
#include "model/Version.h"
#include "model/XmlLabelParser.h"
#include "barcode/Backends.h" #include "model/FileUtil.hpp"
#include "merge/Factory.h" #include "model/Db.hpp"
#include "model/Model.hpp"
#include "model/PageRenderer.hpp"
#include "model/Version.hpp"
#include "model/XmlLabelParser.hpp"
#include "barcode/Backends.hpp"
#include "merge/Factory.hpp"
#include <QApplication> #include <QApplication>
#include <QCommandLineParser> #include <QCommandLineParser>
@@ -35,6 +36,7 @@
#include <QLocale> #include <QLocale>
#include <QPrinter> #include <QPrinter>
#include <QPrinterInfo> #include <QPrinterInfo>
#include <QTextStream>
#include <QTranslator> #include <QTranslator>
@@ -99,6 +101,11 @@ int main( int argc, char **argv )
QCoreApplication::translate( "main", "printer" ), QCoreApplication::translate( "main", "printer" ),
QPrinterInfo::defaultPrinterName() }, QPrinterInfo::defaultPrinterName() },
{{"i","input"},
QCoreApplication::translate( "main", "Set merge input to <source> (typically a filename). Set to \"-\" for stdin." ),
QCoreApplication::translate( "main", "source" ),
"" },
{{"o","output"}, {{"o","output"},
QCoreApplication::translate( "main", "Set output filename to <filename>. Set to \"-\" for stdout. (Default=\"output.pdf\")" ), QCoreApplication::translate( "main", "Set output filename to <filename>. Set to \"-\" for stdout. (Default=\"output.pdf\")" ),
QCoreApplication::translate( "main", "filename" ), QCoreApplication::translate( "main", "filename" ),
@@ -151,7 +158,7 @@ int main( int argc, char **argv )
// Handle verbose version option // Handle verbose version option
if ( parser.isSet( "Version" ) ) if ( parser.isSet( "Version" ) )
{ {
qInfo().noquote() << glabels::model::Version::details(); QTextStream(stdout) << glabels::model::Version::details() << Qt::endl;
return 0; return 0;
} }
@@ -220,6 +227,17 @@ int main( int argc, char **argv )
qDebug() << "Batch mode. printer =" << QPrinterInfo::defaultPrinterName(); qDebug() << "Batch mode. printer =" << QPrinterInfo::defaultPrinterName();
} }
if ( parser.isSet( "input" ) )
{
QString inputSource = parser.value( "input" );
if ( inputSource == "-" )
{
inputSource = STDIN_FILENAME;
}
qDebug() << "Merge source =" << inputSource;
model->merge()->setSource( inputSource );
}
glabels::model::PageRenderer renderer( model ); glabels::model::PageRenderer renderer( model );
if ( model->merge()->keys().empty() ) if ( model->merge()->keys().empty() )
{ {
+23 -22
View File
@@ -1,30 +1,31 @@
/* AboutDialog.cpp // AboutDialog.cpp
* //
* Copyright (C) 2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "AboutDialog.h"
#include "model/Version.h" #include "AboutDialog.hpp"
#include "model/Version.hpp"
#include <QDebug>
#include <QDesktopServices> #include <QDesktopServices>
#include <QUrl> #include <QUrl>
#include <QtDebug>
namespace glabels namespace glabels
-58
View File
@@ -1,58 +0,0 @@
/* AboutDialog.h
*
* Copyright (C) 2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef AboutDialog_h
#define AboutDialog_h
#include "ui_AboutDialog.h"
namespace glabels
{
///
/// About Dialog Widget
///
class AboutDialog : public QDialog, public Ui_AboutDialog
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
AboutDialog( QWidget *parent = nullptr );
/////////////////////////////////
// Slots
/////////////////////////////////
private slots:
void onLicenseButtonClicked();
void onWebsiteButtonClicked();
};
}
#endif // AboutDialog_h
+58
View File
@@ -0,0 +1,58 @@
// AboutDialog.hpp
//
// Copyright (C) 2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef AboutDialog_hpp
#define AboutDialog_hpp
#include "ui_AboutDialog.h"
namespace glabels
{
///
/// About Dialog Widget
///
class AboutDialog : public QDialog, public Ui_AboutDialog
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
AboutDialog( QWidget *parent = nullptr );
/////////////////////////////////
// Slots
/////////////////////////////////
private slots:
void onLicenseButtonClicked();
void onWebsiteButtonClicked();
};
}
#endif // AboutDialog_hpp
+27 -26
View File
@@ -1,30 +1,31 @@
/* BarcodeMenu.cpp // BarcodeMenu.cpp
* //
* Copyright (C) 2014 Jaye Evins <evins@snaught.com> // Copyright (C) 2014 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "BarcodeMenu.h"
#include "BarcodeMenuItem.h" #include "BarcodeMenu.hpp"
#include "barcode/Backends.h" #include "BarcodeMenuItem.hpp"
#include <QtDebug> #include "barcode/Backends.hpp"
#include <QDebug>
namespace glabels namespace glabels
@@ -35,7 +36,7 @@ namespace glabels
/// ///
BarcodeMenu::BarcodeMenu() BarcodeMenu::BarcodeMenu()
{ {
foreach ( const barcode::Style& bcStyle, barcode::Backends::styleList() ) for ( const barcode::Style& bcStyle : barcode::Backends::styleList() )
{ {
if ( bcStyle.backendId() == "" ) if ( bcStyle.backendId() == "" )
{ {
@@ -47,11 +48,11 @@ namespace glabels
} }
} }
foreach ( const QString& backendId, barcode::Backends::backendList() ) for ( const QString& backendId : barcode::Backends::backendList() )
{ {
QMenu* subMenu = addMenu( barcode::Backends::backendName( backendId ) ); QMenu* subMenu = addMenu( barcode::Backends::backendName( backendId ) );
foreach ( const barcode::Style& bcStyle, barcode::Backends::styleList() ) for ( const barcode::Style& bcStyle : barcode::Backends::styleList() )
{ {
if ( bcStyle.backendId() == backendId ) if ( bcStyle.backendId() == backendId )
{ {
-79
View File
@@ -1,79 +0,0 @@
/* BarcodeMenu.h
*
* Copyright (C) 2014 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef BarcodeMenu_h
#define BarcodeMenu_h
#include "barcode/Style.h"
#include <QMenu>
namespace glabels
{
///
/// Barcode Menu
///
class BarcodeMenu : public QMenu
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
BarcodeMenu();
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void selectionChanged();
/////////////////////////////////
// Properties
/////////////////////////////////
public:
barcode::Style bcStyle() const;
/////////////////////////////////
// Slots
/////////////////////////////////
private slots:
void onMenuItemActivated( const barcode::Style& bcStyle );
/////////////////////////////////
// Private Data
/////////////////////////////////
private:
barcode::Style mBcStyle;
};
}
#endif // BarcodeMenu_h
+79
View File
@@ -0,0 +1,79 @@
// BarcodeMenu.hpp
//
// Copyright (C) 2014 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef BarcodeMenu_hpp
#define BarcodeMenu_hpp
#include "barcode/Style.hpp"
#include <QMenu>
namespace glabels
{
///
/// Barcode Menu
///
class BarcodeMenu : public QMenu
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
BarcodeMenu();
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void selectionChanged();
/////////////////////////////////
// Properties
/////////////////////////////////
public:
barcode::Style bcStyle() const;
/////////////////////////////////
// Slots
/////////////////////////////////
private slots:
void onMenuItemActivated( const barcode::Style& bcStyle );
/////////////////////////////////
// Private Data
/////////////////////////////////
private:
barcode::Style mBcStyle;
};
}
#endif // BarcodeMenu_hpp
+24 -23
View File
@@ -1,30 +1,31 @@
/* BarcodeMenuButton.cpp // BarcodeMenuButton.cpp
* //
* Copyright (C) 2014 Jaye Evins <evins@snaught.com> // Copyright (C) 2014 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "BarcodeMenuButton.h"
#include "BarcodeMenuItem.h" #include "BarcodeMenuButton.hpp"
#include "barcode/Backends.h" #include "BarcodeMenuItem.hpp"
#include <QtDebug> #include "barcode/Backends.hpp"
#include <QDebug>
namespace glabels namespace glabels
-83
View File
@@ -1,83 +0,0 @@
/* BarcodeMenuButton.h
*
* Copyright (C) 2014 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef BarcodeMenuButton_h
#define BarcodeMenuButton_h
#include "BarcodeMenu.h"
#include "barcode/Style.h"
#include <QPushButton>
namespace glabels
{
///
/// Barcode Menu Button
///
class BarcodeMenuButton : public QPushButton
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
BarcodeMenuButton( QWidget* parent = nullptr );
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void selectionChanged();
/////////////////////////////////
// Properties
/////////////////////////////////
public:
barcode::Style bcStyle() const;
void setBcStyle( const barcode::Style& bcStyle );
/////////////////////////////////
// Slots
/////////////////////////////////
private slots:
void onMenuSelectionChanged();
/////////////////////////////////
// Private Data
/////////////////////////////////
private:
BarcodeMenu* mMenu;
barcode::Style mBcStyle;
};
}
#endif // BarcodeMenuButton_h
+83
View File
@@ -0,0 +1,83 @@
// BarcodeMenuButton.hpp
//
// Copyright (C) 2014 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef BarcodeMenuButton_hpp
#define BarcodeMenuButton_hpp
#include "BarcodeMenu.hpp"
#include "barcode/Style.hpp"
#include <QPushButton>
namespace glabels
{
///
/// Barcode Menu Button
///
class BarcodeMenuButton : public QPushButton
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
BarcodeMenuButton( QWidget* parent = nullptr );
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void selectionChanged();
/////////////////////////////////
// Properties
/////////////////////////////////
public:
barcode::Style bcStyle() const;
void setBcStyle( const barcode::Style& bcStyle );
/////////////////////////////////
// Slots
/////////////////////////////////
private slots:
void onMenuSelectionChanged();
/////////////////////////////////
// Private Data
/////////////////////////////////
private:
BarcodeMenu* mMenu;
barcode::Style mBcStyle;
};
}
#endif // BarcodeMenuButton_hpp
+22 -21
View File
@@ -1,26 +1,27 @@
/* BarcodeMenuItem.cpp // BarcodeMenuItem.cpp
* //
* Copyright (C) 2014 Jaye Evins <evins@snaught.com> // Copyright (C) 2014 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "BarcodeMenuItem.h"
#include <QtDebug> #include "BarcodeMenuItem.hpp"
#include <QDebug>
namespace glabels namespace glabels
-79
View File
@@ -1,79 +0,0 @@
/* BarcodeMenuItem.h
*
* Copyright (C) 2014 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef BarcodeMenuItem_h
#define BarcodeMenuItem_h
#include "barcode/Style.h"
#include <QAction>
namespace glabels
{
///
/// Barcode Menu Item
///
class BarcodeMenuItem : public QAction
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
BarcodeMenuItem( const barcode::Style& bcStyle, QObject* parent = nullptr );
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void activated( const barcode::Style& bcStyle );
/////////////////////////////////
// Properties
/////////////////////////////////
public:
barcode::Style bcStyle() const;
/////////////////////////////////
// Slots
/////////////////////////////////
private slots:
void onTriggered();
/////////////////////////////////
// Private Data
/////////////////////////////////
private:
barcode::Style mBcStyle;
};
}
#endif // BarcodeMenuItem_h
+79
View File
@@ -0,0 +1,79 @@
// BarcodeMenuItem.hpp
//
// Copyright (C) 2014 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef BarcodeMenuItem_hpp
#define BarcodeMenuItem_hpp
#include "barcode/Style.hpp"
#include <QAction>
namespace glabels
{
///
/// Barcode Menu Item
///
class BarcodeMenuItem : public QAction
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
BarcodeMenuItem( const barcode::Style& bcStyle, QObject* parent = nullptr );
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void activated( const barcode::Style& bcStyle );
/////////////////////////////////
// Properties
/////////////////////////////////
public:
barcode::Style bcStyle() const;
/////////////////////////////////
// Slots
/////////////////////////////////
private slots:
void onTriggered();
/////////////////////////////////
// Private Data
/////////////////////////////////
private:
barcode::Style mBcStyle;
};
}
#endif // BarcodeMenuItem_hpp
+32 -29
View File
@@ -21,6 +21,7 @@ set (glabels_sources
Help.cpp Help.cpp
LabelEditor.cpp LabelEditor.cpp
MainWindow.cpp MainWindow.cpp
MergeTableModel.cpp
MergeView.cpp MergeView.cpp
MiniPreviewPixmap.cpp MiniPreviewPixmap.cpp
NotebookUtil.cpp NotebookUtil.cpp
@@ -44,34 +45,35 @@ set (glabels_sources
) )
set (glabels_qobject_headers set (glabels_qobject_headers
AboutDialog.h AboutDialog.hpp
BarcodeMenu.h BarcodeMenu.hpp
BarcodeMenuButton.h BarcodeMenuButton.hpp
BarcodeMenuItem.h BarcodeMenuItem.hpp
ColorButton.h ColorButton.hpp
ColorHistory.h ColorHistory.hpp
ColorPaletteDialog.h ColorPaletteDialog.hpp
ColorPaletteItem.h ColorPaletteItem.hpp
EditVariableDialog.h EditVariableDialog.hpp
FieldButton.h FieldButton.hpp
File.h File.hpp
LabelEditor.h LabelEditor.hpp
MainWindow.h MainWindow.hpp
MergeView.h MergeTableModel.hpp
ObjectEditor.h MergeView.hpp
PreferencesDialog.h ObjectEditor.hpp
PrinterMonitor.h PreferencesDialog.hpp
PrintView.h PrinterMonitor.hpp
PropertiesView.h PrintView.hpp
Preview.h PropertiesView.hpp
ReportBugDialog.h Preview.hpp
SelectProductDialog.h ReportBugDialog.hpp
SimplePreview.h SelectProductDialog.hpp
StartupView.h SimplePreview.hpp
TemplateDesigner.h StartupView.hpp
TemplatePicker.h TemplateDesigner.hpp
UndoRedoModel.h TemplatePicker.hpp
VariablesView.h UndoRedoModel.hpp
VariablesView.hpp
) )
set (glabels_forms set (glabels_forms
@@ -129,7 +131,7 @@ add_executable (glabels-qt WIN32
) )
target_compile_features (glabels-qt target_compile_features (glabels-qt
PUBLIC cxx_std_11 PUBLIC cxx_std_20
) )
target_include_directories (glabels-qt target_include_directories (glabels-qt
@@ -138,6 +140,7 @@ target_include_directories (glabels-qt
target_link_libraries (glabels-qt target_link_libraries (glabels-qt
Model Model
Qt6::Concurrent
Qt6::Widgets Qt6::Widgets
) )
+33 -32
View File
@@ -1,45 +1,46 @@
/* ColorButton.cpp // ColorButton.cpp
* //
* Copyright (C) 2014-2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2014-2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "ColorButton.h"
#include "ColorSwatch.h" #include "ColorButton.hpp"
#include "ColorSwatch.hpp"
#include <QDebug>
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QIcon> #include <QIcon>
#include <QtDebug>
//
// Private
//
namespace
{
const int SWATCH_W = 64;
const int SWATCH_H = 24;
}
namespace glabels namespace glabels
{ {
//
// Private
//
namespace
{
const int SWATCH_W = 64;
const int SWATCH_H = 24;
}
ColorButton::ColorButton( QWidget* parent ) ColorButton::ColorButton( QWidget* parent )
: QPushButton( parent ), mIsDefault(0), mDialog(nullptr) : QPushButton( parent ), mIsDefault(0), mDialog(nullptr)
{ {
-105
View File
@@ -1,105 +0,0 @@
/* ColorButton.h
*
* Copyright (C) 2014-2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ColorButton_h
#define ColorButton_h
#include "ColorPaletteDialog.h"
#include "model/ColorNode.h"
#include <QPushButton>
namespace glabels
{
///
/// Color Button
///
class ColorButton : public QPushButton
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
ColorButton( QWidget* parent = nullptr );
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void colorChanged();
/////////////////////////////////
// Public Methods
/////////////////////////////////
public:
void init( const QString& defaultLabel,
const QColor& defaultColor,
const QColor& color,
bool showUseFieldButton = true );
void setColorNode( model::ColorNode colorNode );
void setColor( QColor color );
void setToDefault();
model::ColorNode colorNode();
void setKeys( const merge::Merge* merge,
const model::Variables& variables );
/////////////////////////////////
// Slots
/////////////////////////////////
private slots:
void onButtonToggled( bool checked );
void onPaletteDialogAccepted();
void onPaletteDialogRejected();
void onPaletteDialogChanged( model::ColorNode colorNode, bool isDefault );
/////////////////////////////////
// Private Methods
/////////////////////////////////
private:
/////////////////////////////////
// Private Members
/////////////////////////////////
private:
QColor mDefaultColor;
bool mIsDefault;
model::ColorNode mColorNode;
ColorPaletteDialog* mDialog;
};
}
#endif // ColorButton_h
+105
View File
@@ -0,0 +1,105 @@
// ColorButton.hpp
//
// Copyright (C) 2014-2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef ColorButton_hpp
#define ColorButton_hpp
#include "ColorPaletteDialog.hpp"
#include "model/ColorNode.hpp"
#include <QPushButton>
namespace glabels
{
///
/// Color Button
///
class ColorButton : public QPushButton
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
ColorButton( QWidget* parent = nullptr );
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void colorChanged();
/////////////////////////////////
// Public Methods
/////////////////////////////////
public:
void init( const QString& defaultLabel,
const QColor& defaultColor,
const QColor& color,
bool showUseFieldButton = true );
void setColorNode( model::ColorNode colorNode );
void setColor( QColor color );
void setToDefault();
model::ColorNode colorNode();
void setKeys( const merge::Merge* merge,
const model::Variables& variables );
/////////////////////////////////
// Slots
/////////////////////////////////
private slots:
void onButtonToggled( bool checked );
void onPaletteDialogAccepted();
void onPaletteDialogRejected();
void onPaletteDialogChanged( model::ColorNode colorNode, bool isDefault );
/////////////////////////////////
// Private Methods
/////////////////////////////////
private:
/////////////////////////////////
// Private Members
/////////////////////////////////
private:
QColor mDefaultColor;
bool mIsDefault;
model::ColorNode mColorNode;
ColorPaletteDialog* mDialog;
};
}
#endif // ColorButton_hpp
+22 -27
View File
@@ -1,38 +1,33 @@
/* ColorHistory.cpp // ColorHistory.cpp
* //
* Copyright (C) 2014-2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2014-2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "ColorHistory.h"
#include "ColorHistory.hpp"
#include <QDebug>
#include <QSettings> #include <QSettings>
#include <QtDebug>
namespace glabels namespace glabels
{ {
ColorHistory::ColorHistory()
{
// empty
}
ColorHistory* ColorHistory::instance() ColorHistory* ColorHistory::instance()
{ {
static ColorHistory* singletonInstance = nullptr; static ColorHistory* singletonInstance = nullptr;
-86
View File
@@ -1,86 +0,0 @@
/* ColorHistory.h
*
* Copyright (C) 2014-2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ColorHistory_h
#define ColorHistory_h
#include <QColor>
#include <QObject>
namespace glabels
{
///
/// Color History
///
class ColorHistory : public QObject
{
Q_OBJECT
public:
static const int MAX_COLORS = 9;
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
ColorHistory();
public:
static ColorHistory* instance();
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void changed();
/////////////////////////////////
// Public Methods
/////////////////////////////////
public:
void addColor( const QColor& color, const QString& name );
QList<QColor> getColors();
QStringList getNames();
/////////////////////////////////
// Private Methods
/////////////////////////////////
private:
QStringList readNameColorList();
void writeNameColorList( const QStringList& nameColorList );
/////////////////////////////////
// Private Members
/////////////////////////////////
private:
};
}
#endif // ColorHistory_h
+86
View File
@@ -0,0 +1,86 @@
// ColorHistory.hpp
//
// Copyright (C) 2014-2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef ColorHistory_hpp
#define ColorHistory_hpp
#include <QColor>
#include <QObject>
namespace glabels
{
///
/// Color History
///
class ColorHistory : public QObject
{
Q_OBJECT
public:
static const int MAX_COLORS = 9;
/////////////////////////////////
// Life Cycle
/////////////////////////////////
private:
ColorHistory() = default;
public:
static ColorHistory* instance();
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void changed();
/////////////////////////////////
// Public Methods
/////////////////////////////////
public:
void addColor( const QColor& color, const QString& name );
QList<QColor> getColors();
QStringList getNames();
/////////////////////////////////
// Private Methods
/////////////////////////////////
private:
QStringList readNameColorList();
void writeNameColorList( const QStringList& nameColorList );
/////////////////////////////////
// Private Members
/////////////////////////////////
private:
};
}
#endif // ColorHistory_hpp
+22 -22
View File
@@ -1,34 +1,34 @@
/* ColorPaletteDialog.cpp // ColorPaletteDialog.cpp
* //
* Copyright (C) 2014-2016 Jaye Evins <evins@snaught.com> // Copyright (C) 2014-2016 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "ColorPaletteDialog.h" #include "ColorPaletteDialog.hpp"
#include <QColorDialog> #include <QColorDialog>
#include <QDebug>
#include <QGridLayout> #include <QGridLayout>
#include <QGroupBox> #include <QGroupBox>
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QPushButton> #include <QPushButton>
#include <QStandardItemModel> #include <QStandardItemModel>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QtDebug>
namespace glabels namespace glabels
@@ -288,7 +288,7 @@ namespace glabels
QList<QColor> colorList = mColorHistory->getColors(); QList<QColor> colorList = mColorHistory->getColors();
int id = 0; int id = 0;
foreach ( QColor color, colorList ) for ( QColor color : colorList )
{ {
mHistoryItem[id]->setColor( id, color, nameList[id] ); mHistoryItem[id]->setColor( id, color, nameList[id] );
mHistoryItem[id]->setEnabled( true ); mHistoryItem[id]->setEnabled( true );
-119
View File
@@ -1,119 +0,0 @@
/* ColorPaletteDialog.h
*
* Copyright (C) 2014-2016 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ColorPaletteDialog_h
#define ColorPaletteDialog_h
#include "ColorHistory.h"
#include "ColorPaletteItem.h"
#include "FieldButton.h"
#include "model/ColorNode.h"
#include <QDialog>
namespace glabels
{
///
/// Color Palette Dialog
///
class ColorPaletteDialog : public QDialog
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
ColorPaletteDialog( const QString& defaultLabel,
const QColor& defaultColor,
const QColor& color,
bool showUseFieldButton = true,
QWidget* parent = nullptr );
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void colorChanged( model::ColorNode colorNode, bool isDefault );
/////////////////////////////////
// Public Methods
/////////////////////////////////
public:
void setColorNode( const model::ColorNode& colorNode );
void setKeys( const merge::Merge* merge,
const model::Variables& variables );
/////////////////////////////////
// Slots
/////////////////////////////////
private slots:
void onPaletteItemActivated( int id );
void onHistoryItemActivated( int id );
void onDefaultButtonClicked();
void onCustomColorButtonClicked();
void onKeySelected( QString key );
void onColorHistoryChanged();
/////////////////////////////////
// Private Methods
/////////////////////////////////
private:
void loadCustomColorHistory();
/////////////////////////////////
// Private Members
/////////////////////////////////
private:
QColor mDefaultColor;
model::ColorNode mColorNode;
static const int PALETTE_COLS = ColorHistory::MAX_COLORS;
static const int PALETTE_ROWS = 4;
struct ColorTableEntry {
QString colorSpec;
const char* trname;
};
static ColorTableEntry mColorTable[];
ColorHistory* mColorHistory;
ColorPaletteItem* mHistoryItem[PALETTE_COLS];
FieldButton* mFieldButton;
};
}
#endif // ColorPaletteDialog_h
+119
View File
@@ -0,0 +1,119 @@
// ColorPaletteDialog.hpp
//
// Copyright (C) 2014-2016 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef ColorPaletteDialog_hpp
#define ColorPaletteDialog_hpp
#include "ColorHistory.hpp"
#include "ColorPaletteItem.hpp"
#include "FieldButton.hpp"
#include "model/ColorNode.hpp"
#include <QDialog>
namespace glabels
{
///
/// Color Palette Dialog
///
class ColorPaletteDialog : public QDialog
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
ColorPaletteDialog( const QString& defaultLabel,
const QColor& defaultColor,
const QColor& color,
bool showUseFieldButton = true,
QWidget* parent = nullptr );
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void colorChanged( model::ColorNode colorNode, bool isDefault );
/////////////////////////////////
// Public Methods
/////////////////////////////////
public:
void setColorNode( const model::ColorNode& colorNode );
void setKeys( const merge::Merge* merge,
const model::Variables& variables );
/////////////////////////////////
// Slots
/////////////////////////////////
private slots:
void onPaletteItemActivated( int id );
void onHistoryItemActivated( int id );
void onDefaultButtonClicked();
void onCustomColorButtonClicked();
void onKeySelected( QString key );
void onColorHistoryChanged();
/////////////////////////////////
// Private Methods
/////////////////////////////////
private:
void loadCustomColorHistory();
/////////////////////////////////
// Private Members
/////////////////////////////////
private:
QColor mDefaultColor;
model::ColorNode mColorNode;
static const int PALETTE_COLS = ColorHistory::MAX_COLORS;
static const int PALETTE_ROWS = 4;
struct ColorTableEntry {
QString colorSpec;
const char* trname;
};
static ColorTableEntry mColorTable[];
ColorHistory* mColorHistory;
ColorPaletteItem* mHistoryItem[PALETTE_COLS];
FieldButton* mFieldButton;
};
}
#endif // ColorPaletteDialog_hpp
+29 -30
View File
@@ -1,47 +1,46 @@
/* ColorPaletteItem.cpp // ColorPaletteItem.cpp
* //
* Copyright (C) 2014 Jaye Evins <evins@snaught.com> // Copyright (C) 2014 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "ColorPaletteItem.h"
#include "ColorPaletteItem.hpp"
#include <QMouseEvent> #include <QMouseEvent>
#include <QPainter> #include <QPainter>
namespace glabels //
// Private
//
namespace
{ {
//
// Private
//
namespace
{
const int border = 4; const int border = 4;
const int wSwatch = 25; const int wSwatch = 25;
const int hSwatch = 25; const int hSwatch = 25;
const int hoverBgOutlineWidthPixels = 1;
const int outlineWidthPixels = 1; const int outlineWidthPixels = 1;
} }
namespace glabels
{
/// ///
/// Constructor From Data /// Constructor From Data
/// ///
-89
View File
@@ -1,89 +0,0 @@
/* ColorPaletteItem.h
*
* Copyright (C) 2014 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ColorPaletteItem_h
#define ColorPaletteItem_h
#include <QColor>
#include <QWidget>
namespace glabels
{
///
/// Color Palette Item
///
class ColorPaletteItem : public QWidget
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
ColorPaletteItem( int id,
const QColor& color,
const QString& tip,
QWidget* parent = nullptr );
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void activated( int id );
/////////////////////////////////
// Public Methods
/////////////////////////////////
public:
void setColor( int id,
const QColor& color,
const QString& tip );
/////////////////////////////////
// Event handlers
/////////////////////////////////
protected:
void paintEvent( QPaintEvent* event ) override;
void enterEvent( QEnterEvent* event ) override;
void leaveEvent( QEvent* event ) override;
void mousePressEvent( QMouseEvent* event ) override;
/////////////////////////////////
// Private Data
/////////////////////////////////
private:
int mId;
QColor mColor;
QString mTip;
bool mHover;
};
}
#endif // ColorPaletteItem_h
+89
View File
@@ -0,0 +1,89 @@
// ColorPaletteItem.hpp
//
// Copyright (C) 2014 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef ColorPaletteItem_hpp
#define ColorPaletteItem_hpp
#include <QColor>
#include <QWidget>
namespace glabels
{
///
/// Color Palette Item
///
class ColorPaletteItem : public QWidget
{
Q_OBJECT
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
ColorPaletteItem( int id,
const QColor& color,
const QString& tip,
QWidget* parent = nullptr );
/////////////////////////////////
// Signals
/////////////////////////////////
signals:
void activated( int id );
/////////////////////////////////
// Public Methods
/////////////////////////////////
public:
void setColor( int id,
const QColor& color,
const QString& tip );
/////////////////////////////////
// Event handlers
/////////////////////////////////
protected:
void paintEvent( QPaintEvent* event ) override;
void enterEvent( QEnterEvent* event ) override;
void leaveEvent( QEvent* event ) override;
void mousePressEvent( QMouseEvent* event ) override;
/////////////////////////////////
// Private Data
/////////////////////////////////
private:
int mId;
QColor mColor;
QString mTip;
bool mHover;
};
}
#endif // ColorPaletteItem_hpp
+29 -28
View File
@@ -1,41 +1,42 @@
/* ColorSwatch.cpp // ColorSwatch.cpp
* //
* Copyright (C) 2014 Jaye Evins <evins@snaught.com> // Copyright (C) 2014 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "ColorSwatch.h"
#include "ColorSwatch.hpp"
#include <QPainter> #include <QPainter>
namespace glabels //
// Private
//
namespace
{ {
//
// Private
//
namespace
{
const QColor outlineColor( 0, 0, 0 ); const QColor outlineColor( 0, 0, 0 );
const double outlineWidthPixels = 1; const double outlineWidthPixels = 1;
} }
namespace glabels
{
/// ///
/// Constructor /// Constructor
/// ///
-48
View File
@@ -1,48 +0,0 @@
/* ColorSwatch.h
*
* Copyright (C) 2014 Jaye Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef ColorSwatch_h
#define ColorSwatch_h
#include <QPixmap>
namespace glabels
{
///
/// Simple Preview Widget
///
class ColorSwatch : public QPixmap
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
ColorSwatch( int w, int h, const QColor& color );
};
}
#endif // ColorSwatch_h
+48
View File
@@ -0,0 +1,48 @@
// ColorSwatch.hpp
//
// Copyright (C) 2014 Jaye Evins <evins@snaught.com>
//
// This file is part of gLabels-qt.
//
// gLabels-qt is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// gLabels-qt is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef ColorSwatch_hpp
#define ColorSwatch_hpp
#include <QPixmap>
namespace glabels
{
///
/// Simple Preview Widget
///
class ColorSwatch : public QPixmap
{
/////////////////////////////////
// Life Cycle
/////////////////////////////////
public:
ColorSwatch( int w, int h, const QColor& color );
};
}
#endif // ColorSwatch_hpp
+21 -20
View File
@@ -1,24 +1,25 @@
/* Cursors.cpp // Cursors.cpp
* //
* Copyright (C) 2013 Jaye Evins <evins@snaught.com> // Copyright (C) 2013 Jaye Evins <evins@snaught.com>
* //
* This file is part of gLabels-qt. // This file is part of gLabels-qt.
* //
* gLabels-qt is free software: you can redistribute it and/or modify // gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. // (at your option) any later version.
* //
* gLabels-qt is distributed in the hope that it will be useful, // gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. // GNU General Public License for more details.
* //
* You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>. // along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/ //
#include "Cursors.h"
#include "Cursors.hpp"
#include <QPixmap> #include <QPixmap>

Some files were not shown because too many files have changed in this diff Show More