From 86cf5819a3484450f205ddd0a90a755ef0690490 Mon Sep 17 00:00:00 2001
From: Jeremy Borgman
Date: Thu, 24 Sep 2020 08:29:27 -0500
Subject: [PATCH 01/31] added releasing checklist
---
docs/Releasing.md | 15 +++++++++++++++
1 file changed, 15 insertions(+)
create mode 100644 docs/Releasing.md
diff --git a/docs/Releasing.md b/docs/Releasing.md
new file mode 100644
index 00000000..003d82d4
--- /dev/null
+++ b/docs/Releasing.md
@@ -0,0 +1,15 @@
+# Checklist for making a new release
+
+These are the code changes that need to take place
+- [ ] Create and push git tag
+- [ ] Update version in CMakeLists.txt
+- [ ] Update changelog at data/debian/changelog
+- [ ] Update changelog at data/rpm/flameshot.spec
+- [ ] Update docs/appdata/flameshot.metainfo.xml
+
+These are the steps for actually making the release
+- [ ] Download all binaries from CI run started from PR related to code changes shown above
+- [ ] Create sha256 for each binary and compare against sha256 shown in the CI to verify there was no corruption or inserted malware.
+- [ ] Create a new "New Release" in githhub and explain changes in release notes
+- [ ] Upload all binaries and sha's
+- [ ] Update change log on [website](https://github.com/flameshot-org/flameshot-org.github.io/) data/changelog.md
From e298d56f32998c0b778eab81bd3b682a4292ef31 Mon Sep 17 00:00:00 2001
From: Jeremy Borgman
Date: Thu, 24 Sep 2020 10:09:56 -0500
Subject: [PATCH 02/31] Updated per feedback
---
docs/Releasing.md | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/docs/Releasing.md b/docs/Releasing.md
index 003d82d4..e46c4c7c 100644
--- a/docs/Releasing.md
+++ b/docs/Releasing.md
@@ -3,8 +3,8 @@
These are the code changes that need to take place
- [ ] Create and push git tag
- [ ] Update version in CMakeLists.txt
-- [ ] Update changelog at data/debian/changelog
-- [ ] Update changelog at data/rpm/flameshot.spec
+- [ ] Update version and changelog at data/debian/changelog
+- [ ] Update version and changelog at data/rpm/flameshot.spec
- [ ] Update docs/appdata/flameshot.metainfo.xml
These are the steps for actually making the release
@@ -13,3 +13,5 @@ These are the steps for actually making the release
- [ ] Create a new "New Release" in githhub and explain changes in release notes
- [ ] Upload all binaries and sha's
- [ ] Update change log on [website](https://github.com/flameshot-org/flameshot-org.github.io/) data/changelog.md
+- [ ] Update version on [website](https://github.com/flameshot-org/flameshot-org.github.io/blob/master/_coverpage.md)
+
From e1214e23e5a2641d585e47aa064cfcbb8a2b6111 Mon Sep 17 00:00:00 2001
From: Peter Cai
Date: Fri, 25 Sep 2020 06:47:38 +0800
Subject: [PATCH 03/31] correct position of QScreen geometry on HiDPI
multi-headed setup
---
src/utils/screengrabber.cpp | 5 ++++-
src/widgets/capture/capturewidget.cpp | 6 ++++++
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/utils/screengrabber.cpp b/src/utils/screengrabber.cpp
index a6a35711..03c76657 100644
--- a/src/utils/screengrabber.cpp
+++ b/src/utils/screengrabber.cpp
@@ -90,7 +90,10 @@ QPixmap ScreenGrabber::grabEntireDesktop(bool& ok)
QRect geometry;
for (QScreen* const screen : QGuiApplication::screens()) {
- geometry = geometry.united(screen->geometry());
+ QRect scrRect = screen->geometry();
+ scrRect.moveTo(scrRect.x() / screen->devicePixelRatio(),
+ scrRect.y() / screen->devicePixelRatio());
+ geometry = geometry.united(scrRect);
}
QPixmap p(QApplication::primaryScreen()->grabWindow(
diff --git a/src/widgets/capture/capturewidget.cpp b/src/widgets/capture/capturewidget.cpp
index edbd33e1..70083e10 100644
--- a/src/widgets/capture/capturewidget.cpp
+++ b/src/widgets/capture/capturewidget.cpp
@@ -126,6 +126,8 @@ CaptureWidget::CaptureWidget(const uint id,
if (m_context.fullscreen) {
for (QScreen* const screen : QGuiApplication::screens()) {
QRect r = screen->geometry();
+ r.moveTo(r.x() / screen->devicePixelRatio(),
+ r.y() / screen->devicePixelRatio());
#ifdef Q_OS_WIN
r.moveTo(r.topLeft() - topLeft);
#endif
@@ -600,6 +602,10 @@ void CaptureWidget::initPanel()
QRect panelRect = rect();
if (m_context.fullscreen) {
panelRect = QGuiApplication::primaryScreen()->geometry();
+ auto devicePixelRatio =
+ QGuiApplication::primaryScreen()->devicePixelRatio();
+ panelRect.moveTo(panelRect.x() / devicePixelRatio,
+ panelRect.y() / devicePixelRatio);
}
ConfigHandler config;
From ac038474ceeee9b3fef9fe777c2d34def563d19e Mon Sep 17 00:00:00 2001
From: hexyoungs
Date: Fri, 25 Sep 2020 10:40:53 +0800
Subject: [PATCH 04/31] feat: using luminance to determine text color
of circlecounttool
---
src/tools/circlecount/circlecounttool.cpp | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/tools/circlecount/circlecounttool.cpp b/src/tools/circlecount/circlecounttool.cpp
index 3b9ca65c..9a53a994 100644
--- a/src/tools/circlecount/circlecounttool.cpp
+++ b/src/tools/circlecount/circlecounttool.cpp
@@ -89,8 +89,11 @@ void CircleCountTool::process(QPainter& painter,
textRect, Qt::AlignCenter, QString::number(m_count));
}
- // Lightness value ranges from 0-255, we split at 75 as this looks best
- if (m_color.lightness() <= 75) {
+ // Calculate the perceptive luminance - human eye favors green color
+ double luma = ((0.299 * m_color.red()) + (0.587 * m_color.green()) +
+ (0.114 * m_color.blue())) /
+ 255;
+ if (luma <= 0.5) {
painter.setPen(Qt::white);
} else {
painter.setPen(Qt::black);
From f5d581c89f36c705f65f10193902a2382a5bf595 Mon Sep 17 00:00:00 2001
From: Jeremy Borgman
Date: Thu, 24 Sep 2020 10:57:24 -0500
Subject: [PATCH 05/31] bolded font in circle
---
src/tools/circlecount/circlecounttool.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/tools/circlecount/circlecounttool.cpp b/src/tools/circlecount/circlecounttool.cpp
index 9a53a994..b923a601 100644
--- a/src/tools/circlecount/circlecounttool.cpp
+++ b/src/tools/circlecount/circlecounttool.cpp
@@ -72,6 +72,7 @@ void CircleCountTool::process(QPainter& painter,
auto new_font = orig_font;
auto fontSize = bubble_size;
new_font.setPixelSize(fontSize);
+ new_font.setBold(true);
painter.setFont(new_font);
QRect bRect =
From 11ceeaca895b3a46232310b144a68449d0476f1b Mon Sep 17 00:00:00 2001
From: Ahmed Zetao Yang
Date: Fri, 25 Sep 2020 22:23:00 +0800
Subject: [PATCH 06/31] chore(CI): provide artifacts for linux and windows
---
.github/workflows/Linux-pack.yml | 220 +++++++++++++++++++----------
.github/workflows/Windows-pack.yml | 5 +
2 files changed, 149 insertions(+), 76 deletions(-)
diff --git a/.github/workflows/Linux-pack.yml b/.github/workflows/Linux-pack.yml
index defb458e..0a356514 100644
--- a/.github/workflows/Linux-pack.yml
+++ b/.github/workflows/Linux-pack.yml
@@ -28,11 +28,22 @@ env:
jobs:
deb-pack:
+ name: ${{ matrix.dist.name }}
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
- dist: [debian-10, ubuntu-20.04]
+ dist:
+ - {
+ name: debian-10,
+ os: debian,
+ symbol: buster
+ }
+ - {
+ name: ubuntu-20.04,
+ os: ubuntu,
+ symbol: focal
+ }
steps:
- name: Checkout Source code
uses: actions/checkout@v2
@@ -56,36 +67,33 @@ jobs:
# flameshot-org/packpack or packpack/packpack
repository: flameshot-org/packpack
path: tools
- - name: Packaging on ${{ matrix.dist }}
- if: matrix.dist == 'debian-10'
+ - name: Packaging on ${{ matrix.dist.name }}
run: |
cp -r $GITHUB_WORKSPACE/data/debian $GITHUB_WORKSPACE
bash $GITHUB_WORKSPACE/tools/packpack
- mv $GITHUB_WORKSPACE/build/${PRODUCT}_${VERSION}-${RELEASE}_amd64.deb $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.${{ matrix.dist }}.amd64.deb
+ mv $GITHUB_WORKSPACE/build/${PRODUCT}_${VERSION}-${RELEASE}_amd64.deb $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.${{ matrix.dist.name }}.amd64.deb
env:
- OS: debian
- DIST: buster
- - name: Packaging on ${{ matrix.dist }}
- if: matrix.dist == 'ubuntu-20.04'
+ OS: ${{ matrix.dist.os }}
+ DIST: ${{ matrix.dist.symbol }}
+ - name: SHA256Sum of ${{ matrix.dist.name }} package(daily build)
run: |
- cp -r $GITHUB_WORKSPACE/data/debian $GITHUB_WORKSPACE
- bash $GITHUB_WORKSPACE/tools/packpack
- mv $GITHUB_WORKSPACE/build/${PRODUCT}_${VERSION}-${RELEASE}_amd64.deb $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.${{ matrix.dist }}.amd64.deb
- env:
- OS: ubuntu
- DIST: focal
- - name: SHA256Sum of ${{ matrix.dist }} package(daily build)
- run: |
- sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.${{ matrix.dist }}.amd64.deb
- sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.${{ matrix.dist }}.amd64.deb > $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.${{ matrix.dist }}.amd64.deb.sha256sum
- echo "=============${{ matrix.dist }} sha256sum download link============"
- echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.${{ matrix.dist }}.amd64.deb.sha256sum)
+ sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.${{ matrix.dist.name }}.amd64.deb
+ sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.${{ matrix.dist.name }}.amd64.deb > $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.${{ matrix.dist.name }}.amd64.deb.sha256sum
+ echo "=============${{ matrix.dist.name }} sha256sum download link============"
+ echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.${{ matrix.dist.name }}.amd64.deb.sha256sum)
echo "========no operation for you can see link in the log console======="
- - name: Upload ${{ matrix.dist }} package(daily build)
+ - name: Upload ${{ matrix.dist.name }} package(daily build)
run: |
- echo "================${{ matrix.dist }} download link==============="
- echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.${{ matrix.dist }}.amd64.deb)
+ echo "================${{ matrix.dist.name }} download link==============="
+ echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.${{ matrix.dist.name }}.amd64.deb)
echo "======no operation for you can see link in the log console====="
+ - name: Artifact Upload
+ uses: actions/upload-artifact@v2
+ with:
+ name: Linux-distribution-artifact
+ path: |
+ ${{ github.workspace }}/build/${{ env.PRODUCT }}-*-${{ env.RELEASE }}.${{ matrix.dist.name }}.amd64.deb
+ ${{ github.workspace }}/build/${{ env.PRODUCT }}-*-${{ env.RELEASE }}.${{ matrix.dist.name }}.amd64.deb.sha256sum
deb-pack-extra:
name: ubuntu-18.04(extra job to packaging deb)
@@ -147,26 +155,48 @@ jobs:
mkdir -p $GITHUB_WORKSPACE/build
sed -e "/cmake (>= 3.13~),/d" -i $GITHUB_WORKSPACE/debian/control
dpkg-buildpackage -b
- cp $GITHUB_WORKSPACE/../${PRODUCT}_${VERSION}-${RELEASE}_amd64.deb $GITHUB_WORKSPACE/build/${PRODUCT}_${VERSION}-${RELEASE}.ubuntu-18.04.amd64.deb
+ cp $GITHUB_WORKSPACE/../${PRODUCT}_${VERSION}-${RELEASE}_amd64.deb $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.ubuntu-18.04.amd64.deb
- name: SHA256Sum of ubuntu-18.04 package(daily build)
run: |
- sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}_${VERSION}-${RELEASE}.ubuntu-18.04.amd64.deb
- sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}_${VERSION}-${RELEASE}.ubuntu-18.04.amd64.deb > $GITHUB_WORKSPACE/build/${PRODUCT}_${VERSION}-${RELEASE}.ubuntu-18.04.amd64.deb.sha256sum
+ sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.ubuntu-18.04.amd64.deb
+ sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.ubuntu-18.04.amd64.deb > $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.ubuntu-18.04.amd64.deb.sha256sum
echo "============ubuntu-18.04 sha256sum download link=============="
- echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}_${VERSION}-${RELEASE}.ubuntu-18.04.amd64.deb.sha256sum)
+ echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.ubuntu-18.04.amd64.deb.sha256sum)
echo "=====no operation for you can see link in the log console====="
- name: Upload ubuntu-18.04 package(daily build)
run: |
echo "===================ubuntu-18.04 download link=================="
- echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}_${VERSION}-${RELEASE}.ubuntu-18.04.amd64.deb)
+ echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.ubuntu-18.04.amd64.deb)
echo "======no operation for you can see link in the log console====="
+ - name: Artifact Upload
+ uses: actions/upload-artifact@v2
+ with:
+ name: Linux-distribution-artifact
+ path: |
+ ${{ github.workspace }}/build/*
rpm-pack:
+ name: ${{ matrix.dist.name }}
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
- dist: [fedora-31, fedora-32, opensuse-leap-15.2]
+ dist:
+ - {
+ name: fedora-31,
+ os: fedora,
+ symbol: 31
+ }
+ - {
+ name: fedora-32,
+ os: fedora,
+ symbol: 32
+ }
+ - {
+ name: opensuse-leap-15.2,
+ os: opensuse-leap,
+ symbol: 15.2
+ }
steps:
- name: Checkout Source code
uses: actions/checkout@v2
@@ -190,60 +220,68 @@ jobs:
# flameshot-org/packpack or packpack/packpack
repository: flameshot-org/packpack
path: tools
- - name: Packaging on ${{ matrix.dist }}
- if: matrix.dist == 'fedora-31'
+ - name: Packaging on ${{ matrix.dist.name }}
run: |
cp -r $GITHUB_WORKSPACE/data/rpm $GITHUB_WORKSPACE
bash $GITHUB_WORKSPACE/tools/packpack
env:
- OS: fedora
- DIST: 31
- - name: Packaging on ${{ matrix.dist }}
- if: matrix.dist == 'fedora-32'
+ OS: ${{ matrix.dist.os }}
+ DIST: ${{ matrix.dist.symbol }}
+ - name: Package Clean
+ if: matrix.dist.os == 'fedora'
run: |
- cp -r $GITHUB_WORKSPACE/data/rpm $GITHUB_WORKSPACE
- bash $GITHUB_WORKSPACE/tools/packpack
- env:
- OS: fedora
- DIST: 32
- - name: Packaging on ${{ matrix.dist }}
- if: matrix.dist == 'opensuse-leap-15.2'
+ rm -f ${{ github.workspace }}/build/${{ env.PRODUCT }}-debuginfo-*.rpm
+ rm -f ${{ github.workspace }}/build/${{ env.PRODUCT }}-debugsource-*.rpm
+ rm -f ${{ github.workspace }}/build/${{ env.PRODUCT }}-*.src.rpm
+ rm -f ${{ github.workspace }}/build/build.log
+ - name: SHA256Sum of ${{ matrix.dist.name }} package(daily build)
+ if: matrix.dist.os == 'fedora'
run: |
- cp -r $GITHUB_WORKSPACE/data/rpm $GITHUB_WORKSPACE
- bash $GITHUB_WORKSPACE/tools/packpack
- env:
- OS: opensuse-leap
- DIST: 15.2
- - name: SHA256Sum of ${{ matrix.dist }} package(daily build)
- if: startsWith(matrix.dist, 'fedora')
- run: |
- sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.fc*.${ARCH}.rpm
- sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.fc*.${ARCH}.rpm > $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.fc*.${ARCH}.rpm.sha256sum
+ sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.fc*.${ARCH}.rpm
+ sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.fc*.${ARCH}.rpm > $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.fc${{ matrix.dist.symbol }}.${ARCH}.rpm.sha256sum
echo "============${{ matrix.dist }} sha256sum download link============"
echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.fc*.${ARCH}.rpm.sha256sum)
echo "=======no operation for you can see link in the log console======="
- - name: SHA256Sum of ${{ matrix.dist }} package(daily build)
- if: startsWith(matrix.dist, 'opensuse-leap')
+ - name: SHA256Sum of ${{ matrix.dist.name }} package(daily build)
+ if: matrix.dist.os == 'opensuse-leap'
run: |
- sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-lp*.${ARCH}.rpm
- sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-lp*.${ARCH}.rpm > $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-lp*.${ARCH}.rpm.sha256sum
+ mv $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-lp*.${ARCH}.rpm $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}-lp${{ matrix.dist.symbol }}.${ARCH}.rpm
+ sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}-lp${{ matrix.dist.symbol }}.${ARCH}.rpm
+ sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}-lp${{ matrix.dist.symbol }}.${ARCH}.rpm > $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}-lp${{ matrix.dist.symbol }}.${ARCH}.rpm.sha256sum
echo "============${{ matrix.dist }} sha256sum download link==========="
- echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-lp*.${ARCH}.rpm.sha256sum)
+ echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}-lp${{ matrix.dist.symbol }}.${ARCH}.rpm.sha256sum)
echo "=======no operation for you can see link in the log console======"
- - name: Upload ${{ matrix.dist }} package(daily build)
- if: startsWith(matrix.dist, 'fedora')
+ - name: Upload ${{ matrix.dist.name }} package(daily build)
+ if: matrix.dist.os == 'fedora'
run: |
- echo "================${{ matrix.dist }} download link==============="
+ echo "================${{ matrix.dist.name }} download link==============="
echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.fc*.${ARCH}.rpm)
echo "======no operation for you can see link in the log console====="
- - name: Upload ${{ matrix.dist }} package(daily build)
- if: startsWith(matrix.dist, 'opensuse-leap')
+ - name: Upload ${{ matrix.dist.name }} package(daily build)
+ if: matrix.dist.os == 'opensuse-leap'
run: |
- echo "================${{ matrix.dist }} download link==============="
- echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-lp*.${ARCH}.rpm)
+ echo "================${{ matrix.dist.name }} download link==============="
+ echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}-lp${{ matrix.dist.symbol }}.${ARCH}.rpm)
echo "======no operation for you can see link in the log console====="
+ - name: Artifact Upload
+ if: matrix.dist.os == 'fedora'
+ uses: actions/upload-artifact@v2
+ with:
+ name: Linux-distribution-artifact
+ path: |
+ ${{ github.workspace }}/build/
+
+ - name: Artifact Upload
+ if: matrix.dist.os == 'opensuse-leap'
+ uses: actions/upload-artifact@v2
+ with:
+ name: Linux-distribution-artifact
+ path: |
+ ${{ github.workspace }}/build/${{ env.PRODUCT }}-*-lp${{ matrix.dist.symbol }}.${{ env.ARCH }}.rpm
+ ${{ github.workspace }}/build/${{ env.PRODUCT }}-*-lp${{ matrix.dist.symbol }}.${{ env.ARCH }}.rpm.sha256sum
appimage-pack:
+ name: appimage
runs-on: ubuntu-20.04
steps:
- name: Checkout Source code
@@ -312,20 +350,29 @@ jobs:
${APPIMAGE_DST_PATH}/
VERSION=${VERSION} $GITHUB_WORKSPACE/appimagetool ${APPIMAGE_DST_PATH}
+ mv $GITHUB_WORKSPACE/Flameshot-${VERSION}-${ARCH}.AppImage $GITHUB_WORKSPACE/Flameshot-${VERSION}.${ARCH}.AppImage
- name: SHA256Sum of appimage package(daily build)
run: |
- sha256sum $GITHUB_WORKSPACE/Flameshot-${VERSION}-${ARCH}.AppImage
- sha256sum $GITHUB_WORKSPACE/Flameshot-${VERSION}-${ARCH}.AppImage > $GITHUB_WORKSPACE/Flameshot-${VERSION}-${ARCH}.AppImage.sha256sum
+ sha256sum $GITHUB_WORKSPACE/Flameshot-${VERSION}.${ARCH}.AppImage
+ sha256sum $GITHUB_WORKSPACE/Flameshot-${VERSION}.${ARCH}.AppImage > $GITHUB_WORKSPACE/Flameshot-${VERSION}.${ARCH}.AppImage.sha256sum
echo "================appimage sha256sum download link==============="
- echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/Flameshot-${VERSION}-${ARCH}.AppImage.sha256sum)
+ echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/Flameshot-${VERSION}.${ARCH}.AppImage.sha256sum)
echo "======no operation for you can see link in the log console====="
- name: Upload appimage package for daily build
run: |
echo "====================appimage download link====================="
- echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/Flameshot-${VERSION}-${ARCH}.AppImage)
+ echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/Flameshot-${VERSION}.${ARCH}.AppImage)
echo "======no operation for you can see link in the log console====="
+ - name: Artifact Upload
+ uses: actions/upload-artifact@v2
+ with:
+ name: Linux-distribution-artifact
+ path: |
+ ${{ github.workspace }}/Flameshot-*.${{ env.ARCH }}.AppImage
+ ${{ github.workspace }}/Flameshot-*.${{ env.ARCH }}.AppImage.sha256sum
flatpak-pack:
+ name: flatpak
runs-on: ubuntu-20.04
steps:
- name: Checkout Source code
@@ -362,20 +409,29 @@ jobs:
flatpak-builder --user --disable-rofiles-fuse --repo=repo --force-clean flatpak_app ${MANIFEST_PATH} --install-deps-from=flathub
flatpak build-bundle repo ${BUNDLE} --runtime-repo=${RUNTIME_REPO} ${APP_ID} ${BRANCH}
+ mv $GITHUB_WORKSPACE/org.flameshot.flameshot_${VERSION}_${ARCH}.flatpak $GITHUB_WORKSPACE/org.flameshot.flameshot-${VERSION}.${ARCH}.flatpak
- name: SHA256Sum of flatpak package(daily build)
run: |
- sha256sum $GITHUB_WORKSPACE/org.flameshot.flameshot_${VERSION}_${ARCH}.flatpak
- sha256sum $GITHUB_WORKSPACE/org.flameshot.flameshot_${VERSION}_${ARCH}.flatpak > $GITHUB_WORKSPACE/org.flameshot.flameshot_${VERSION}_${ARCH}.flatpak.sha256sum
+ sha256sum $GITHUB_WORKSPACE/org.flameshot.flameshot-${VERSION}.${ARCH}.flatpak
+ sha256sum $GITHUB_WORKSPACE/org.flameshot.flameshot-${VERSION}.${ARCH}.flatpak > $GITHUB_WORKSPACE/org.flameshot.flameshot-${VERSION}.${ARCH}.flatpak.sha256sum
echo "================flatpak sha256sum download link===================="
- echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/org.flameshot.flameshot_${VERSION}_${ARCH}.flatpak.sha256sum)
+ echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/org.flameshot.flameshot-${VERSION}.${ARCH}.flatpak.sha256sum)
echo "========no operation for you can see link in the log console======="
- name: Upload flatpak package(daily build)
run: |
echo "=====================flatpak download link====================="
- echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/org.flameshot.flameshot_${VERSION}_${ARCH}.flatpak)
+ echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/org.flameshot.flameshot-${VERSION}.${ARCH}.flatpak)
echo "======no operation for you can see link in the log console====="
+ - name: Artifact Upload
+ uses: actions/upload-artifact@v2
+ with:
+ name: Linux-distribution-artifact
+ path: |
+ ${{ github.workspace }}/org.flameshot.flameshot-*.${{ env.ARCH }}.flatpak
+ ${{ github.workspace }}/org.flameshot.flameshot-*.${{ env.ARCH }}.flatpak.sha256sum
snap-pack:
+ name: snap
runs-on: ubuntu-20.04
steps:
- name: Checkout Source code
@@ -399,15 +455,27 @@ jobs:
id: snapcraft
with:
path: data
+ - name: Rename snap name
+ shell: bash
+ run: |
+ mkdir -p $GITHUB_WORKSPACE/build
+ cp ${{ steps.snapcraft.outputs.snap }} $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.amd64.snap
- name: SHA256Sum of snap package(daily build)
run: |
- sha256sum ${{ steps.snapcraft.outputs.snap }}
- sha256sum ${{ steps.snapcraft.outputs.snap }} > ${{ steps.snapcraft.outputs.snap }}.sha256sum
+ sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.amd64.snap
+ sha256sum $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.amd64.snap > $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.amd64.snap.sha256sum
echo "================snap sha256sum download link=================="
- echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh ${{ steps.snapcraft.outputs.snap }}.sha256sum)
+ echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.amd64.snap.sha256sum)
echo "=====no operation for you can see link in the log console====="
- name: Upload snap package(daily build)
run: |
echo "=======================snap download link======================"
- echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh ${{ steps.snapcraft.outputs.snap }})
+ echo $(sh $GITHUB_WORKSPACE/scripts/upload_services/${UPLOAD_SERVICE}.sh $GITHUB_WORKSPACE/build/${PRODUCT}-${VERSION}-${RELEASE}.amd64.snap)
echo "======no operation for you can see link in the log console====="
+ - name: Artifact Upload
+ uses: actions/upload-artifact@v2
+ with:
+ name: Linux-distribution-artifact
+ path: |
+ ${{ github.workspace }}/build/${{ env.PRODUCT }}-*-${{ env.RELEASE }}.amd64.snap
+ ${{ github.workspace }}/build/${{ env.PRODUCT }}-*-${{ env.RELEASE }}.amd64.snap.sha256sum
diff --git a/.github/workflows/Windows-pack.yml b/.github/workflows/Windows-pack.yml
index b40952ed..e56d0126 100644
--- a/.github/workflows/Windows-pack.yml
+++ b/.github/workflows/Windows-pack.yml
@@ -156,3 +156,8 @@ jobs:
echo "=================Windows portable download link================"
echo $(python $GITHUB_WORKSPACE/scripts/upload_services/transferwee.py upload $GITHUB_WORKSPACE/build/Package/flameshot-${VERSION}-${{ matrix.config.pak_arch }}.zip)
echo "=====no operation for you can see link in the log console====="
+ - name: Artifact Upload
+ uses: actions/upload-artifact@v2
+ with:
+ name: Windows-artifact
+ path: ${{ github.workspace }}/build/Package/*
From 8aa137b35c18c0079189cd712c1a08ae09746060 Mon Sep 17 00:00:00 2001
From: Jeremy Borgman
Date: Thu, 24 Sep 2020 09:54:57 -0500
Subject: [PATCH 07/31] lowered hover delay to 0.5 s
---
src/config/CMakeLists.txt | 1 +
src/config/styleoverride.cpp | 16 ++++++++++++++++
src/config/styleoverride.h | 21 +++++++++++++++++++++
src/main.cpp | 2 ++
4 files changed, 40 insertions(+)
create mode 100644 src/config/styleoverride.cpp
create mode 100644 src/config/styleoverride.h
diff --git a/src/config/CMakeLists.txt b/src/config/CMakeLists.txt
index 72360542..a413e2ec 100644
--- a/src/config/CMakeLists.txt
+++ b/src/config/CMakeLists.txt
@@ -7,5 +7,6 @@ target_sources(
filenameeditor.cpp
geneneralconf.cpp
strftimechooserwidget.cpp
+ styleoverride.cpp
uicoloreditor.cpp
visualseditor.cpp)
diff --git a/src/config/styleoverride.cpp b/src/config/styleoverride.cpp
new file mode 100644
index 00000000..cf95dd9f
--- /dev/null
+++ b/src/config/styleoverride.cpp
@@ -0,0 +1,16 @@
+//
+// Created by jeremy on 9/24/20.
+//
+#include "styleoverride.h"
+
+int StyleOverride::styleHint(StyleHint hint,
+ const QStyleOption* option,
+ const QWidget* widget,
+ QStyleHintReturn* returnData) const
+{
+ if (hint == SH_ToolTip_WakeUpDelay) {
+ return 500;
+ } else {
+ return baseStyle()->styleHint(hint, option, widget, returnData);
+ }
+}
diff --git a/src/config/styleoverride.h b/src/config/styleoverride.h
new file mode 100644
index 00000000..19ff415c
--- /dev/null
+++ b/src/config/styleoverride.h
@@ -0,0 +1,21 @@
+//
+// Created by jeremy on 9/24/20.
+//
+
+#ifndef FLAMESHOT_STYLEOVERRIDE_H
+#define FLAMESHOT_STYLEOVERRIDE_H
+
+#include
+#include
+
+class StyleOverride : public QProxyStyle
+{
+ Q_OBJECT
+public:
+ int styleHint(StyleHint hint,
+ const QStyleOption* option = Q_NULLPTR,
+ const QWidget* widget = Q_NULLPTR,
+ QStyleHintReturn* returnData = Q_NULLPTR) const;
+};
+
+#endif // FLAMESHOT_STYLEOVERRIDE_H
diff --git a/src/main.cpp b/src/main.cpp
index 417f584d..e4a96d91 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -17,6 +17,7 @@
#include "singleapplication.h"
#include "src/cli/commandlineparser.h"
+#include "src/config/styleoverride.h"
#include "src/core/capturerequest.h"
#include "src/core/controller.h"
#include "src/utils/confighandler.h"
@@ -39,6 +40,7 @@
int main(int argc, char* argv[])
{
+ QApplication::setStyle(new StyleOverride);
// required for the button serialization
// TODO: change to QVector in v1.0
qRegisterMetaTypeStreamOperators>("QList");
From 3d266834f7b6566869be900e12c387fd232ffeb3 Mon Sep 17 00:00:00 2001
From: Jeremy Borgman
Date: Thu, 24 Sep 2020 13:24:36 -0500
Subject: [PATCH 08/31] Increased delay by 20% per feedback
---
src/config/styleoverride.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/config/styleoverride.cpp b/src/config/styleoverride.cpp
index cf95dd9f..340e4330 100644
--- a/src/config/styleoverride.cpp
+++ b/src/config/styleoverride.cpp
@@ -9,7 +9,7 @@ int StyleOverride::styleHint(StyleHint hint,
QStyleHintReturn* returnData) const
{
if (hint == SH_ToolTip_WakeUpDelay) {
- return 500;
+ return 600;
} else {
return baseStyle()->styleHint(hint, option, widget, returnData);
}
From 9df7c45d625fc457e34ae537e6778362b25aaacc Mon Sep 17 00:00:00 2001
From: pafri
Date: Sun, 27 Sep 2020 16:49:25 +0200
Subject: [PATCH 09/31] Update Internationalization_cs.ts
---
data/translations/Internationalization_cs.ts | 132 ++++++++++---------
1 file changed, 69 insertions(+), 63 deletions(-)
diff --git a/data/translations/Internationalization_cs.ts b/data/translations/Internationalization_cs.ts
index 48ec4099..4e2b0695 100644
--- a/data/translations/Internationalization_cs.ts
+++ b/data/translations/Internationalization_cs.ts
@@ -77,47 +77,47 @@
<b>Capture Mode</b>
-
+ <b>Režim zachytávání</b>
Rectangular Region
-
+ Pravouhlá oblast
Full Screen (All Monitors)
-
+ Celá obrazovka (všechny monitory)
No Delay
-
+ Bez zpoždění
second
-
+ sekunda
seconds
-
+ sekund
Take new screenshot
-
+ Zachytit nový snímek
Area:
-
+ Oblast:
Delay:
-
+ Zpoždění:
@@ -143,7 +143,7 @@ Stiskněte mezerník pro otevření postranního panelu.
Tool Settings
-
+ Nastavení nástrojů
@@ -151,12 +151,12 @@ Stiskněte mezerník pro otevření postranního panelu.
Circle Counter
-
+ Kruhové počítadlo
Add an autoincrementing counter bubble
-
+ Přidá bublinu s číslem (vždy zvýšeným o jednotku)
@@ -205,7 +205,7 @@ Stiskněte mezerník pro otevření postranního panelu.
&Open Launcher
-
+ &Otevřít spouštěč
@@ -215,7 +215,7 @@ Stiskněte mezerník pro otevření postranního panelu.
&About
-
+ O &programu
&Information
@@ -364,12 +364,12 @@ Stiskněte mezerník pro otevření postranního panelu.
Show the side panel button
-
+ Ukázat tlačítko na postranním panelu
Show the side panel toggle button in the capture mode.
-
+ V režimu zachytávání ukazovat tlačítko na postranním panelu.
@@ -415,52 +415,52 @@ Stiskněte mezerník pro otevření postranního panelu.
Close after capture
-
+ Zavřít po vytvoření snímku
Close after taking a screenshot
-
+ Zavřít po vytvoření snímku obrazovky
Copy URL after upload
-
+ Kopírovat adresu (URL) po nahrání
Copy URL and close window after upload
-
+ Po nahrání zkopírovat URL a zavřít okno
Save image after copy
-
+ Uložit obrázek po kopírování
Save image file after copying it
-
+ Uložit obrázek se souborem po jeho zkopírování
Save Path
-
+ Cesta pro ukládání
Change...
-
+ Změnit...
Choose a Folder
-
+ Vyberte složku
Unable to write to directory.
-
+ Nelze zapsat do adresáře.
@@ -535,7 +535,7 @@ Stiskněte mezerník pro otevření postranního panelu.
SPACEBAR
-
+ MEZERNÍK
@@ -693,12 +693,12 @@ Stiskněte mezerník pro otevření postranního panelu.
Pixelate
-
+ Rozčtverečkování
Set Pixelate as the paint tool
-
+ Nastaviť rozčtverečkování jako nástroj pro úpravy
@@ -717,7 +717,7 @@ Stiskněte mezerník pro otevření postranního panelu.
Capture saved to clipboard.
-
+ Snímek uložen do schránky.
@@ -742,102 +742,102 @@ Stiskněte mezerník pro otevření postranního panelu.
Powerful yet simple to use screenshot software.
-
+ Mocný, ale zároveň též jednoduchý program na zachytávání obrazovky.
See
-
+ Podívejte se
Capture the entire desktop.
-
+ Zachytit celou plochu.
Open the capture launcher.
-
+ Otevřít spouštěč zachytávání.
Start a manual capture in GUI mode.
-
+ Spustit ruční zachytávání v režimu uživatelského rozhraní.
Configure
-
+ Nastavit
Capture a single screen.
-
+ Zachytit jednu obrazovku.
Path where the capture will be saved
-
+ Cesta, kam bude snímek uložen
Save the capture to the clipboard
-
+ Uložit snímek do schránky
Delay time in milliseconds
-
+ Čas zpoždění v milisekundách
Set the filename pattern
-
+ Nastavit vzor pro pojmenování souborů
Enable or disable the trayicon
-
+ Povolit nebo zakázat ikonu v oznamovací oblasti panelu
Enable or disable run at startup
-
+ Povolit nebo zakázat spuštění při spuštění systému
Show the help message in the capture mode
-
+ Ukazovat nápovědu v režimu zachytávání
Define the main UI color
-
+ Nastavit barvu hlavního uživatelského rozhraní
Define the contrast UI color
-
+ Nastavit kontrastní barvu uživatelského rozhraní
Print raw PNG capture
-
+ Zobrazit nezpracovaný PNG snímek
Define the screen to capture
-
+ Nastavit monitor, který bude zachytáván
default: screen containing the cursor
-
+ výchozí: obrazovka, na které je ukazovátko myši
Screen number
-
+ Číslo obrazovky
@@ -848,27 +848,33 @@ Stiskněte mezerník pro otevření postranního panelu.
- #RRRRGGGGBBBB
- Named colors like 'blue' or 'red'
You may need to escape the '#' sign as in '\#FFF'
-
+ Neplatná barva, tento přepínač podporuje následující formáty:
+- #RGB (každá ze složek R, G a B je samostatným hexadecimálním číslem)
+- #RRGGBB
+- #RRRGGGBBB
+- #RRRRGGGGBBBB
+- anglické názvy barev jako 'blue' nebo 'red'
+Možná budete muset napsat před '#' opačné (obrácené) lomítko, tedy '\#FFF'
Invalid delay, it must be higher than 0
-
+ Neplatné zpoždění, musí být vyšší než 0
Invalid screen number, it must be non negative
-
+ Neplatné číslo obrazovky, může být jen kladné
Invalid path, it must be a real path in the system
-
+ Neplatná cesta, musí se jednat o skutečnou cestu v systému
Invalid value, it must be defined as 'true' or 'false'
-
+ Neplatná hodnota, musí být vymezenná jako 'pravda' nebo 'nepravda'
@@ -883,37 +889,37 @@ You may need to escape the '#' sign as in '\#FFF'
Options
-
+ Volby
Arguments
-
+ Argumenty
arguments
-
+ argumenty
Usage
-
+ Použití
options
-
+ volby
Per default runs Flameshot in the background and adds a tray icon for configuration.
-
+ Obvykle se Flameshot spouští na pozadí a přidává do oznamovací oblasti panelu ikonu, kterou je ho možné ovládat.
URL copied to clipboard.
- Adresa (URL) zkopírována do schránky.
+ Adresa (URL) zkopírována do schránky.
@@ -1220,7 +1226,7 @@ You may need to escape the '#' sign as in '\#FFF'
Close
-
+ Zavřít
From 991da44968c7cbbd476722fc191753f8878a05cd Mon Sep 17 00:00:00 2001
From: Jeremy Borgman
Date: Sat, 26 Sep 2020 19:15:36 -0500
Subject: [PATCH 10/31] Fixed snap on ubuntu 20.04 (needed unity7) -S
---
data/snap/local/launchers/README.md | 16 ---------------
data/snap/local/launchers/flameshot-launch | 24 ----------------------
data/snap/snapcraft.yaml | 5 +++--
3 files changed, 3 insertions(+), 42 deletions(-)
delete mode 100644 data/snap/local/launchers/README.md
delete mode 100644 data/snap/local/launchers/flameshot-launch
diff --git a/data/snap/local/launchers/README.md b/data/snap/local/launchers/README.md
deleted file mode 100644
index 3c070409..00000000
--- a/data/snap/local/launchers/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# /snap/local/launchers
-
-Here are the launchers, or wrapper programs to deal with some runtime-fixable
-problems for the snapped applications, like setting proper environmental
-variables in snap.
-
-In convention launchers are named _something_-launch, for dealing certain
-problem with _something_, and usually can be called in a stacked manner to
-consolidate their modifications.
-
-```yaml
-apps:
- _app_name_:
- command: foo-launch bar-launch _app_command_
-```
-
diff --git a/data/snap/local/launchers/flameshot-launch b/data/snap/local/launchers/flameshot-launch
deleted file mode 100644
index 3045d0e9..00000000
--- a/data/snap/local/launchers/flameshot-launch
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env bash
-
-# This is the maintainence launcher for the snap, make necessary runtime
-# environment changes to make the snap work here. You may also insert security
-# confinement/deprecation/obsoletion notice of the snap here.
-
-set \
- -o errexit \
- -o errtrace \
- -o nounset \
- -o pipefail
-
-# gtk-common-themes support
-export QT_QPA_PLATFORMTHEME=gtk3
-# Correct the TMPDIR path for Chromium Framework/Electron to
-# ensure libappindicator has readable resources
-export TMPDIR=$XDG_RUNTIME_DIR
-# Coerce XDG_CURRENT_DESKTOP to Unity so that App Indicators
-# are used and do not fall back to Notification Area applets
-# or disappear completely.
-export XDG_CURRENT_DESKTOP=Unity
-
-# Finally run the next part of the command chain
-exec "${@}"
diff --git a/data/snap/snapcraft.yaml b/data/snap/snapcraft.yaml
index d6583893..9c372cb1 100644
--- a/data/snap/snapcraft.yaml
+++ b/data/snap/snapcraft.yaml
@@ -20,14 +20,14 @@ architectures:
apps:
flameshot:
- adapter: full
- command: usr/bin/flameshot
+ command: flameshot
desktop: usr/share/applications/flameshot.desktop
extensions:
- kde-neon
environment:
DISABLE_WAYLAND: 1
XDG_DATA_DIRS: $SNAP/share:$XDG_DATA_DIRS
+ QT_QPA_PLATFORMTHEME: gtk3
slots: [dbus-flameshot]
plugs:
- kde-frameworks-5-plug
@@ -38,6 +38,7 @@ apps:
- opengl
- pulseaudio
- wayland
+ - unity7
- x11
parts:
From 8a962c25a1921434882d4afa7b3088727d4e16d1 Mon Sep 17 00:00:00 2001
From: 33kk
Date: Mon, 28 Sep 2020 15:43:03 +0300
Subject: [PATCH 11/31] Fix side panel button color
---
src/widgets/capture/capturewidget.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/widgets/capture/capturewidget.cpp b/src/widgets/capture/capturewidget.cpp
index 70083e10..b291bb2e 100644
--- a/src/widgets/capture/capturewidget.cpp
+++ b/src/widgets/capture/capturewidget.cpp
@@ -614,6 +614,7 @@ void CaptureWidget::initPanel()
auto* panelToggleButton =
new OrientablePushButton(tr("Tool Settings"), this);
makeChild(panelToggleButton);
+ panelToggleButton->setColor(m_uiColor);
panelToggleButton->setOrientation(
OrientablePushButton::VerticalBottomToTop);
panelToggleButton->move(panelRect.x(),
From f2101a32960f7cc88d29f58420b4e9ff02e9cb55 Mon Sep 17 00:00:00 2001
From: hexyoungs
Date: Sun, 27 Sep 2020 22:42:36 +0800
Subject: [PATCH 12/31] fix: #994
---
src/utils/colorutils.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/utils/colorutils.cpp b/src/utils/colorutils.cpp
index 8ba9f8ed..225c2e4b 100644
--- a/src/utils/colorutils.cpp
+++ b/src/utils/colorutils.cpp
@@ -28,7 +28,7 @@ bool ColorUtils::colorIsDark(const QColor& c)
if (getColorLuma(c) <= 0.60) {
isWhite = true;
}
- return isWhite;
+ return !isWhite;
}
QColor ColorUtils::contrastColor(const QColor& c)
From 01bc618dcc8371e943c51b511701936dcf726689 Mon Sep 17 00:00:00 2001
From: hexyoungs
Date: Mon, 28 Sep 2020 10:24:21 +0800
Subject: [PATCH 13/31] refactor: ColorUtils::colorIsDark
make it more clear
---
src/utils/colorutils.cpp | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/src/utils/colorutils.cpp b/src/utils/colorutils.cpp
index 225c2e4b..d246a422 100644
--- a/src/utils/colorutils.cpp
+++ b/src/utils/colorutils.cpp
@@ -24,11 +24,8 @@ inline qreal getColorLuma(const QColor& c)
bool ColorUtils::colorIsDark(const QColor& c)
{
- bool isWhite = false;
- if (getColorLuma(c) <= 0.60) {
- isWhite = true;
- }
- return !isWhite;
+ // when luma <= 0.5, we considor it as a dark color
+ return getColorLuma(c) <= 0.5;
}
QColor ColorUtils::contrastColor(const QColor& c)
From 37fa206df2229bd32388c4bc42422f1a639c7fcd Mon Sep 17 00:00:00 2001
From: hexyoungs
Date: Mon, 28 Sep 2020 10:25:00 +0800
Subject: [PATCH 14/31] fix: #994
fix wrong icon color caused by wrong mainColor
---
src/widgets/capture/capturetoolbutton.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/widgets/capture/capturetoolbutton.cpp b/src/widgets/capture/capturetoolbutton.cpp
index a102cc16..84a1c811 100644
--- a/src/widgets/capture/capturetoolbutton.cpp
+++ b/src/widgets/capture/capturetoolbutton.cpp
@@ -108,6 +108,7 @@ CaptureTool* CaptureToolButton::tool() const
void CaptureToolButton::setColor(const QColor& c)
{
+ m_mainColor = c;
CaptureButton::setColor(c);
updateIcon();
}
From ca57215172936f3f45f30a7b5cf8ea489e14e131 Mon Sep 17 00:00:00 2001
From: hexyoungs
Date: Mon, 28 Sep 2020 10:26:44 +0800
Subject: [PATCH 15/31] refactor: remove duplicated code in PR#982
---
src/tools/circlecount/circlecounttool.cpp | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/src/tools/circlecount/circlecounttool.cpp b/src/tools/circlecount/circlecounttool.cpp
index b923a601..29333dc6 100644
--- a/src/tools/circlecount/circlecounttool.cpp
+++ b/src/tools/circlecount/circlecounttool.cpp
@@ -16,6 +16,7 @@
// along with Flameshot. If not, see .
#include "circlecounttool.h"
+#include "colorutils.h"
#include
namespace {
#define PADDING_VALUE 2
@@ -90,11 +91,7 @@ void CircleCountTool::process(QPainter& painter,
textRect, Qt::AlignCenter, QString::number(m_count));
}
- // Calculate the perceptive luminance - human eye favors green color
- double luma = ((0.299 * m_color.red()) + (0.587 * m_color.green()) +
- (0.114 * m_color.blue())) /
- 255;
- if (luma <= 0.5) {
+ if (ColorUtils::colorIsDark(m_color)) {
painter.setPen(Qt::white);
} else {
painter.setPen(Qt::black);
From 931ac154e7bd712e7bfda86a7396b64ef9eacb91 Mon Sep 17 00:00:00 2001
From: Jeremy Borgman
Date: Sun, 27 Sep 2020 19:06:18 -0500
Subject: [PATCH 16/31] Fixed issue with ctrl s not saving text
---
src/widgets/capture/capturewidget.cpp | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/src/widgets/capture/capturewidget.cpp b/src/widgets/capture/capturewidget.cpp
index b291bb2e..b3c671f9 100644
--- a/src/widgets/capture/capturewidget.cpp
+++ b/src/widgets/capture/capturewidget.cpp
@@ -26,7 +26,6 @@
#include "capturewidget.h"
#include "src/core/controller.h"
#include "src/utils/colorutils.h"
-#include "src/utils/globalvalues.h"
#include "src/utils/screengrabber.h"
#include "src/utils/screenshotsaver.h"
#include "src/utils/systemnotification.h"
@@ -37,17 +36,14 @@
#include "src/widgets/orientablepushbutton.h"
#include "src/widgets/panel/sidepanelwidget.h"
#include
-#include
#include
#include
-#include
#include
#include
#include
#include
#include
#include
-
// CaptureWidget is the main component used to capture the screen. It contains
// an area of selection with its respective buttons.
@@ -1006,6 +1002,11 @@ void CaptureWidget::childLeave()
void CaptureWidget::copyScreenshot()
{
m_captureDone = true;
+ if (m_activeTool != nullptr) {
+ QPainter painter(&m_context.screenshot);
+ m_activeTool->process(painter, m_context.screenshot, true);
+ }
+
ScreenshotSaver().saveToClipboard(pixmap());
close();
}
@@ -1013,6 +1014,10 @@ void CaptureWidget::copyScreenshot()
void CaptureWidget::saveScreenshot()
{
m_captureDone = true;
+ if (m_activeTool != nullptr) {
+ QPainter painter(&m_context.screenshot);
+ m_activeTool->process(painter, m_context.screenshot, true);
+ }
hide();
if (m_context.savePath.isEmpty()) {
ScreenshotSaver().saveToFilesystemGUI(pixmap());
@@ -1047,4 +1052,4 @@ QRect CaptureWidget::extendedRect(QRect* r) const
r->top() * devicePixelRatio,
r->width() * devicePixelRatio,
r->height() * devicePixelRatio);
-}
+}
\ No newline at end of file
From ceb51a90bd70ba7a97819e2218fdd5bf9dec2e59 Mon Sep 17 00:00:00 2001
From: Jeremy Borgman
Date: Mon, 28 Sep 2020 09:20:57 -0500
Subject: [PATCH 17/31] Added releasing info for 0.8.3
---
CMakeLists.txt | 2 +-
data/debian/changelog | 4 ++--
data/rpm/flameshot.spec | 4 +++-
docs/appdata/flameshot.metainfo.xml | 1 +
4 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index acbdc2e5..daa26c5b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.13)
# This can be read from ${PROJECT_NAME} after project() is called
project(
flameshot
- VERSION 0.8.1
+ VERSION 0.8.3
LANGUAGES CXX)
set(PROJECT_NAME_CAPITALIZED "Flameshot")
diff --git a/data/debian/changelog b/data/debian/changelog
index e06b8f0e..be7f9bd4 100644
--- a/data/debian/changelog
+++ b/data/debian/changelog
@@ -1,5 +1,5 @@
-flameshot (0.8.1-1) unstable; urgency=medium
+flameshot (0.8.3-1) unstable; urgency=medium
* New stable release.
- -- Boyuan Yang Wed, 23 Sep 2020 20:39:29 -0400
+ -- Jeremy Borgman Mon, 30 Sep 2020 09:18:29 -0600
diff --git a/data/rpm/flameshot.spec b/data/rpm/flameshot.spec
index b7e619b3..7fa9439d 100644
--- a/data/rpm/flameshot.spec
+++ b/data/rpm/flameshot.spec
@@ -1,5 +1,5 @@
Name: flameshot
-Version: 0.8.1
+Version: 0.8.3
Release: 1%{?dist}
Summary: Powerful yet simple to use screenshot software
Summary(eu-ES): Potente pero simple de usar software de capturas
@@ -95,6 +95,8 @@ make %{?_smp_mflags}
%{_datadir}/icons/hicolor
%changelog
+* Mon Sep 19 2020 Jeremy Borgman - 0.8.3-1
+- Updated for flameshot 0.8.3
* Mon Sep 07 2020 Zetao Yang - 0.8.0-1
- Updated for flameshot 0.8.0
- More details, please see https://flameshot.js.org/#/changelog?id=v080
diff --git a/docs/appdata/flameshot.metainfo.xml b/docs/appdata/flameshot.metainfo.xml
index 56d9ef2a..3f413f17 100644
--- a/docs/appdata/flameshot.metainfo.xml
+++ b/docs/appdata/flameshot.metainfo.xml
@@ -5,6 +5,7 @@
GPL-3.0-or-later
Flameshot
+
From 938bf8815de7e4d6e5b9e04872cbf188e2a10c49 Mon Sep 17 00:00:00 2001
From: Tiago Rinaldi
Date: Mon, 28 Sep 2020 17:57:15 -0300
Subject: [PATCH 18/31] Add Brazilian portuguese translation
---
.../Internationalization_pt_BR.ts | 132 +++++++++---------
1 file changed, 69 insertions(+), 63 deletions(-)
diff --git a/data/translations/Internationalization_pt_BR.ts b/data/translations/Internationalization_pt_BR.ts
index 20b46783..0704240d 100644
--- a/data/translations/Internationalization_pt_BR.ts
+++ b/data/translations/Internationalization_pt_BR.ts
@@ -77,47 +77,47 @@
<b>Capture Mode</b>
-
+ <b>Modo Captura</b>
Rectangular Region
-
+ Região Retangular
Full Screen (All Monitors)
-
+ Tela Inteira (Todos os Monitores)
No Delay
-
+ Sem atraso
second
-
+ segundo
seconds
-
+ segundos
Take new screenshot
-
+ Tirar uma nova screenshot
Area:
-
+ Area:
Delay:
-
+ Atraso:
@@ -143,7 +143,7 @@ Pressione espaço abrir o painel lateral.
Tool Settings
-
+ Configurações da ferramenta
@@ -151,12 +151,12 @@ Pressione espaço abrir o painel lateral.
Circle Counter
-
+ Contorno do círculo
Add an autoincrementing counter bubble
-
+ Adicionar uma bolha de incremento automático
@@ -205,7 +205,7 @@ Pressione espaço abrir o painel lateral.
&Open Launcher
-
+ &Abrir carregador
@@ -215,7 +215,7 @@ Pressione espaço abrir o painel lateral.
&About
-
+ &Sobre
&Information
@@ -364,12 +364,12 @@ Pressione espaço abrir o painel lateral.
Show the side panel button
-
+ Mostrar botão no painel lateral
Show the side panel toggle button in the capture mode.
-
+ Mostrar altenador do painel lateral.
@@ -415,52 +415,52 @@ Pressione espaço abrir o painel lateral.
Close after capture
-
+ Fechar após captura
Close after taking a screenshot
-
+ Fechar após tirar uma screenshot
Copy URL after upload
-
+ Copiar URL após upload
Copy URL and close window after upload
-
+ Copiar URL e fechar janela após upload
Save image after copy
-
+ Salvar imagem após copiar
Save image file after copying it
-
+ Salvar imagem após copiar
Save Path
-
+ Salvar Caminho
Change...
-
+ Alterar...
Choose a Folder
-
+ Selecione uma pasta
Unable to write to directory.
-
+ Não foi possível escrever no diretório.
@@ -535,7 +535,7 @@ Pressione espaço abrir o painel lateral.
SPACEBAR
-
+ Barra de Espaço
@@ -693,12 +693,12 @@ Pressione espaço abrir o painel lateral.
Pixelate
-
+ Pixelar
Set Pixelate as the paint tool
-
+ Usar Pixelar na ferramenta de pintura
@@ -717,7 +717,7 @@ Pressione espaço abrir o painel lateral.
Capture saved to clipboard.
-
+ Capturar Salvar na Área de Trabalho.
@@ -742,102 +742,102 @@ Pressione espaço abrir o painel lateral.
Powerful yet simple to use screenshot software.
-
+ Poderoso, porém simples de utilizar software de screenshot.
See
-
+ Veja
Capture the entire desktop.
-
+ Capturar toda tela.
Open the capture launcher.
-
+ Abrir a ferramente de captura.
Start a manual capture in GUI mode.
-
+ Iniciar uma captura manual no modo GUI.
Configure
-
+ Configurar
Capture a single screen.
-
+ Capturar apenas uma tela.
Path where the capture will be saved
-
+ Caminho para salvar a captura
Save the capture to the clipboard
-
+ Salvar a captura na Área de Transferência
Delay time in milliseconds
-
+ Tempo do atraso em milissegundos
Set the filename pattern
-
+ Salvar o padrão do nome do arquivo
Enable or disable the trayicon
-
+ Ativar ou desativar o ícone de bandeja
Enable or disable run at startup
-
+ Ativar ou desativar rodar na inicialização
Show the help message in the capture mode
-
+ Mostrar a mensagem de ajuda no modo captura
Define the main UI color
-
+ Definir a cor principal
Define the contrast UI color
-
+ Definir o contrasto da cor
Print raw PNG capture
-
+ Mostrar captura PNG "crua"
Define the screen to capture
-
+ Definir a tela para captura
default: screen containing the cursor
-
+ padrão: tela contendo o cursor
Screen number
-
+ Número da tela
@@ -848,27 +848,33 @@ Pressione espaço abrir o painel lateral.
- #RRRRGGGGBBBB
- Named colors like 'blue' or 'red'
You may need to escape the '#' sign as in '\#FFF'
-
+ Cor inválida, formatos suportados:
+- #RGB (sendo R, G, e B simbolos hexadecimal simples)
+- #RRGGBB
+- #RRRGGGBBB
+- #RRRRGGGGBBBB
+- Nome de cores como 'azul' ou 'vermelho'
+Você pode ter que invalidar o sinal '#', por exemplo '\#FFF'
Invalid delay, it must be higher than 0
-
+ Atraso inválido, deve ser maior que 0
Invalid screen number, it must be non negative
-
+ Número de tela inválido, deve ser maior que zero
Invalid path, it must be a real path in the system
-
+ Caminho inválido, deve ser um caminho real no sistema
Invalid value, it must be defined as 'true' or 'false'
-
+ Valor inválido, deve ser definido como 'verdadeiro' ou 'falso'
@@ -883,37 +889,37 @@ You may need to escape the '#' sign as in '\#FFF'
Options
-
+ Opções
Arguments
-
+ Argumentos
arguments
-
+ argumentos
Usage
-
+ Uso
options
-
+ opções
Per default runs Flameshot in the background and adds a tray icon for configuration.
-
+ Por padrão roda Flameshot no background e adiciona um ícone na bandeija para configuração.
URL copied to clipboard.
- URL copiada para a área de transferência.
+ URL copiada para a área de transferência.
@@ -1220,7 +1226,7 @@ You may need to escape the '#' sign as in '\#FFF'
Close
-
+ Fechar
From d349cb5f9ddd972c7cbc10db9ff7bb5cc6094895 Mon Sep 17 00:00:00 2001
From: Martin-Eckleben <1571683+Martin-Eckleben@users.noreply.github.com>
Date: Mon, 28 Sep 2020 21:59:23 +0200
Subject: [PATCH 19/31] black and white plus and minus icons
---
data/img/material/black/minus.png | Bin 0 -> 181 bytes
data/img/material/black/minus.svg | 57 ++++++++++++++++++++++++++++++
data/img/material/black/plus.png | Bin 0 -> 243 bytes
data/img/material/black/plus.svg | 57 ++++++++++++++++++++++++++++++
data/img/material/white/minus.png | Bin 0 -> 192 bytes
data/img/material/white/minus.svg | 57 ++++++++++++++++++++++++++++++
data/img/material/white/plus.png | Bin 0 -> 255 bytes
data/img/material/white/plus.svg | 56 +++++++++++++++++++++++++++++
8 files changed, 227 insertions(+)
create mode 100644 data/img/material/black/minus.png
create mode 100644 data/img/material/black/minus.svg
create mode 100644 data/img/material/black/plus.png
create mode 100644 data/img/material/black/plus.svg
create mode 100644 data/img/material/white/minus.png
create mode 100644 data/img/material/white/minus.svg
create mode 100644 data/img/material/white/plus.png
create mode 100644 data/img/material/white/plus.svg
diff --git a/data/img/material/black/minus.png b/data/img/material/black/minus.png
new file mode 100644
index 0000000000000000000000000000000000000000..a1866388417713b53ec187750511082f858f8afe
GIT binary patch
literal 181
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9F5he4R}c>anMprB-l
zYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&Kt)cTE{-7{oyiFjtcw#wcxn%H
z9GQ3az<~q)s>Sw31_nzOaqmk>NciEe`bQ{DLwIUTkMIVCjpl{{<{fSaH6&OM109j;
WC0^B{BB={Bjlt8^&t;ucLK6U)zBX_G
literal 0
HcmV?d00001
diff --git a/data/img/material/black/minus.svg b/data/img/material/black/minus.svg
new file mode 100644
index 00000000..65418b43
--- /dev/null
+++ b/data/img/material/black/minus.svg
@@ -0,0 +1,57 @@
+
+
diff --git a/data/img/material/black/plus.png b/data/img/material/black/plus.png
new file mode 100644
index 0000000000000000000000000000000000000000..69bb5420317a0e055a47e6bdcff2c3c78cee7415
GIT binary patch
literal 243
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9F5he4R}c>anMprB-l
zYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&Kt&CnE{-7{oyiFjo(X2m%!jQt
z=J~Es6BE*Tkd}}j;F2WFI>Tc_gN{MgL5>X#f}OUr8yg$t`=g54*w`#JehUJ1c-myy
z8yOfZS;W0BB_ZL5zv>^MG>x;(9G2?&Nel7>Ch|-(RA@?&+&HVP&PaA^!UJ7}rEb4Z
i9XRkouG7|uf#FE0$~UvQ@9lwZVeoYIb6Mw<&;$Su7*2}-
literal 0
HcmV?d00001
diff --git a/data/img/material/black/plus.svg b/data/img/material/black/plus.svg
new file mode 100644
index 00000000..98a97af7
--- /dev/null
+++ b/data/img/material/black/plus.svg
@@ -0,0 +1,57 @@
+
+
diff --git a/data/img/material/white/minus.png b/data/img/material/white/minus.png
new file mode 100644
index 0000000000000000000000000000000000000000..1ddb09ee7947b271e53252f565ea7fdd91467686
GIT binary patch
literal 192
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9F5he4R}c>anMprB-l
zYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&Kt;ZuE{-7{oo_E}?
k-y54Jp>Oon<%oLB%eUOSH6IJ#0UFHU>FVdQ&MBb@0Idr{h5!Hn
literal 0
HcmV?d00001
diff --git a/data/img/material/white/minus.svg b/data/img/material/white/minus.svg
new file mode 100644
index 00000000..e02d3235
--- /dev/null
+++ b/data/img/material/white/minus.svg
@@ -0,0 +1,57 @@
+
+
diff --git a/data/img/material/white/plus.png b/data/img/material/white/plus.png
new file mode 100644
index 0000000000000000000000000000000000000000..8195e8f0bb91033feaa9c7e7a21ce8162c144440
GIT binary patch
literal 255
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9F5he4R}c>anMprB-l
zYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&Kt(;CE{-7{oyiFjh7bP#|GycC
z|MPXF3$N~PWwG8NDIvi!@rDbdnvjkHcTbc7lTJd5;eyQB^8Hc8Y;0_n8ovdZnGbu~
zWZ4@T87*5B{b5pLqhn9b@
+
From ecfaa2359b763f35da01cc3b3c81ba92cb30aada Mon Sep 17 00:00:00 2001
From: Jeremy Borgman
Date: Mon, 28 Sep 2020 19:20:33 -0500
Subject: [PATCH 20/31] Fixed readme
---
README.md | 6 ++++--
data/img/preview/animatedUsage.gif | Bin 331912 -> 456050 bytes
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index f26fdaaf..c5b0898c 100644
--- a/README.md
+++ b/README.md
@@ -28,6 +28,10 @@
+
+
+
+
@@ -60,10 +64,8 @@
- [Arch](#arch)
- [Build](#build)
- [Install](#install)
-- [Packaging](#packaging)
- [License](#license)
- [Contribute](#contribute)
-- [Donations](#donations)
- [Acknowledgment](#acknowledgment)
## Features
diff --git a/data/img/preview/animatedUsage.gif b/data/img/preview/animatedUsage.gif
index a9b97955a183cc843457b56fb26f01b03f9e2a3c..16db9742d7d2f90eb48393549a17c2abd4f77a39 100644
GIT binary patch
literal 456050
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