cryptopunks-gui 0.0.6 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 41332d4eb8f4427149280fd075b456ace5f882ec6acd9d794a052d66747b5ab4
4
- data.tar.gz: b52e82c7789dd198ee4925db7b1f59cfc99fae0e11b7d1d577ffa1e7190ddd6c
3
+ metadata.gz: 500d88447b105a1383d4de25cecaf39b5d805420edab28638b157a11e243422a
4
+ data.tar.gz: 4af0fa654391c4208f330d221b39d7b5b8741d42464c1a57db0d4246a04c640e
5
5
  SHA512:
6
- metadata.gz: 50ead25c82393bfb068c411b17edd7a64bf5eb943fae3f74094ae25766e5600d07949f85f283c4869777645a2b05bc85efce4a3d3e0eb241c218e5d063cc0341
7
- data.tar.gz: 4f18e99c50b31cb823ea68e8239c78a30d0ed6428b9199aa8300eaf747a503499a2c321dd552ff3d0f039c525babb6d9b832066da5ff200774160b65f8f742ef
6
+ metadata.gz: 8f14974ea5229ad9bafea8dbbb15f9e874ccddd4107ba600ca5731fa2eb34b4a06742a7a3d5b25fc42cc1d1d9dcde264d1f592a2cbf150d88dfaae1d22bf74e9
7
+ data.tar.gz: 8386c9af297624919012fc389925b968cb0d76c501b55407dc8be9c9c79cf6f11274b9792ffc8b965cd1ee205ef05fcb8a0a7160a9ecf0ef8a03bf13aa470fad
data/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.0.10
4
+
5
+ - Fix issue with cryptopunks GUI erroring when cancelling selection of a new output location (or getting blocked by OS for security reasons)
6
+
7
+ ## 0.0.9
8
+
9
+ - Added Halloween special collections: Scream, Jack 'O' Lantern, Joker, and Frankenstein
10
+
11
+ ## 0.0.8
12
+
13
+ - Added missing Bored Apes (vanilla) collection
14
+ - Fixed Bored Apes collection image dimensions (28x28 instead of default 24x24)
15
+
16
+ ## 0.0.7
17
+
18
+ - Multiple Punk Collections (https://github.com/cryptopunksnotdead/awesome-24px)
19
+
3
20
  ## 0.0.6
4
21
 
5
22
  - Provide option to change output location
data/README.md CHANGED
@@ -1,20 +1,24 @@
1
- # <img src="https://raw.githubusercontent.com/AndyObtiva/cryptopunks-gui/master/icons/cryptopunks-gui.png" height=85 /> CryptoPunks GUI 0.0.6
1
+ # <img src="https://raw.githubusercontent.com/AndyObtiva/cryptopunks-gui/master/icons/cryptopunks-gui.png" height=85 /> CryptoPunks GUI 0.0.10
2
2
  ## Simplified Minting
3
3
  [![Gem Version](https://badge.fury.io/rb/cryptopunks-gui.svg)](http://badge.fury.io/rb/cryptopunks-gui)
4
4
 
5
5
  This is a Graphical User Interface for the famous [cryptopunks Ruby gem](https://github.com/cryptopunksnotdead/cryptopunks/tree/master/cryptopunks).
6
6
 
7
- It automatically downloads `punks.png` from https://github.com/larvalabs/cryptopunks on first use.
7
+ It automatically downloads image collection sprites on first use (e.g. `punks.png` from https://github.com/larvalabs/cryptopunks).
8
8
 
9
- Minted cryptopunks are stored at `~/.cryptopunks/`.
9
+ Minted cryptopunks are stored at `~/cryptopunks/` by default ([output location can be changed](#output-location)).
10
10
 
11
11
  ![Screenshot](/screenshots/cryptopunks-gui-screenshot.png)
12
12
 
13
+ [<img src="https://raw.githubusercontent.com/AndyObtiva/cryptopunks-gui/master/icons/cryptopunks-gui.png" height=40 /> Download DMG installer for Mac (Catalina x64 and older)](https://www.dropbox.com/s/gfh7e9osw30sjiq/CryptoPunks%20GUI.dmg?dl=1)
14
+
15
+ If your machine is incompatible with the downloadable DMG package, you may follow [Packaging](#packaging) instructions to produce your own machine compatible installer.
16
+
13
17
  ## Prerequities
14
18
 
15
19
  - [Tcl/Tk (ActiveTcl)](https://tkdocs.com/tutorial/install.html)
16
20
  - [RVM](https://rvm.io/) (unless you are on Windows)
17
- - [Ruby 3.0.2 compiled with RVM for Tk](https://rvm.io/integration/tk#tk) (unless you are on Windows for which Tcl/Tk instructions include installation of Ruby)
21
+ - [Ruby 3.0.2 compiled with RVM for Tk](https://rvm.io/integration/tk#tk) (unless you are on Windows for which Tcl/Tk instructions include installation of Ruby [get v3.0.2])
18
22
 
19
23
  ## Setup
20
24
 
@@ -25,7 +29,7 @@ You can use CryptoPunks GUI via gem or via cloning repository.
25
29
  Run:
26
30
 
27
31
  ```
28
- gem install cryptopunks-gui -v0.0.6
32
+ gem install cryptopunks-gui -v0.0.10
29
33
  ```
30
34
 
31
35
  Afterwards, run app via:
@@ -69,9 +73,73 @@ ruby app/cryptopunks_gui.rb
69
73
 
70
74
  ## Instructions
71
75
 
72
- ### Punk Index
73
-
74
- Change punk index to pick a different punk.
76
+ ### Collection
77
+
78
+ Change collection to pick a different collection of images.
79
+
80
+ There are currently 38 available collections (from https://github.com/cryptopunksnotdead/awesome-24px):
81
+ - [Punks](https://raw.githubusercontent.com/larvalabs/cryptopunks/master/punks.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/punks-strip.png)
82
+ - [Mohawks](https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/mohawks.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/mohawks-strip.png)
83
+ - [Blondies](https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/blondies.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/blondies-strip.png)
84
+ - [Zombies](https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/zombies.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/zombies-strip.png)
85
+ - [Apes](https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/apes.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/apes-strip.png)
86
+ - [Aliens](https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/aliens.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/aliens-strip.png)
87
+ - [Golden Punks](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/goldenpunks.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/goldenpunks-strip.png)
88
+ - [Halloween Punks](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/halloweenpunks.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/halloweenpunks-strip.png)
89
+ - [Scream Punks](https://raw.githubusercontent.com/cryptopunksnotdead/cryptopunks/master/halloween/i/screampunks%402x.png)
90
+ - [Jack 'O' Lantern Punks](https://raw.githubusercontent.com/cryptopunksnotdead/cryptopunks/master/halloween/i/jackpunks%402x.png)
91
+ - [Joker Punks](https://raw.githubusercontent.com/cryptopunksnotdead/cryptopunks/master/halloween/i/jokerpunks%402x.png)
92
+ - [Frankenstein Punks](https://raw.githubusercontent.com/cryptopunksnotdead/cryptopunks/master/halloween/i/frankensteinpunks%402x.png)
93
+ - [Front Punks](https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/frontpunks.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/frontpunks-strip.png)
94
+ - [More Punks](https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/morepunks.png') ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/morepunks-strip.png)
95
+ - [Expansion Punks](https://expansionpunks.com/provenance/expansionpunks.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/expansionpunks-strip.png)
96
+ - [Avalanche Punks](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/avalanchepunks.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/avalanchepunks-strip.png)
97
+ - [International Punks](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/intlpunks.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/intlpunks-strip.png)
98
+ - [Ape Punks](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/apepunks.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/apepunks-strip.png)
99
+ - [Alien Clan](https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/alienclan.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/alienclan-strip.png)
100
+ - [Bored Apes](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/boredapes.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/boredapes-strip.png)
101
+ - [Bored Apes Blue](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/boredapes_blue.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/boredapes_blue-strip.png)
102
+ - [Bored Apes Red](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/boredapes_red.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/boredapes_red-strip.png)
103
+ - [Bored Apes Neon Glow](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/boredapes_neon_glow.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/boredapes_neon_glow-strip.png)
104
+ - [Bored Apes Stars and Stripes](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/boredapes_stars_and_stripes.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/boredapes_stars_and_stripes-strip.png)
105
+ - [Bored Apes Acid](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/boredapes_acid.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/boredapes_acid-strip.png)
106
+ - [Cool Cats](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/coolcats-strip.png)
107
+ - [Cool Cats Mohawks](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats_mohawks.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/coolcats_mohawks-strip.png)
108
+ - [Cool Cats Ninjas](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats_ninjas.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/coolcats_ninjas-strip.png)
109
+ - [Cool Cats TV Heads](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats_tvheads.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/coolcats_tvheads-strip.png)
110
+ - [Cool Cats Pirates](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats_pirates.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/coolcats_pirates-strip.png)
111
+ - [Cool Cats Unicorns](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats_unicorns.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/coolcats_unicorns-strip.png)
112
+ - [Cool Cats Dragons](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats_dragons.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/coolcats_dragons-strip.png)
113
+ - [Cool Cats Frogs](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats_frogs.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/blob/master/i/coolcats_frogs-strip.png)
114
+ - [Pudgy Penguins](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/pudgypenguins.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/pudgypenguins-strip.png)
115
+ - [Dodge](https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/dodge.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/dodge-strip.png)
116
+ - [Rocks](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/rocks.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/rocks-strip.png)
117
+ - [Punk Rocks](https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/punkrocks.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/punkrocks-strip.png)
118
+ - [Tulips](https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/tulips.png) ![image examples](https://github.com/cryptopunksnotdead/awesome-24px/raw/master/i/tulips-strip.png)
119
+
120
+ ![Screenshot](/screenshots/cryptopunks-gui-screenshot-collection-zombies.png)
121
+
122
+ ![Screenshot](/screenshots/cryptopunks-gui-screenshot-collection-apes.png)
123
+
124
+ ![Screenshot](/screenshots/cryptopunks-gui-screenshot-collection-scream-punks.png)
125
+
126
+ ![Screenshot](/screenshots/cryptopunks-gui-screenshot-collection-jack-o-lantern-punks.png)
127
+
128
+ ![Screenshot](/screenshots/cryptopunks-gui-screenshot-collection-joker-punks.png)
129
+
130
+ ![Screenshot](/screenshots/cryptopunks-gui-screenshot-collection-frankenstein-punks.png)
131
+
132
+ ![Screenshot](/screenshots/cryptopunks-gui-screenshot-collection-alien-clan.png)
133
+
134
+ ![Screenshot](/screenshots/cryptopunks-gui-screenshot-collection-bored-apes-stars-and-stripes.png)
135
+
136
+ ![Screenshot](/screenshots/cryptopunks-gui-screenshot-collection-cool-cats-ninjas.png)
137
+
138
+ ![Screenshot](/screenshots/cryptopunks-gui-screenshot-collection-dodge.png)
139
+
140
+ ### Image Index
141
+
142
+ Change image index to pick a different image.
75
143
 
76
144
  ![Screenshot](/screenshots/cryptopunks-gui-screenshot-different-punk-index.png)
77
145
 
@@ -143,6 +211,45 @@ You may select a new output location by clicking on the `...` button.
143
211
 
144
212
  ![Screenshot](/screenshots/cryptopunks-gui-screenshot-output-location.png)
145
213
 
214
+ ## Packaging
215
+
216
+ Assuming you have setup all prerequisites and cloned the project locally, you can package the project files, Ruby, gem dependencies, and ActiveTcl (Tcl/Tk) into fully self-contained native executable bundles for the Mac.
217
+
218
+ ### Packaging Prerequisites
219
+
220
+ Packaging is currently supported on Mac only.
221
+
222
+ - [Platypus](https://github.com/sveinbjornt/Platypus): Install Platypus 5.3
223
+ - [Platypus Command Line Tool](https://github.com/sveinbjornt/Platypus/blob/master/Documentation/Documentation.md#show-shell-command): Run Platypus GUI -> Go to Preferences -> Install Command Line Tool.
224
+
225
+ Finally, ensure the `platypus` command is available in the terminal by simply running:
226
+
227
+ ```
228
+ platypus --version
229
+ ```
230
+
231
+ Output:
232
+
233
+ ```
234
+ platypus version 5.3
235
+ ```
236
+
237
+ ### Packaging Commands
238
+
239
+ To package this app as both a Mac native executable (APP file) and a Mac native installer (DMG file), run this command (produces packages under `~/Applications`):
240
+
241
+ ```
242
+ bin/package-mac
243
+ ```
244
+
245
+ To package a Mac native executable only (quicker for local APP use without distribution), run:
246
+
247
+ ```
248
+ bin/package-mac-app
249
+ ```
250
+
251
+ ![Screenshot](/screenshots/cryptopunks-gui-package-screenshot-mac-dmg.png)
252
+
146
253
  ## TODO
147
254
 
148
255
  [TODO.md](TODO.md)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.10
@@ -13,19 +13,64 @@ class CryptopunksGui
13
13
 
14
14
  PALETTES = ['Standard'] + (Palette8bit.constants).map(&:name).map {|palette| palette.split('_').map(&:capitalize).join(' ')}.reject { |palette| palette.include?(' ') }.sort
15
15
  STYLES = ['Normal', 'Led', 'Sketch']
16
+ COLLECTION_URL_MAP = {
17
+ 'Punks' => {url: 'https://raw.githubusercontent.com/larvalabs/cryptopunks/master/punks.png', width: 24, height: 24, default_zoom: 12},
18
+ 'Mohawks' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/mohawks.png', width: 24, height: 24, default_zoom: 12},
19
+ 'Blondies' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/blondies.png', width: 24, height: 24, default_zoom: 12},
20
+ 'Zombies' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/zombies.png', width: 24, height: 24, default_zoom: 12},
21
+ 'Apes' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/apes.png', width: 24, height: 24, default_zoom: 12},
22
+ 'Aliens' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/aliens.png', width: 24, height: 24, default_zoom: 12},
23
+ 'Golden Punks' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/goldenpunks.png', width: 24, height: 24, default_zoom: 12},
24
+ 'Halloween Punks' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/halloweenpunks.png', width: 24, height: 24, default_zoom: 12},
25
+ 'Scream Punks' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/cryptopunks/master/halloween/i/screampunks%402x.png', width: 48, height: 48, default_zoom: 6},
26
+ "Jack 'O' Lantern Punks" => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/cryptopunks/master/halloween/i/jackpunks%402x.png', width: 48, height: 48, default_zoom: 6},
27
+ 'Joker Punks' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/cryptopunks/master/halloween/i/jokerpunks%402x.png', width: 48, height: 48, default_zoom: 6},
28
+ 'Frankenstein Punks' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/cryptopunks/master/halloween/i/frankensteinpunks%402x.png', width: 48, height: 48, default_zoom: 6},
29
+ 'Front Punks' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/frontpunks.png', width: 24, height: 24, default_zoom: 12},
30
+ 'More Punks' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/morepunks.png', width: 24, height: 24, default_zoom: 12},
31
+ 'Expansion Punks' => {url: 'https://expansionpunks.com/provenance/expansionpunks.png', width: 24, height: 24, default_zoom: 12},
32
+ 'Avalanche Punks' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/avalanchepunks.png', width: 24, height: 24, default_zoom: 12},
33
+ 'International Punks' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/intlpunks.png', width: 24, height: 24, default_zoom: 12},
34
+ 'Ape Punks' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/apepunks.png', width: 24, height: 24, default_zoom: 12},
35
+ 'Alien Clan' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/alienclan.png', width: 24, height: 24, default_zoom: 12},
36
+ 'Bored Apes' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/boredapes.png', width: 28, height: 28, default_zoom: 10},
37
+ 'Bored Apes Blue' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/boredapes_blue.png', width: 28, height: 28, default_zoom: 10},
38
+ 'Bored Apes Red' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/boredapes_red.png', width: 28, height: 28, default_zoom: 10},
39
+ 'Bored Apes Neon Glow' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/boredapes_neon_glow.png', width: 28, height: 28, default_zoom: 10},
40
+ 'Bored Apes Stars and Stripes' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/boredapes_stars_and_stripes.png', width: 28, height: 28, default_zoom: 10},
41
+ 'Bored Apes Acid' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/boredapes_acid.png', width: 28, height: 28, default_zoom: 10},
42
+ 'Cool Cats' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats.png', width: 24, height: 24, default_zoom: 12},
43
+ 'Cool Cats Mohawks' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats_mohawks.png', width: 24, height: 24, default_zoom: 12},
44
+ 'Cool Cats Ninjas' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats_ninjas.png', width: 24, height: 24, default_zoom: 12},
45
+ 'Cool Cats TV Heads' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats_tvheads.png', width: 24, height: 24, default_zoom: 12},
46
+ 'Cool Cats Pirates' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats_pirates.png', width: 24, height: 24, default_zoom: 12},
47
+ 'Cool Cats Unicorns' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats_unicorns.png', width: 24, height: 24, default_zoom: 12},
48
+ 'Cool Cats Dragons' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats_dragons.png', width: 24, height: 24, default_zoom: 12},
49
+ 'Cool Cats Frogs' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/coolcats_frogs.png', width: 24, height: 24, default_zoom: 12},
50
+ 'Pudgy Penguins' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/pudgypenguins.png', width: 24, height: 24, default_zoom: 12},
51
+ 'Dodge' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/dodge.png', width: 24, height: 24, default_zoom: 12},
52
+ 'Rocks' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/rocks.png', width: 24, height: 24, default_zoom: 12},
53
+ 'Punk Rocks' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/programming-cryptopunks/master/i/punkrocks.png', width: 24, height: 24, default_zoom: 12},
54
+ 'Tulips' => {url: 'https://raw.githubusercontent.com/cryptopunksnotdead/awesome-24px/master/collection/tulips.png', width: 24, height: 24, default_zoom: 12},
55
+ }
16
56
 
17
- attr_accessor :punk_index, :zoom, :palette, :style, :led_spacing, :led_round_corner, :sketch_line, :flip, :mirror
57
+ attr_accessor :collection, :image_index, :zoom, :palette, :style, :led_spacing, :led_round_corner, :sketch_line, :flip, :mirror
18
58
 
19
59
  def initialize
20
- initialize_punks
60
+ initialize_punk_directory
61
+ initialize_collection
21
62
  load_config
22
63
  initialize_defaults
23
64
  observe_image_attribute_changes
24
65
  create_gui
25
- self.punk_index = 0
66
+ self.image_index = 0
26
67
  @root.open
27
68
  end
28
69
 
70
+ def collection_options
71
+ COLLECTION_URL_MAP.keys
72
+ end
73
+
29
74
  def palette_options
30
75
  PALETTES
31
76
  end
@@ -34,16 +79,28 @@ class CryptopunksGui
34
79
  STYLES
35
80
  end
36
81
 
37
- def initialize_punks
38
- @punk_directory = File.join(Dir.home, 'cryptopunks')
82
+ def initialize_punk_directory
83
+ @punk_directory = @punk_config_directory = File.join(Dir.home, 'cryptopunks')
39
84
  FileUtils.mkdir_p(@punk_directory)
40
- @punk_file = File.join(@punk_directory, 'punks.png')
41
- File.write(@punk_file, Net::HTTP.get(URI('https://raw.githubusercontent.com/larvalabs/cryptopunks/master/punks.png'))) unless File.exist?(@punk_file)
42
- @punks = Punks::Image::Composite.read(@punk_file)
85
+ end
86
+
87
+ def initialize_collection
88
+ return if @collection && @collection == @last_collection
89
+ @collection ||= COLLECTION_URL_MAP.keys.first
90
+ url = COLLECTION_URL_MAP[@collection][:url]
91
+ width = COLLECTION_URL_MAP[@collection][:width]
92
+ height = COLLECTION_URL_MAP[@collection][:height]
93
+ @punk_file = File.join(@punk_config_directory, File.basename(url, '.png'))
94
+ File.write(@punk_file, Net::HTTP.get(URI(url))) unless File.exist?(@punk_file)
95
+ @images ||= {}
96
+ @images[@collection] ||= Punks::Image::Composite.read(@punk_file, width: width, height: height)
97
+ @last_collection = @collection
98
+ self.image_index = 0
99
+ @image_index_spinbox.to = @images[@collection].size - 1 if @image_index_spinbox
43
100
  end
44
101
 
45
102
  def load_config
46
- @punk_config_file = File.join(@punk_directory, 'cryptopunks.yml')
103
+ @punk_config_file = File.join(@punk_config_directory, 'cryptopunks.yml')
47
104
  FileUtils.touch(@punk_config_file)
48
105
  @punk_config = YAML.load(File.read(@punk_config_file)) || {punk_directory: @punk_directory}
49
106
  @punk_directory = @punk_config[:punk_directory]
@@ -54,6 +111,7 @@ class CryptopunksGui
54
111
  end
55
112
 
56
113
  def initialize_defaults
114
+ @collection = COLLECTION_URL_MAP.keys.first
57
115
  @zoom = 12
58
116
  @palette = PALETTES.first
59
117
  @style = STYLES.first
@@ -66,7 +124,8 @@ class CryptopunksGui
66
124
 
67
125
  def observe_image_attribute_changes
68
126
  observer = Glimmer::DataBinding::Observer.proc { generate_image }
69
- observer.observe(self, :punk_index)
127
+ observer.observe(self, :collection)
128
+ observer.observe(self, :image_index)
70
129
  observer.observe(self, :zoom)
71
130
  observer.observe(self, :palette)
72
131
  observer.observe(self, :style)
@@ -78,12 +137,16 @@ class CryptopunksGui
78
137
  end
79
138
 
80
139
  def generate_image
81
- return if @punk_index.to_i > @punks.size
82
- image_location = File.join(@punk_directory, "punk-#{@punk_index}#{"x#{@zoom}" if @zoom.to_i > 1}#{"-#{@palette.underscore}" if @palette != PALETTES.first}#{"-#{@style.underscore}" if @style != STYLES.first}.png")
140
+ initialize_collection
141
+ return if @image_index.to_i > @images[@collection].size
142
+ image_location = File.join(@punk_directory, "#{@collection.gsub(' ', '').downcase}-#{@image_index}#{"x#{@zoom}" if @zoom.to_i > 1}#{"-#{@palette.underscore}" if @palette != PALETTES.first}#{"-#{@style.underscore}" if @style != STYLES.first}.png")
83
143
  puts "Writing punk image to #{image_location}"
84
- selected_punk = @punks[@punk_index.to_i]
144
+ selected_punk = @images[@collection][@image_index.to_i]
85
145
  selected_punk = selected_punk.change_palette8bit(Palette8bit.const_get(@palette.gsub(' ', '_').upcase.to_sym)) if @palette != PALETTES.first
86
146
  @original_zoom = @zoom
147
+ if @previous_collection && @collection != @previous_collection && COLLECTION_URL_MAP[@collection][:width] != COLLECTION_URL_MAP[@previous_collection][:width]
148
+ @zoom = COLLECTION_URL_MAP[@collection][:default_zoom]
149
+ end
87
150
  if @style != STYLES.first
88
151
  style_options = {}
89
152
  if @style == 'Led'
@@ -102,6 +165,7 @@ class CryptopunksGui
102
165
  @image_label.image = image_location
103
166
  @output_location_entry.text = image_location
104
167
  @previous_style = @style
168
+ @previous_collection = @collection
105
169
  notify_observers(:zoom) if @zoom != @original_zoom
106
170
  end
107
171
 
@@ -112,12 +176,20 @@ class CryptopunksGui
112
176
 
113
177
  frame {
114
178
  label {
115
- text 'Punk Index:'
179
+ text 'Collection:'
116
180
  }
117
- spinbox {
181
+ combobox {
182
+ readonly true
183
+ text <=> [self, :collection]
184
+ }
185
+
186
+ label {
187
+ text 'Image Index:'
188
+ }
189
+ @image_index_spinbox = spinbox {
118
190
  from 0
119
- to @punks.size - 1
120
- text <=> [self, :punk_index]
191
+ to @images[@collection].size - 1
192
+ text <=> [self, :image_index]
121
193
  }
122
194
 
123
195
  label {
@@ -188,7 +260,7 @@ class CryptopunksGui
188
260
  @output_location_entry = entry {
189
261
  grid row: 0, column: 0
190
262
  readonly true
191
- width 35
263
+ width 47
192
264
  }
193
265
  button {
194
266
  grid row: 0, column: 1
@@ -196,10 +268,13 @@ class CryptopunksGui
196
268
  width 1.1
197
269
 
198
270
  on('command') do
199
- @punk_directory = choose_directory(parent: @root)
200
- @punk_config[:punk_directory] = @punk_directory
201
- save_config
202
- generate_image
271
+ new_punk_directory = choose_directory(parent: @root)
272
+ unless new_punk_directory.to_s.empty?
273
+ @punk_directory = new_punk_directory
274
+ @punk_config[:punk_directory] = @punk_directory
275
+ save_config
276
+ generate_image
277
+ end
203
278
  end
204
279
  }
205
280
  }
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+
3
+ mkdir -p ~/Library/Frameworks
4
+ [ ! -d ~/Library/Tcl ] && cp -r Tcl ~/Library/Tcl
5
+ [ ! -d ~/Library/Frameworks/Tcl.framework ] && cp -r Tcl.framework ~/Library/Frameworks/Tcl.framework
6
+ [ ! -d ~/Library/Frameworks/Tk.framework ] && cp -r Tk.framework ~/Library/Frameworks/Tk.framework
7
+
8
+ ruby-3.0.2/bin/ruby cryptopunks-gui/bin/cryptopunks-mac-gui.rb
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ Gem.paths = {
4
+ 'GEM_HOME' => File.expand_path('../../ruby-3.0.2@cryptopunks-gui', __dir__),
5
+ 'GEM_PATH' => Gem.paths.path + [File.expand_path('../../ruby-3.0.2@cryptopunks-gui', __dir__)],
6
+ 'GEM_SPEC_CACHE' => Gem.paths.spec_cache_dir
7
+ }
8
+ require_relative '../app/cryptopunks_gui.rb'
data/bin/package-mac ADDED
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+
3
+ source "$(dirname "$BASH_SOURCE")/package-mac-dmg"
4
+ echo "Moving .app file to ~/Applications/ to make ready for use..."
5
+ rm -rf ~/Applications/CryptoPunks\ GUI.app
6
+ mv ~/Applications/CryptoPunks\ GUI/CryptoPunks\ GUI.app ~/Applications/CryptoPunks\ GUI.app
7
+ rm -rf ~/Applications/CryptoPunks\ GUI
8
+ echo "Done packaging."
@@ -0,0 +1,5 @@
1
+ #!/bin/sh
2
+
3
+ echo "Packaging .app file..."
4
+ mkdir -p ~/Applications/CryptoPunks\ GUI
5
+ platypus --quit-after-execution --interface-type "None" --name "CryptoPunks GUI" --app-icon "icons/cryptopunks-gui.icns" --author "Andy Maleh" --app-version "1.0.0" --bundle-identifier "org.andymaleh.CryptoPunksGUI" --bundled-file "$(pwd)|$(dirname $(dirname $(which ruby)))|$(dirname $(dirname $(dirname $(dirname $(gem which glimmer)))))|/Library/Frameworks/Tcl.framework|/Library/Frameworks/Tk.framework|/Library/Tcl" "bin/cryptopunks-mac-gui" --overwrite "~/Applications/CryptoPunks GUI/CryptoPunks GUI.app"
@@ -0,0 +1,6 @@
1
+ #!/bin/sh
2
+
3
+ source "$(dirname "$BASH_SOURCE")/package-mac-app"
4
+ echo "Packaging .dmg file..."
5
+ rm -rf ~/Applications/CryptoPunks\ GUI.dmg
6
+ hdiutil create -format UDZO -srcfolder ~/Applications/CryptoPunks\ GUI ~/Applications/CryptoPunks\ GUI.dmg
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: cryptopunks-gui 0.0.6 ruby app
5
+ # stub: cryptopunks-gui 0.0.10 ruby app
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "cryptopunks-gui".freeze
9
- s.version = "0.0.6"
9
+ s.version = "0.0.10"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["app".freeze]
13
13
  s.authors = ["Andy Maleh".freeze]
14
- s.date = "2021-10-28"
14
+ s.date = "2021-11-02"
15
15
  s.description = "CryptoPunks GUI for Simplified Minting - Built with Glimmer DSL for Tk (requires ActiveTcl to run cryptopunks-gui command)".freeze
16
16
  s.email = "andy.am@gmail.com".freeze
17
17
  s.executables = ["cryptopunks-gui".freeze]
@@ -27,7 +27,13 @@ Gem::Specification.new do |s|
27
27
  "VERSION",
28
28
  "app/cryptopunks_gui.rb",
29
29
  "bin/cryptopunks-gui",
30
+ "bin/cryptopunks-mac-gui",
31
+ "bin/cryptopunks-mac-gui.rb",
32
+ "bin/package-mac",
33
+ "bin/package-mac-app",
34
+ "bin/package-mac-dmg",
30
35
  "cryptopunks-gui.gemspec",
36
+ "icons/cryptopunks-gui.icns",
31
37
  "icons/cryptopunks-gui.png"
32
38
  ]
33
39
  s.homepage = "http://github.com/AndyObtiva/cryptopunks-gui".freeze
@@ -41,7 +47,7 @@ Gem::Specification.new do |s|
41
47
  end
42
48
 
43
49
  if s.respond_to? :add_runtime_dependency then
44
- s.add_runtime_dependency(%q<glimmer-dsl-tk>.freeze, ["~> 0.0.30"])
50
+ s.add_runtime_dependency(%q<glimmer-dsl-tk>.freeze, ["~> 0.0.33"])
45
51
  s.add_runtime_dependency(%q<cryptopunks>.freeze, ["~> 2.0.1"])
46
52
  s.add_development_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
47
53
  s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
@@ -49,7 +55,7 @@ Gem::Specification.new do |s|
49
55
  s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
50
56
  s.add_development_dependency(%q<rake-tui>.freeze, [">= 0"])
51
57
  else
52
- s.add_dependency(%q<glimmer-dsl-tk>.freeze, ["~> 0.0.30"])
58
+ s.add_dependency(%q<glimmer-dsl-tk>.freeze, ["~> 0.0.33"])
53
59
  s.add_dependency(%q<cryptopunks>.freeze, ["~> 2.0.1"])
54
60
  s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
55
61
  s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cryptopunks-gui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-28 00:00:00.000000000 Z
11
+ date: 2021-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: glimmer-dsl-tk
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.0.30
19
+ version: 0.0.33
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.0.30
26
+ version: 0.0.33
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: cryptopunks
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -125,7 +125,13 @@ files:
125
125
  - VERSION
126
126
  - app/cryptopunks_gui.rb
127
127
  - bin/cryptopunks-gui
128
+ - bin/cryptopunks-mac-gui
129
+ - bin/cryptopunks-mac-gui.rb
130
+ - bin/package-mac
131
+ - bin/package-mac-app
132
+ - bin/package-mac-dmg
128
133
  - cryptopunks-gui.gemspec
134
+ - icons/cryptopunks-gui.icns
129
135
  - icons/cryptopunks-gui.png
130
136
  homepage: http://github.com/AndyObtiva/cryptopunks-gui
131
137
  licenses: