+
+
+
+
+
+
+
+ {% if site.google_analytics %}
+
+ {% endif %}
+
+
diff --git a/docs/assets/css/style.scss b/docs/assets/css/style.scss
new file mode 100644
index 0000000..55a2807
--- /dev/null
+++ b/docs/assets/css/style.scss
@@ -0,0 +1,13 @@
+---
+---
+
+@import "{{ site.theme }}";
+
+/* stupid css killed the cat */
+header ul {
+ background: none;
+ border-radius: 0px;
+ border: 0px solid #e0e0e0;
+
+
+}
diff --git a/docs/README.md b/docs/index.md
similarity index 61%
rename from docs/README.md
rename to docs/index.md
index 2980699..c6c60f6 100644
--- a/docs/README.md
+++ b/docs/index.md
@@ -1,6 +1,10 @@
+---
+layout: layout
+---
+
+
# **KShare**
## The free open source and cross platform screen sharing software
-###### Inspired by [ShareX](https://getsharex.com)
KShare is a screenshotting utility built using Qt and written in C++.
It has many features, including:
@@ -14,31 +18,36 @@ It has many features, including:
* Automatic upload/clipboard copying,
* Hotkeys,
* Color picker, and last but not least,
-* Custom upload destinations
+* Custom upload destinations,
+* Upload from clipboard,
+* Upload History,
+* Crossplatform,
+* Windows 10 Darkmode
## Enough talking, show us how it looks
-The main window is rather simple, with only a log, and a button in it:
-![image1](http://i.imgur.com/QOebwEM.png)
+The main window is rather simple, with only a log, and a button in it:
+![image1](https://i.imgur.com/Tnrj90b.png)
-The settings have quite a bit more going on:
-![image2](http://i.imgur.com/kZzQzGr.png)
+The settings have quite a bit more going on:
+![image2](https://i.imgur.com/GFN2jCU.png)
-The area selection editor is simple:
-![image3](http://i.imgur.com/kyWZk3p.jpg)
+The area selection editor is simple:
+![image3](https://i.imgur.com/Cbi8YsL.png)
-And the color picker is the simplest thing ever:
+And the color picker is the simplest thing ever:
![image4](http://i.imgur.com/VIeGbdQ.jpg)
-The way you select the area to record is by resizing this simple widget:
+The way you select the area to record is by resizing this simple widget:
![image5](http://i.imgur.com/0iXFHnm.png)
-And when you start recording there is a simple preview shown:
+And when you start recording there is a simple preview shown:
![image6](http://i.imgur.com/6fu33TR.png)
## Download
Currently, the only good download I provide is for Arch Linux and Ubuntu 17.04
The Arch download is on the AUR as `kshare` and `kshare-git`,
-and the Ubuntu build is a .deb found on my CI: [kshare.deb](https://nativeci.arsenarsen.com/job/KShare/73/artifact/packages/simpleName.deb)
+The OS X and Debian/Ubuntu builds can be found here: [CI](https://nativeci.arsenarsen.com/job/KShare%20(master\))
+There is a windows build on [AppVeyor]()
## Wait.. how do I actually use this?
diff --git a/docs/wiki/Basic-usage.md b/docs/wiki/Basic-usage.md
new file mode 100644
index 0000000..165cc17
--- /dev/null
+++ b/docs/wiki/Basic-usage.md
@@ -0,0 +1,42 @@
+---
+title: Basic Usage
+categories: [wiki]
+layout: wikipage
+---
+# Basic usage
+When you start the app (with no arguments, discussed later) a window is popped up, and a tray icon is made.
+
+## The window
+![](http://i.imgur.com/QOebwEM.png)
+
+The main window is a log window with a settings button.
+
+The menu bar has a `File` menu. It has two options, `Quit`, which exits ~~no need to press it :^)~~, and `About`, which contains licensing information:
+![](http://i.imgur.com/4fVJb1w.png)
+
+There is a second menu, namely `Screenshot`. It has two options, area, and fullscreen capture. See below.
+
+The third, `Utility`, menu has the color picker in it.
+
+The fourth and final menu, `Recording`, has a start and stop recording button.
+
+## The tray
+![](http://i.imgur.com/quVDzRN.png)
+
+The tray consists of a small, but nice, icon made by @BriannaFoxwell. Upon right clicking it you get the context menu shown above. The menu is rather simple, containing basic controls, and screenshotting options.
+These options will be explained below.
+
+## Screenshotting options
+### Area capture
+Area capture takes a snapshot of the screen, and shows you a fullscreen editor for you to select a region in. This editor is explained in a section below.
+
+### Fullscreen capture
+Fullscreen capture takes a snapshot of the entire screen and skips the editor part. Straight to the destination (explained later as well).
+
+### Active window capture
+Takes the active window and uploads it straight to your destination of choice
+
+## Crop Editor
+Crop Editor is a window you can use to select the area of the screen to upload. It consists of a grey overlay and a re-sizable rectangle. The rectangle is resized by holding the mouse buttons. When you let go of the button, a new selection will start replacing the old one. On the first press the same thing happens.
+Press `Escape` to cancel, and `Return`, or `Enter` to submit.
+Oh. And you can draw with the bar that appears on the top.
diff --git a/docs/wiki/Destinations.md b/docs/wiki/Destinations.md
new file mode 100644
index 0000000..b0da1ff
--- /dev/null
+++ b/docs/wiki/Destinations.md
@@ -0,0 +1,45 @@
+---
+title: Destinations
+categories: [wiki]
+layout: wikipage
+---
+# Destinations
+Destinations determine where your image goes
+
+There is a set of default uploaders, two, to be exact.
+## Default uploaders:
+### imgur
+Uploads your image to imgur.
+### clipboard
+Copies your image to clipboard.
+
+## Custom uploaders
+Placed into `CONFIG PATH/KShare/uploaders`
+Eg: `$HOME/.config/KShare/uploaders`
+All uploaders have to be `.uploader` files!
+Custom uploaders can be added, and are made with JSON, and follow this template:
+```js
+{
+ "name": "", // String, required
+ "desc": "", // String, optional
+ "method": "", // String, default: "POST", for now, just POST. Request more if you need them
+ "target": "", // URL, required
+ "format": "", // String, default: "json", can be `x-www-form-urlencoded` or `json` or `multipart-form-data`. Setting to `PLAIN` will make the body ignored and only the image sent.
+ "base64": false, // Optional, makes the data base64
+ "body": {}, // A JSON object, where one of the nodes can be a string in the format `/ANYTHING/`. In `ANYTHING`, `%contenttype` is replaced with the image type and `%imagedata` is replaced with the image encoded with `imageformat`. Unless you use multipart, see below
+ "return": "" // Return pathspec. `|` copies the entire body, `.path.to.node` copies the value of the node. The dot IS IMPORTANT. Without it, nothing happens. If one of the nodes is not a string, the string is copied, if one is an object, recursion continues, if one is null, nothing is copied, otherwise the node is JSON stringified. Only supports JSON for now.
+}
+```
+Note that QJson does not support comments.
+### Multipart
+Multipart is obviously made out of multiple parts. The way you define a multipart body is:
+```js
+[
+ {
+ "__HeaderName": "HeaderValue", // No limit here. Must start with __, which is removed later.
+ "body": { /* same way you define it for anything json */ }, // Can be string. Strings matching `/.../` are processed same way as in a json field.
+ "name": "files[]" // Info to add to Content-Disposition (eg part name, filename, ...)
+ }
+]
+```
+This would go in the `body` field of the above JSON.
diff --git a/docs/wiki/Encoder-settings.md b/docs/wiki/Encoder-settings.md
new file mode 100644
index 0000000..9cb32db
--- /dev/null
+++ b/docs/wiki/Encoder-settings.md
@@ -0,0 +1,29 @@
+---
+title: Encoder Settings
+categories: [wiki]
+layout: wikipage
+---
+# Encoder settings
+The encoders used can be customized to a high degree. Every encoder besides GIF has some settings.
+![](http://i.imgur.com/O8nfeos.png)
+
+## Image encoder settings
+The only option here is quality, by default it uses the default for the format you use. You can change it by unticking format default. [More info](http://doc.qt.io/qt-5/qpixmap.html#save)
+
+## Video encoder settings
+The common settings are bitrate and GOP size.
+
+GOP Size is the size of a group of pictures.
+Bitrate is the target bitrate.
+
+### h264/h265
+The H.26[45] MP4 codec has a few presets to choose. The recommended is to choose the slowest one you can cope with.
+I recommend medium.
+
+CRF is the constant rate factor of this video stream, and again I recommend leaving the default value, `23`.
+
+### VP9
+VP9 is the WebP codec. Only option it has is lossless encoding, and you want it off, trust me.
+
+### GIF
+GIF has no options. It's terrible whatever you do to it.
diff --git a/docs/wiki/Hotkeys.md b/docs/wiki/Hotkeys.md
new file mode 100644
index 0000000..4dddc94
--- /dev/null
+++ b/docs/wiki/Hotkeys.md
@@ -0,0 +1,23 @@
+---
+title: Hotkeys
+categories: [wiki]
+layout: wikipage
+---
+# Hotkeys
+Hotkeys are configured in the settings UI.
+![](http://i.imgur.com/esYoMWo.png)
+Currently available hotkeys are:
+## Fullscreen image
+This bind lets you take a fullscreen image and upload it instantly.
+## Area image
+Equivalent to `Take area shot` and `Screenshot -> Area`. Takes a snapshot and opens the crop editor.
+## Active window
+Equivalent to `Active window` and `Screenshot -> Active window`. Takes a snapshot of the active window and sends it.
+## Color picker
+Opens the color picker
+## Recording start/stop
+Starts and stops recording
+
+## Editing hotkeys
+All binds can be modified using by double clicking the hotkey name.
+You can either type the hotkey in or press record and press the key combination you want on your keyboard
diff --git a/docs/wiki/Settings.md b/docs/wiki/Settings.md
new file mode 100644
index 0000000..db7d683
--- /dev/null
+++ b/docs/wiki/Settings.md
@@ -0,0 +1,23 @@
+---
+title: Settings
+categories: [wiki]
+layout: wikipage
+---
+# Settings
+## Destination
+![](http://i.imgur.com/540REFK.png)
+Select the active destination. Adding more is possible and explained it Custom Uploaders
+**Default:** `imgur`
+## Filename scheme
+![](http://i.imgur.com/RHHEO3K.png)
+Used to generate filenames. Extensions are placed in place of `%ext`. `%(DATE FORMAT)date` can be used to replace the date format with a format as specified by [this documentation page](http://doc.qt.io/qt-5/qdatetime.html#toString)
+**Default:** `Screenshot %(yyyy-MM-dd HH-mm-ss)date.%ext`
+## Delay before taking a screenshot
+![](http://i.imgur.com/j0D7OqI.png)
+Applies only to the buttons in menus. Hotkeys do not follow this rule. In seconds. Mostly used to let animations fade.
+Min: `0.00`
+Max: `99.99`
+**Default:** `0.25`
+
+## Hotkeys
+**Explained on a separate page.**
diff --git a/docs/wiki/Tools.md b/docs/wiki/Tools.md
new file mode 100644
index 0000000..b8b1ac3
--- /dev/null
+++ b/docs/wiki/Tools.md
@@ -0,0 +1,34 @@
+---
+title: Tools
+categories: [wiki]
+layout: wikipage
+---
+# Drawing
+![](http://i.imgur.com/5nWhpqw.png)
+On-screen drawing is pretty simple. Right click in the crop editor to show a pen selection tool. When you click on a pen it will stay selected until you press `Reset`.
+
+You can move drawings around by Ctrl+Dragging them
+
+## Available pens:
+### Free draw (pen icon)
+Makes a path where your mouse went.
+### Blur (badly made blurred rectangle icon)
+Allows you to set a rectangle to blur out.
+### Straight line
+A line between where you start and end dragging
+### Text
+Asks you to insert some text.
+**WARNING:** Avoid pressing esc
+### Rectangle
+Drag to draw a rectangle
+### Ellipse
+Drag to draw an ellipse
+### Arrow
+Draws an arrow from start to end of your drag
+### Eraser[](https://www.youtube.com/watch?v=OjGrcJ4lZCc)
+Removes all items you drag your mouse over
+
+### Clear all drawings
+Removes all drawings
+### Reset
+Allows you to choose a region to cut for the final result.
diff --git a/docs/wiki/index.md b/docs/wiki/index.md
new file mode 100644
index 0000000..384d708
--- /dev/null
+++ b/docs/wiki/index.md
@@ -0,0 +1,11 @@
+---
+title: Index
+categories: [wiki]
+layout: wikipage
+---
+
+# Welcome to the KShare wiki!
+The cross platform screenshotting utility
+
+# Usage
+See the [`Basic usage`](/wiki/Basic-Usage.html) page
diff --git a/examples/php_filehost.uploader b/examples/php_filehost.uploader
new file mode 100644
index 0000000..a461d90
--- /dev/null
+++ b/examples/php_filehost.uploader
@@ -0,0 +1,15 @@
+{
+ "name": "Gurkengewuerz Share",
+ "target": "https://share.example.com/index.php?token=XXXXXXXXXXXXXXXXX",
+ "format": "multipart-form-data",
+ "body": [
+ {
+ "__Content-Type": "/%contenttype/",
+ "filename": "/%filename/",
+ "name": "file",
+ "body": "/%imagedata/"
+ }
+ ],
+ "return": "|"
+}
+
diff --git a/examples/pictshare.uploader b/examples/pictshare.uploader
new file mode 100644
index 0000000..85fdb07
--- /dev/null
+++ b/examples/pictshare.uploader
@@ -0,0 +1,11 @@
+{
+ "name": "PictShare",
+ "desc" : "Example",
+ "target": ".../backend.php",
+ "base64": true,
+ "format": "x-www-form-urlencoded",
+ "body": {
+ "base64": "/data:%contenttype;base64,%imagedata/"
+ },
+ "return": ".url"
+}
diff --git a/examples/pomf.uploader b/examples/pomf.uploader
new file mode 100644
index 0000000..5a46025
--- /dev/null
+++ b/examples/pomf.uploader
@@ -0,0 +1,15 @@
+{
+ "name": "Uploader name",
+ "target": "POMF endpoint",
+ "format": "multipart-form-data",
+ "body": [
+ {
+ "__Content-Type": "/%contenttype/",
+ "filename": "/image.%format/",
+ "name": "files[]",
+ "body": "/%imagedata/"
+ }
+ ],
+ "return": ".files.0.url",
+ "return_prepend": "Add only if the host does not fill out url"
+}
diff --git a/formats.hpp b/formats.hpp
deleted file mode 100644
index 8d46706..0000000
--- a/formats.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef FORMATS_HPP
-#define FORMATS_HPP
-
-#include