summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nigui.nimble9
-rwxr-xr-xreadme.md44
-rwxr-xr-xsrc/msgbox.nim (renamed from src/common/msgbox.nim)0
-rwxr-xr-xsrc/nigui.nim (renamed from src/common/nigui.nim)18
-rwxr-xr-xsrc/nigui/private/gtk3/gtk3.nim (renamed from src/gtk3/gtk3.nim)0
-rwxr-xr-xsrc/nigui/private/gtk3/platform_impl.nim (renamed from src/gtk3/nigui_platform_impl.nim)0
-rwxr-xr-xsrc/nigui/private/gtk3/platform_types1.nim (renamed from src/gtk3/nigui_platform_types1.nim)0
-rwxr-xr-xsrc/nigui/private/gtk3/platform_types2.nim (renamed from src/gtk3/nigui_platform_types2.nim)0
-rwxr-xr-xsrc/nigui/private/windows/platform_impl.nim (renamed from src/windows/nigui_platform_impl.nim)0
-rwxr-xr-xsrc/nigui/private/windows/platform_types1.nim (renamed from src/windows/nigui_platform_types1.nim)0
-rwxr-xr-xsrc/nigui/private/windows/platform_types2.nim (renamed from src/windows/nigui_platform_types2.nim)0
-rwxr-xr-xsrc/nigui/private/windows/windows.nim (renamed from src/windows/windows.nim)0
12 files changed, 40 insertions, 31 deletions
diff --git a/nigui.nimble b/nigui.nimble
new file mode 100644
index 0000000..4d4f666
--- /dev/null
+++ b/nigui.nimble
@@ -0,0 +1,9 @@
+# Package
+
+version = "0.1.0"
+author = "Simon Krauter"
+description = "Cross-platform, desktop GUI toolkit using native widgets."
+license = "MIT"
+
+# Deps
+requires "nim >= 0.17.0"
diff --git a/readme.md b/readme.md
index 378212a..4b7938c 100755
--- a/readme.md
+++ b/readme.md
@@ -5,9 +5,9 @@ NiGui is a cross-platform, desktop GUI toolkit written in [Nim](https://nim-lang
NiGui provides an easy way to develop applications in Nim with a full-featured graphical user interface.
Target platforms:
-* Linux over GTK+ 3
* Windows (Win32 API)
-* macOS (planned)
+* Linux over GTK+ 3
+* macOS over GTK+ 3 (native support planned)
Design goals:
* **Full abstraction**<br>
@@ -44,28 +44,24 @@ Planned:
Getting started
---------------
-Recommended steps to use NiGui:
-1. Clone the NiGui repository
-2. Add the follwing two include paths to your Nim configuration:
-
-For Linux/Gtk:
-```
---path:"<path_to_nigui>/src/common"
---path:"<path_to_nigui>/src/gtk3"
-```
-
-For Windows:
-```
---path:"<path_to_nigui>/src/common"
---path:"<path_to_nigui>/src/windows"
-```
-
-To disable the command line window under Windows, add the follwing line to your Nim configuration:
-```
---app:gui
-```
-
-3. Try the included example programs
+
+### How to install NiGui manually
+
+1. Clone the NiGui repository with Git or download the source code
+2. Add this line to your Nim configuration: `--path:"<path_to_nigui>/src"`
+
+### How to install NiGui with Nimble
+
+Run the Nimble install command: `$ nimble install nigui"`
+
+### Additional configuration
+
+* To disable the command line window under Windows, add this line to your Nim configuration: `--app:gui`
+* To compile a Windows binary which uses Gtk, add this line to your Nim configuration: `-d:forceGtk`
+
+### How to verify the installation
+
+Compile and run one of the included example programs.
Show cases
----------
diff --git a/src/common/msgbox.nim b/src/msgbox.nim
index 5071dfb..5071dfb 100755
--- a/src/common/msgbox.nim
+++ b/src/msgbox.nim
diff --git a/src/common/nigui.nim b/src/nigui.nim
index c81c02d..4ecdebd 100755
--- a/src/common/nigui.nim
+++ b/src/nigui.nim
@@ -2,9 +2,11 @@
# This file contains all common code except extra widgets.
# All public procedures are declared here.
-# Public types are declared here or in the platform-specific file "nigui_platform_types".
-# The platform-specific files "nigui_platform_types" and "nigui_platform_procs" will be
-# included to this file.
+# Platform-specific code will added by "include".
+
+# Templates for "include":
+template useWindows(): bool = defined(windows) and not defined(forceGtk)
+template useGtk(): bool = not useWindows()
# ========================================================================================
#
@@ -258,9 +260,9 @@ type
data*: pointer
TimerProc* = proc(event: TimerEvent)
-
# Platform-specific extension of Window and Control:
-include nigui_platform_types1
+when useWindows(): include "nigui/private/windows/platform_types1"
+when useGtk(): include "nigui/private/gtk3/platform_types1"
# ----------------------------------------------------------------------------------------
@@ -290,7 +292,8 @@ type
# Platform-specific extension of basic controls:
-include nigui_platform_types2
+when useWindows(): include "nigui/private/windows/platform_types2"
+when useGtk(): include "nigui/private/gtk3/platform_types2"
# ----------------------------------------------------------------------------------------
@@ -2247,4 +2250,5 @@ method `wrap=`(textArea: TextArea, wrap: bool) =
# Platform-specific implementation
# ----------------------------------------------------------------------------------------
-include nigui_platform_impl
+when useWindows(): include "nigui/private/windows/platform_impl"
+when useGtk(): include "nigui/private/gtk3/platform_impl"
diff --git a/src/gtk3/gtk3.nim b/src/nigui/private/gtk3/gtk3.nim
index f2c7eba..f2c7eba 100755
--- a/src/gtk3/gtk3.nim
+++ b/src/nigui/private/gtk3/gtk3.nim
diff --git a/src/gtk3/nigui_platform_impl.nim b/src/nigui/private/gtk3/platform_impl.nim
index fbb7b45..fbb7b45 100755
--- a/src/gtk3/nigui_platform_impl.nim
+++ b/src/nigui/private/gtk3/platform_impl.nim
diff --git a/src/gtk3/nigui_platform_types1.nim b/src/nigui/private/gtk3/platform_types1.nim
index d0178cd..d0178cd 100755
--- a/src/gtk3/nigui_platform_types1.nim
+++ b/src/nigui/private/gtk3/platform_types1.nim
diff --git a/src/gtk3/nigui_platform_types2.nim b/src/nigui/private/gtk3/platform_types2.nim
index c176ffc..c176ffc 100755
--- a/src/gtk3/nigui_platform_types2.nim
+++ b/src/nigui/private/gtk3/platform_types2.nim
diff --git a/src/windows/nigui_platform_impl.nim b/src/nigui/private/windows/platform_impl.nim
index c4c3010..c4c3010 100755
--- a/src/windows/nigui_platform_impl.nim
+++ b/src/nigui/private/windows/platform_impl.nim
diff --git a/src/windows/nigui_platform_types1.nim b/src/nigui/private/windows/platform_types1.nim
index ddf36cf..ddf36cf 100755
--- a/src/windows/nigui_platform_types1.nim
+++ b/src/nigui/private/windows/platform_types1.nim
diff --git a/src/windows/nigui_platform_types2.nim b/src/nigui/private/windows/platform_types2.nim
index bbe7caf..bbe7caf 100755
--- a/src/windows/nigui_platform_types2.nim
+++ b/src/nigui/private/windows/platform_types2.nim
diff --git a/src/windows/windows.nim b/src/nigui/private/windows/windows.nim
index 543985a..543985a 100755
--- a/src/windows/windows.nim
+++ b/src/nigui/private/windows/windows.nim