mirror of
https://github.com/Airr/nim-cocoa.git
synced 2024-11-24 09:45:30 +00:00
Switched to Nimble installation
This commit is contained in:
parent
5003cc5b2a
commit
ee1fa4994f
@ -1,56 +0,0 @@
|
||||
{.compile: "widgets/functions.m".}
|
||||
|
||||
type
|
||||
ID* = pointer
|
||||
ACTION* = proc (a2: ID)
|
||||
|
||||
# GUI ANCHOR SYSTEM
|
||||
const
|
||||
akNone* = 0
|
||||
akRight* = 1
|
||||
akWidth* = 2
|
||||
akLeft* = 4
|
||||
akBottom* = 8
|
||||
akHeight* = 16
|
||||
akFull* = 18
|
||||
akTop* = 32
|
||||
|
||||
# Flags for GUI Anchor System
|
||||
|
||||
# akNone No Anchor
|
||||
# akRight Anchor to Right of Window
|
||||
# akWidth Anchor to Left and Right (width)
|
||||
# akLeft Anchor to Left
|
||||
# akBottom Anchor to Bottom
|
||||
# akHeight Anchor to Top and Bottom
|
||||
# akFull Anchor to Left/Right/Top/Bottom
|
||||
# akTop Anchor to Top
|
||||
|
||||
proc `anchor=`*(widget: ID; value: cint) {.cdecl, importc: "Pin".}
|
||||
proc Cocoa_Init*() {.cdecl, importc: "Cocoa_Init".}
|
||||
proc Cocoa_Run*() {.cdecl, importc: "Cocoa_Run".}
|
||||
proc `text=`*(widget: ID; txt: cstring) {.cdecl, importc: "SetText".}
|
||||
proc `text`*(widget: ID): cstring {.cdecl, importc: "GetText".}
|
||||
proc `item=`*(widget: ID; txt: cstring) {.cdecl, importc: "AddItem".}
|
||||
proc `item`*(widget: ID) {.cdecl, importc: "GetItem".}
|
||||
proc `value=`*(widget: ID, value: cint) {.cdecl, importc: "SetValue".}
|
||||
proc `value`*(widget: ID): cint {.cdecl, importc: "GetValue".}
|
||||
|
||||
|
||||
# proc `text=`*(widget: ID; txt: cstring) =
|
||||
# widget.SetText(txt)
|
||||
|
||||
# proc `text`*(widget: ID): cstring =
|
||||
# GetText(widget)
|
||||
|
||||
# proc `item`*(widget: ID): cstring =
|
||||
# GetItem(widget)
|
||||
|
||||
# proc `anchor=`*(widget: ID; value: cint) =
|
||||
# widget.AutoSizeMask(value)
|
||||
|
||||
# proc `value=`*(widget: ID, value: cint) =
|
||||
# widget.SetValue(value)
|
||||
|
||||
# proc `value`*(widget: ID): cint =
|
||||
# result = widget.GetValue()
|
12
cocoa.nimble
Normal file
12
cocoa.nimble
Normal file
@ -0,0 +1,12 @@
|
||||
# Package
|
||||
|
||||
version = "0.1.0"
|
||||
author = "Armando Rivera"
|
||||
description = "macOS Cocoa GUI package"
|
||||
license = "MIT"
|
||||
srcDir = "src"
|
||||
|
||||
|
||||
# Dependencies
|
||||
|
||||
requires "nim >= 1.4.8"
|
7
src/cocoa.nim
Normal file
7
src/cocoa.nim
Normal file
@ -0,0 +1,7 @@
|
||||
import Cocoa / [NSButton, NSCombobox, NSLabel, NSMenu, NSSavedialog, NSTextfield]
|
||||
import Cocoa / [NSCheckbox, NSDialog, NSLine, NSMessagebox, NSSlider, NSWindow]
|
||||
import Cocoa / [NSColordialog, NSFunctions, NSListbox, NSOpendialog, NSTextedit]
|
||||
|
||||
export NSButton, NSCombobox, NSLabel, NSMenu, NSSavedialog, NSTextfield
|
||||
export NSCheckbox, NSDialog, NSLine, NSMessagebox, NSSlider, NSWindow
|
||||
export NSColordialog, NSFunctions, NSListbox, NSOpendialog, NSTextedit
|
@ -1,5 +1,5 @@
|
||||
{.compile: "widgets/dialog.m".}
|
||||
|
||||
import NSFunctions
|
||||
# import NSFunctions
|
||||
|
||||
proc newDialog*(title, message: cstring, height: cint): cint {.cdecl, importc: "createDialog".}
|
61
src/cocoa/NSFunctions.nim
Normal file
61
src/cocoa/NSFunctions.nim
Normal file
@ -0,0 +1,61 @@
|
||||
{.compile: "widgets/functions.m".}
|
||||
|
||||
type
|
||||
ID* = pointer
|
||||
ACTION* = proc (a2: ID) {.cdecl.}
|
||||
|
||||
# GUI ANCHOR SYSTEM
|
||||
const
|
||||
akNone* = 0
|
||||
akRight* = 1
|
||||
akWidth* = 2
|
||||
akLeft* = 4
|
||||
akBottom* = 8
|
||||
akHeight* = 16
|
||||
akFull* = 18
|
||||
akTop* = 32
|
||||
|
||||
# Flags for GUI Anchor System
|
||||
|
||||
# akNone No Anchor
|
||||
# akRight Anchor to Right of Window
|
||||
# akWidth Anchor to Left and Right (width)
|
||||
# akLeft Anchor to Left
|
||||
# akBottom Anchor to Bottom
|
||||
# akHeight Anchor to Top and Bottom
|
||||
# akFull Anchor to Left/Right/Top/Bottom
|
||||
# akTop Anchor to Top
|
||||
|
||||
proc Cocoa_Init*() {.cdecl, importc: "Cocoa_Init".}
|
||||
|
||||
proc Cocoa_Run*(a2: ID) {.cdecl, importc: "Cocoa_Run".}
|
||||
|
||||
proc Cocoa_Quit*(a2: ID) {.cdecl, importc: "Cocoa_Quit".}
|
||||
|
||||
proc Cocoa_About*() {.cdecl, importc: "Cocoa_About".}
|
||||
proc `anchor=`*(widget: ID; value: cint) {.cdecl, importc: "Pin".}
|
||||
proc `text=`*(widget: ID; txt: cstring) {.cdecl, importc: "SetText".}
|
||||
|
||||
proc text*(widget: ID): cstring {.cdecl, importc: "GetText".}
|
||||
|
||||
proc value*(widget: ID): cint {.cdecl, importc: "GetValue".}
|
||||
|
||||
proc `value=`*(widget: ID; value: cint) {.cdecl, importc: "SetValue".}
|
||||
|
||||
proc add*(widget: ID; txt: cstring) {.cdecl, importc: "AddItem".}
|
||||
|
||||
proc `action=`*(widget: ID; `func`: ACTION) {.cdecl, importc: "SetAction".}
|
||||
|
||||
proc `state=`*(widget: ID; state: bool) {.cdecl, importc: "SetState".}
|
||||
|
||||
proc state*(widget: ID): cint {.cdecl, importc: "State".}
|
||||
|
||||
proc clear*(widget: ID) {.cdecl, importc: "LB_Clear".}
|
||||
proc `item=`(widget: ID; pos: cint) {.cdecl, importc: "SetItem".}
|
||||
proc remove*(widget: ID; pos: cint) {.cdecl, importc: "RemoveItem".}
|
||||
proc getColor*(panel: ID): cstring {.cdecl, importc: "getColor".}
|
||||
proc hexColor*(cPanel: ID): cstring {.cdecl, importc: "hexColor".}
|
||||
|
||||
proc Notify*(title: cstring; subtitle: cstring; text: cstring) {.cdecl, importc: "Notify".}
|
||||
|
||||
proc newSeparator*(parent: ID; x: cint; y: cint; width: cint): ID {.cdecl, importc: "createLine".}
|
@ -1,5 +1,5 @@
|
||||
{.compile: "widgets/messagebox.m".}
|
||||
|
||||
import NSFunctions
|
||||
# import NSFunctions
|
||||
|
||||
proc newMessageBox*(title, message: cstring, height: cint): cint {.cdecl, importc: "createMessageBox".}
|
119
src/cocoa/col.nim
Normal file
119
src/cocoa/col.nim
Normal file
@ -0,0 +1,119 @@
|
||||
{.pragma: libcol_s, cdecl.}
|
||||
{.passL: "-fobjc-arc -framework Cocoa -lcol_s"}
|
||||
|
||||
|
||||
type
|
||||
id* = pointer
|
||||
ACTION* = proc (a1: id) {.cdecl.}
|
||||
|
||||
|
||||
const
|
||||
akNone* = 0
|
||||
akRight* = 1
|
||||
akWidth* = 2
|
||||
akLeft* = 4
|
||||
akBottom* = 8
|
||||
akHeight* = 16
|
||||
akFull* = 18
|
||||
akTop* = 32
|
||||
|
||||
|
||||
proc newWindow*(title: cstring; width: cint; height: cint): id {.cdecl, importc: "createWindow".}
|
||||
|
||||
proc Pin(widget: id; value: cint) {.cdecl, importc: "Pin".}
|
||||
|
||||
proc Cocoa_Init*() {.cdecl, importc: "Cocoa_Init".}
|
||||
|
||||
proc Cocoa_Run*(a2: id) {.cdecl, importc: "Cocoa_Run".}
|
||||
|
||||
proc Cocoa_Quit*(a2: id) {.cdecl, importc: "Cocoa_Quit".}
|
||||
|
||||
proc Cocoa_About*() {.cdecl, importc: "Cocoa_About".}
|
||||
|
||||
proc SetText(widget: id; txt: cstring) {.cdecl, importc: "SetText".}
|
||||
|
||||
proc GetText(widget: id): cstring {.cdecl, importc: "GetText".}
|
||||
|
||||
proc GetValue(widget: id): cint {.cdecl, importc: "GetValue".}
|
||||
|
||||
proc SetValue(widget: id; value: cint) {.cdecl, importc: "SetValue".}
|
||||
|
||||
proc AddItem(widget: id; txt: cstring) {.cdecl, importc: "AddItem".}
|
||||
|
||||
proc newTextField*(parent: id; txt: cstring; l: cint; t: cint; w: cint; h: cint): id {.cdecl, importc: "createTextField".}
|
||||
|
||||
proc newComboBox*(parent: id; l: cint; t: cint; w: cint; h: cint; callback: ACTION): id {.cdecl, importc: "createComboBox".}
|
||||
|
||||
proc newButton*(parent: id; caption: cstring; l: cint; t: cint; w: cint; h: cint; `func`: ACTION): id {.cdecl, importc: "createButton".}
|
||||
|
||||
proc SetAction(widget: id; `func`: ACTION) {.cdecl, importc: "SetAction".}
|
||||
proc newCheckBox*(parent: id; caption: cstring; l: cint; t: cint; w: cint; h: cint): id {.cdecl, importc: "createCheckBox".}
|
||||
|
||||
proc SetState(widget: id; state: bool) {.cdecl, importc: "SetState".}
|
||||
|
||||
proc State(widget: id): cint {.cdecl, importc: "State".}
|
||||
|
||||
proc newListBox*(parent: id; l: cint; t: cint; w: cint; h: cint): id {.cdecl, importc: "createListBox".}
|
||||
|
||||
proc Clearitems*(widget: id) {.cdecl, importc: "LB_Clear".}
|
||||
proc SetItem*(widget: id; pos: cint) {.cdecl, importc: "SetItem".}
|
||||
proc RemoveItem*(widget: id; pos: cint) {.cdecl, importc: "RemoveItem".}
|
||||
proc newOpenDialog*(parent: id; types: cstring): cstring {.cdecl, importc: "createOpenDialog".}
|
||||
|
||||
proc newSaveDialog*(parent: id; title: cstring; types: cstring): cstring {.cdecl, importc: "createSaveDialog".}
|
||||
|
||||
proc newDialog*(title: cstring; message: cstring; `type`: cint): cint {.cdecl, importc: "createDialog".}
|
||||
proc newMessageBox*(title: cstring; message: cstring; `type`: cint): cint {.cdecl, importc: "createMessageBox".}
|
||||
|
||||
proc newColorDialog*(): id {.cdecl, importc: "createColorDialog".}
|
||||
proc getColor*(panel: id): cstring {.cdecl, importc: "getColor".}
|
||||
proc hexColor*(cPanel: id): cstring {.cdecl, importc: "hexColor".}
|
||||
proc newLabel*(parent: id; txt: cstring; l: cint; t: cint; w: cint; h: cint): id {.cdecl, importc: "createLabel".}
|
||||
|
||||
proc newTextEdit*(parent: id; txt: cstring; l: cint; t: cint; w: cint; h: cint): id {.cdecl, importc: "createTextEdit".}
|
||||
|
||||
proc Notify*(title: cstring; subtitle: cstring; text: cstring) {.cdecl, importc: "Notify".}
|
||||
|
||||
proc newSeparator*(parent: id; x: cint; y: cint; width: cint): id {.cdecl, importc: "createLine".}
|
||||
proc newMenu*(Title: cstring): id {.cdecl, importc: "createMenu".}
|
||||
proc newMenuItem*(parent: id; caption: cstring; key: cstring; callback: ACTION) {.cdecl, importc: "createMenuItem".}
|
||||
proc newMenuSeparator*(parent: id) {.cdecl, importc: "createMenuSeparator".}
|
||||
proc newSlider*(parent: id; left: cint; top: cint; width: cint; height: cint; callback: ACTION): id {.cdecl, importc: "createSlider".}
|
||||
|
||||
proc `text=`*(widget: id; txt: cstring) =
|
||||
widget.SetText(txt)
|
||||
|
||||
proc `reset`*(widget: id) =
|
||||
widget.SetText("")
|
||||
|
||||
proc `text`*(widget: id): string =
|
||||
$GetText(widget)
|
||||
|
||||
# proc `item`*(widget: id): cstring =
|
||||
# GetItem(widget)
|
||||
|
||||
proc `anchor=`*(widget: id; value: cint) =
|
||||
widget.Pin(value)
|
||||
|
||||
proc `state`*(widget: id): cint =
|
||||
widget.State()
|
||||
|
||||
proc `state=`*(widget: id; val: bool) =
|
||||
widget.SetState(val)
|
||||
|
||||
proc `item=`*(widget: id, val: cstring) =
|
||||
widget.AddItem(val)
|
||||
|
||||
proc `item`*(widget: id): string =
|
||||
$GetText(widget)
|
||||
|
||||
proc action*(widget: id, action:ACTION) =
|
||||
SetAction(widget, action)
|
||||
|
||||
proc value*(widget: id, value: cint) =
|
||||
SetValue(widget, value)
|
||||
|
||||
proc value*(widget: id): cint =
|
||||
GetValue(widget)
|
||||
|
||||
# #endif
|
1
tests/config.nims
Normal file
1
tests/config.nims
Normal file
@ -0,0 +1 @@
|
||||
switch("path", "$projectDir/../src")
|
12
tests/test1.nim
Normal file
12
tests/test1.nim
Normal file
@ -0,0 +1,12 @@
|
||||
# This is just an example to get you started. You may wish to put all of your
|
||||
# tests into a single file, or separate them into multiple `test1`, `test2`
|
||||
# etc. files (better names are recommended, just make sure the name starts with
|
||||
# the letter 't').
|
||||
#
|
||||
# To run these tests, simply execute `nimble test`.
|
||||
|
||||
import unittest
|
||||
|
||||
import nimcocoa
|
||||
test "can add":
|
||||
check add(5, 5) == 10
|
Loading…
Reference in New Issue
Block a user