Code Monkey home page Code Monkey logo

cardmaker's Introduction

Critical Google Sheets News

Google policies have changed around accessing user data and CardMaker had to change slightly to work around the requirements.

Please use the 1.3.0.0 release of the application (changes how Google Sheets are selected). If you are using an older version with Google Sheets you may run into issues.

You can get the latest information related to the changes here: #123

CardMaker

CardMaker is an application that generates graphics via data sources. It has a graphical user interface for designing layouts and offers scripting functionality.

This application was created to help me generate components for a board game. You can put all of your variable data into a CSV or Google Spreadsheet and then create layouts in CardMaker. This separates your layout and data so you do not have to manually re-create each card.

Command line based export support is in development (coming soon!). Soon you will be able to build CardMaker into a workflow!

Download

Latest stable (I hope) release binary: Latest Release

Latest releases (may be a bit unstable): Download Releases

Download The Game Crafter templates for CardMaker

Guides / Help

Sample

The above image was generated by the following input data row from a CSV:

Count Name image skill1 skill1value skill2 skill2value ability
1 Siani Malia che.png T 3 B 4 Ranged Battle: +1 on all die Rolls @[opt]

While there is some interpretation of the data by CardMaker to generate the final result, many of the values are direct references. The layout configuration in CardMaker controls the details of how to actually present the data.

Further Details on how the Elements for this Layout are configured

Code Status

Compiles with Visual Studio Community Edition 2019

See more details in the Developers Section

TODO / Wishlist

Toxicity Level: Medium-High

  • Needs more comments
  • Needs warning cleanup
  • Needs some shuffling to allow for more narrow and focused unit testing
  • Needs more unit tests!
  • Every method should be implemented based on an interface and classes should implement hundreds of interfaces (just kidding!!!)

The Google Issue

If you plan to outright copy the parts of the code that operate with Google Spreadsheets please be aware that the source currently uses the client id that is associated with my CardMaker application. Code File

You will need to modify this code to correctly use your application.

Games Developed with CardMaker

CardMaker played some role in the development of these games (prototyping or otherwise). Let me know if you have a game that should be listed here.

Game Link(s)
Cardpocalypse & Cardpocalypse Steam Link
Cave Paintings
COBRA
Context Switch
Executive Shuffle
Fairness
Full Sun
Hard Stop
Iliad: Heroes of Troy
NEVO
Root Cause Analysis Team
Town Builder: Coevorden & (Publisher page)

History

2009 - First created and publicly released CardMaker

20XX - Lots of bug fixes and features

2015 - CardMaker goes open source

2017 - CardMaker is finally marked as 1.0.0.0 for no specific reason.

The Name

"CardMaker" and "Card Maker" are both references to the same application. I just never standardized the name.

Special Thanks

  • Eric Raué
  • Mark Vabulas
  • Kolja Geldmacher
  • Everyone that has contributed to the project through emailing bugs and requesting features

Original Author

CardMaker was originally created in 2009 by Tim Stair.

Disclaimer

I am providing code in the repository to you under an open source license. Because this is my personal repository, the license you receive to my code is from me and not my employer.

cardmaker's People

Contributors

feynt avatar kek444 avatar markvabulas avatar nhmkdev avatar salmelo avatar shdwcat avatar themikaus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cardmaker's Issues

[Request] Card Layout and Page Layout (settings) should allow entry of mm/cm

Page Size: Let users alternatively specify mm/cm (converted to the final inch sizes)
Card Layout: Let users specify mm/cm/inch (based on DPI) (converted to the final pixel size)

If this proves to be imperfect dig further into using untranslated values (specifically on page size). Card Layout is always going to be pixels due to the use of rasterized images.

Investigate supporting custom characters

eudcedit.exe is a tool built into windows that allows people to create custom characters. It would be useful if CardMaker could support this. Though it's a bit risky as people might lose the character if they format their machine... that's their problem though, not mine. :P

[Request] Add addional layout features

I would love to have additional features for controlling the placement of Elements. In particular I would love to have something like qt layouts. The ability to group elements together and manipulating them easily as a group would be very useful. The current 'custom align elements' is a start but lacks the persistence and grid functionality offerers by layout elements. Thanks for your great work.

Add anchor for elements

As I see it, the anchor point for every element is on its lower left corner which makes it difficult to arrange elements on the right edge of cards.

Add the ability to apply settings from one element to others (the more options the better!).

Example: When working with Elements that will be layered (like a text element on top of a shape element that provides a background) there is nothing that easily applies the location and size settings of one Element to another (or multiple).

The only current way to do this is to multi-select and bump the given fields values (forcing all select Element values to change). This workaround is a creative hack but not as easy as it could be.

.exe

I can't find the program file. Is there something I don't understand. I downloaded it but I can't find the file i am supposed to run?

[Request] When using Export Project skip layouts with a reference but no data

I have a CardMaker project with multiple card layouts. Usually I'm only exporting the changes to print and this means some layouts might contain no data. When exporting the project this results in generating a single card for each layout that contains no data.

If the changes were limited to a single layout I could simply export the layout, however, my changes often cover multiple layouts but not all.

I would like to request CardMaker skips layouts with a reference (so those not using a reference are unaffected) while exporting the project to images/PDF.

Add indicator of shift-lock state.

This might just be a bug. The shift lock sometimes appears to be triggered when not actually desired. Add a status view of the shift-lock to help track down the issue.

[PERSONAL] Reference File Unable to Connect

Hello!

I found this program and was very excited to use it but I can't seem to get the reference file to work in any capacity. I've tried saving the CSV from multiple programs and I just don't understand what's not working.

I even tried the test one supplied and every time it says [bad name] and I'm unclear what I'm doing wrong. Is there something I need to do before the file is put in? Do I need to change the count? I really want to use this program as its the only one that fits my needs but I just can't seem to get this to work.

I also have no programming knowledge which is why I'm using this not NanDeck.

Thank you so much!

[Request] Remove the Preview Window

The Preview Window is just a duplicate of the canvas. With zoom on the Canvas functional there is no additional purpose (and it has hooks into the rendering that should not be present).

[Bug] Crash when deleting multiple elements

I found a crash when deleting multiple elements from the 'Layout Control'.

To reproduce:

In a layout with two elements, use shift to select both and remove them

This is also reproducible under many other conditions, especially when deleting multiple elements near the end of the list.

Result:

Varies depending on exact situation but always a complete crash. Sometimes the Element table graphically glitches and the program freezes, sometimes the program immediately crashes. Once a save dialogue appeared and then the program crashed.

Backtrace:

System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: index at System.Windows.Forms.ListView+ListViewItemCollection.get_Item (Int32 index) <0x4041d8e0 + 0x000d7> in <filename unknown>:0 at System.Windows.Forms.ListView.GetItemAtDisplayIndex (Int32 display_index) <0x404254e0 + 0x00067> in <filename unknown>:0 at System.Windows.Forms.ListView.get_FocusedItem () <0x404275d0 + 0x0002b> in <filename unknown>:0 at (wrapper remoting-invoke-with-check) System.Windows.Forms.ListView:get_FocusedItem () at System.Windows.Forms.ListViewItem.get_Focused () <0x40427420 + 0x000eb> in <filename unknown>:0 at System.Windows.Forms.ListView+ListViewItemCollection.RemoveAt (Int32 index) <0x40431b40 + 0x000d7> in <filename unknown>:0 at System.Windows.Forms.ListView+ListViewItemCollection.Remove (System.Windows.Forms.ListViewItem item) <0x40431ab0 + 0x00063> in <filename unknown>:0 at CardMaker.Forms.MDILayoutControl.btnRemoveElement_Click (System.Object sender, System.EventArgs e) <0x40430df0 + 0x0046e> in <filename unknown>:0 at System.Windows.Forms.Control.OnClick (System.EventArgs e) <0x403c0900 + 0x00065> in <filename unknown>:0 at System.Windows.Forms.Button.OnClick (System.EventArgs e) <0x403c0880 + 0x00053> in <filename unknown>:0 at System.Windows.Forms.ButtonBase.OnMouseUp (System.Windows.Forms.MouseEventArgs mevent) <0x403c0470 + 0x000ff> in <filename unknown>:0 at System.Windows.Forms.Button.OnMouseUp (System.Windows.Forms.MouseEventArgs mevent) <0x403c0440 + 0x00013> in <filename unknown>:0 at System.Windows.Forms.Control.WmLButtonUp (System.Windows.Forms.Message& m) <0x403c01f0 + 0x00118> in <filename unknown>:0 at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) <0x40244570 + 0x00217> in <filename unknown>:0 at System.Windows.Forms.ButtonBase.WndProc (System.Windows.Forms.Message& m) <0x40308ab0 + 0x00073> in <filename unknown>:0 at System.Windows.Forms.Button.WndProc (System.Windows.Forms.Message& m) <0x40308a80 + 0x00013> in <filename unknown>:0 at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) <0x40244540 + 0x00024> in <filename unknown>:0 at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) <0x40244500 + 0x00036> in <filename unknown>:0 at System.Windows.Forms.NativeWindow.WndProc (IntPtr hWnd, Msg msg, IntPtr wParam, IntPtr lParam) <0x40242e40 + 0x0031c> in <filename unknown>:0 System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: index at System.Windows.Forms.ListView+ListViewItemCollection.get_Item (Int32 index) <0x4041d8e0 + 0x000d7> in <filename unknown>:0 at System.Windows.Forms.ListView.GetItemAtDisplayIndex (Int32 display_index) <0x404254e0 + 0x00067> in <filename unknown>:0 at System.Windows.Forms.ListView.get_FocusedItem () <0x404275d0 + 0x0002b> in <filename unknown>:0 at (wrapper remoting-invoke-with-check) System.Windows.Forms.ListView:get_FocusedItem () at System.Windows.Forms.ListViewItem.get_Focused () <0x40427420 + 0x000eb> in <filename unknown>:0 at System.Windows.Forms.ThemeWin32Classic.DrawListViewItem (System.Drawing.Graphics dc, System.Windows.Forms.ListView control, System.Windows.Forms.ListViewItem item) <0x40425570 + 0x01193> in <filename unknown>:0 at System.Windows.Forms.ThemeWin32Classic.DrawListViewItems (System.Drawing.Graphics dc, Rectangle clip, System.Windows.Forms.ListView control) <0x403e9000 + 0x001f5> in <filename unknown>:0 at System.Windows.Forms.ListView+ItemControl.OnPaintInternal (System.Windows.Forms.PaintEventArgs pe) <0x403b8f60 + 0x0005a> in <filename unknown>:0 at System.Windows.Forms.Control.WmPaint (System.Windows.Forms.Message& m) <0x403b3e30 + 0x00140> in <filename unknown>:0 at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) <0x40244570 + 0x001f7> in <filename unknown>:0 at System.Windows.Forms.ListView+ItemControl.WndProc (System.Windows.Forms.Message& m) <0x40330ef0 + 0x000ff> in <filename unknown>:0 at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) <0x40244540 + 0x00024> in <filename unknown>:0 at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) <0x40244500 + 0x00036> in <filename unknown>:0 at System.Windows.Forms.NativeWindow.WndProc (IntPtr hWnd, Msg msg, IntPtr wParam, IntPtr lParam) <0x40242e40 + 0x0031c> in <filename unknown>:0

![cardcount] export error with multiple layouts

For a project with multiple layouts, when exporting to PDF or saving images, the ![cardcount] value for all layouts is equal to the ![cardcount] of the bottom-most layout. The bottom-most layout means the layout shown at the bottom of the Project window.

[Request] Support manipulation of rotated Elements in the canvas

  1. The render box for Elements should display the final rotated bounds of a rotated Element (easy!)
  2. The mouse scale/resize functions should operate on rotated Elements (tough!)

Note: I did some research experiments on this and there is a lot of complexity due to the current functionality that rotates around the center of an element. Even when changed to rotate from the upper left corner there are complications. One major issue is that Elements are defined by a Rectangle (x, y, width, height), not 4 discrete points. The solution may well involve converting the Rectangle to 4 discrete points and then translating the final resulting points back into a Rectangle.

If someone loves a good challenge with trigonometry this is your opportunity! I may attempt to tackle this again when I am feeling more patient.

[Bug] Doesn't respect high dpi settings on linux mint cinnamin

Thanks for fixing those other Mono bugs. Thought I would let you know about another I recently found although this one may not be worth fixing as there is an easy work around.

When running linux mint in high dpi mode the fonts used in card layouts are doubled but nothing else is, resulting in text appearing larger then expected when using files created on systems without high dpi set.

Add panning to canvas.

It would be nice to have panning on the canvas by holding down a key and the left mouse button.

[Request] ISO-8859-1 and the CSV file

Hey there!
I'd like to thank you for this great tool and sorry if I missed something before coming here.

I've tried to add some text to my cards, but found these "???" instead of my special characters.
I've attached some screenshots for a better understanding.

If I try to write these special characters directly in the element, they're shown correctly.
But, when I try to add the same text, coming from a CSV reference, the issue occurs.

Are you intending to support ISO-8859-1?
Is it a bug?

Thanks in advance!

iso-8859-1-issue-2-card-maker

iso-8859-1-issue-card-maker

[Request] Load the project level defines file for Layouts without a reference.

Currently if a layout does not have a reference no defines are loaded (not even project level defines). This is kind of annoying and requires a reference of some kind even if the layout does not use it.

This may require a project wide setting to indicate whether to pull the project defines file from local or Google docs as the application at the layout level will have no clue where the defines should be coming from.

Project level export does not respect layout Name Format values

The file names exported default to the standard file name instead of the custom setting of the individual layouts. This only applies to the whole-project image export.

The code around this area needs a bit of reorganization to be less confusing and a bit more maintainable.

preserve transparency in png export

When exporting a card layout as png, you currently get a white background for transparent parts of the card. It would be nice if there was an option to preserve the transparency.

My use case for this is that I want to create cards for a digital prototype in tabletopia and I would like these cards to have rounded corners.

[Request] Add row and column count for stitching functionality.

Currently you can export layouts into a stitched image by specifying the width and height of the target image. It may be useful to let users specify the number of cards in a given row and/column.

See https://www.boardgamegeek.com/thread/1456296/feature-suggestion

There is a further request to dummy out a certain card for use with the Tabletop Simulator that requires the 70th card to be an unused one. On export use a dummy card index to space out the specified position. This will likely be saved at the CardMaker ini level as it is extremely specialized an unlikely to be needed on a per project basis.

Crash when selecting element

I am experiencing a crash when selecting an element from the Canvas after editing an element in the Element Control window.

To reproduce:

Select an element and edit a property such as vertical alignment.

Immediately, (without selecting anything else or activating any other windows) right click on an element in the canvas to select it.

Result:

A broken window with title 'save' and appears and the program no longer responds and must be killed.

Backtrace:

System.ArgumentOutOfRangeException: ControlCollection does not have that many controls Parameter name: index Actual value was 0. at System.Windows.Forms.Control+ControlCollection.get_Item (Int32 index) <0x40b06730 + 0x0018f> in <filename unknown>:0 at System.Windows.Forms.TabControl.GetTab (Int32 index) <0x40b9b000 + 0x00032> in <filename unknown>:0 at (wrapper remoting-invoke-with-check) System.Windows.Forms.TabControl:GetTab (int) at System.Windows.Forms.TabControl+TabPageCollection.get_Item (Int32 index) <0x40b9ae40 + 0x00023> in <filename unknown>:0 at System.Windows.Forms.TabControl.get_SelectedTab () <0x40b9ae00 + 0x00034> in <filename unknown>:0 at System.Windows.Forms.TabControl.OnLeave (System.EventArgs e) <0x40d95dd0 + 0x00017> in <filename unknown>:0 at System.Windows.Forms.Control.FireLeave () <0x40c562b0 + 0x0001e> in <filename unknown>:0 at System.Windows.Forms.ContainerControl.set_ActiveControl (System.Windows.Forms.Control value) <0x40b6e8f0 + 0x0021c> in <filename unknown>:0 at System.Windows.Forms.Control.Select (Boolean directed, Boolean forward) <0x40bb6310 + 0x000d6> in <filename unknown>:0 at System.Windows.Forms.Control.SelectNextControl (System.Windows.Forms.Control ctl, Boolean forward, Boolean tabStopOnly, Boolean nested, Boolean wrap) <0x40b6d1c0 + 0x00216> in <filename unknown>:0 at System.Windows.Forms.ContainerControl.ChildControlRemoved (System.Windows.Forms.Control control) <0x40d04ab0 + 0x001b3> in <filename unknown>:0 at (wrapper remoting-invoke-with-check) System.Windows.Forms.ContainerControl:ChildControlRemoved (System.Windows.Forms.Control) at System.Windows.Forms.Control+ControlCollection.Remove (System.Windows.Forms.Control value) <0x40bc1e70 + 0x00107> in <filename unknown>:0 at System.Windows.Forms.TabControl+ControlCollection.Remove (System.Windows.Forms.Control value) <0x40d043f0 + 0x001eb> in <filename unknown>:0 at System.Windows.Forms.Control+ControlCollection.Clear () <0x40d04280 + 0x000fa> in <filename unknown>:0 at System.Windows.Forms.TabControl+TabPageCollection.Clear () <0x40d04230 + 0x00027> in <filename unknown>:0 at CardMaker.Forms.MDIElementControl.HandleTypeEnableStates () <0x40d01920 + 0x00113> in <filename unknown>:0 at CardMaker.Forms.MDIElementControl.Element_Selected (System.Object sender, CardMaker.Events.Args.ElementEventArgs args) <0x40bd5830 + 0x00083> in <filename unknown>:0 at (wrapper delegate-invoke) <Module>:invoke_void_object_ElementEventArgs (object,CardMaker.Events.Args.ElementEventArgs) at CardMaker.Events.Managers.ElementManager.FireElementSelectedEvent (System.Collections.Generic.List1 listElements) <0x40bd5610 + 0x000bc> in :0
at CardMaker.Forms.MDILayoutControl.listViewElements_SelectedIndexChanged (System.Object sender, System.EventArgs e) <0x40cfff10 + 0x00137> in :0
at System.Windows.Forms.ListView.OnSelectedIndexChanged (System.EventArgs e) <0x40cd1520 + 0x00065> in :0
at System.Windows.Forms.ListView.OnSelectedIndexChanged () <0x40cd0620 + 0x0002a> in :0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.ListView:OnSelectedIndexChanged ()
at System.Windows.Forms.ListViewItem.SetSelectedCore (Boolean value) <0x40cd02c0 + 0x0017f> in :0
at System.Windows.Forms.ListViewItem.set_Selected (Boolean value) <0x40cd0260 + 0x00047> in :0
at CardMaker.Forms.MDILayoutControl.ChangeSelectedElement (System.String sName) <0x40d3a0e0 + 0x00067> in :0
at CardMaker.Forms.MDILayoutControl.Element_Selected (System.Object sender, CardMaker.Events.Args.ElementEventArgs args) <0x40d3a040 + 0x0007f> in :0
at CardMaker.Events.Managers.ElementManager.FireElementSelectRequestedEvent (CardMaker.XML.ProjectLayoutElement zElement) <0x40d39d60 + 0x00067> in :0
at CardMaker.Forms.MDICanvas.contextmenuClick_Handler (System.Object sender, System.EventArgs e) <0x40d39b60 + 0x000f7> in :0
at CardMaker.Forms.MDICanvas.contextmenuOpening_Handler (System.Object sender, System.ComponentModel.CancelEventArgs e) <0x40d39550 + 0x0034b> in :0
at System.Windows.Forms.ToolStripDropDown.OnOpening (System.ComponentModel.CancelEventArgs e) <0x40c8d6a0 + 0x00065> in :0
at System.Windows.Forms.ToolStripDropDown.Show (Point position, ToolStripDropDownDirection direction) <0x40c8ca90 + 0x007bc> in :0
at System.Windows.Forms.ToolStripDropDown.Show (System.Windows.Forms.Control control, Point position) <0x40d39480 + 0x0008b> in :0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.ToolStripDropDown:Show (System.Windows.Forms.Control,System.Drawing.Point)
at System.Windows.Forms.Control.WmContextMenu (System.Windows.Forms.Message& m) <0x40d38f80 + 0x002a3> in :0
at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) <0x40ad6570 + 0x002a7> in :0
at System.Windows.Forms.ScrollableControl.WndProc (System.Windows.Forms.Message& m) <0x40b22980 + 0x00013> in :0
at System.Windows.Forms.ContainerControl.WndProc (System.Windows.Forms.Message& m) <0x40b22900 + 0x0005b> in :0
at System.Windows.Forms.UserControl.WndProc (System.Windows.Forms.Message& m) <0x40b69df0 + 0x0006b> in :0
at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) <0x40ad6540 + 0x00024> in :0
at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) <0x40ad6500 + 0x00036> in :0
at System.Windows.Forms.NativeWindow.WndProc (IntPtr hWnd, Msg msg, IntPtr wParam, IntPtr lParam) <0x40ad4e40 + 0x0031c> in :0
System.ArgumentOutOfRangeException: ControlCollection does not have that many controls
Parameter name: index
Actual value was 0.
at System.Windows.Forms.Control+ControlCollection.get_Item (Int32 index) <0x40b06730 + 0x0018f> in :0
at System.Windows.Forms.TabControl.GetTab (Int32 index) <0x40b9b000 + 0x00032> in :0
at System.Windows.Forms.TabControl.GetTabRect (Int32 index) <0x40d02630 + 0x0001b> in :0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.TabControl:GetTabRect (int)
at System.Windows.Forms.Theming.Default.TabControlPainter.Draw (System.Drawing.Graphics dc, Rectangle area, System.Windows.Forms.TabControl tab) <0x40d01de0 + 0x002c7> in :0
at System.Windows.Forms.ThemeWin32Classic.DrawTabControl (System.Drawing.Graphics dc, Rectangle area, System.Windows.Forms.TabControl tab) <0x40d01d90 + 0x00048> in :0
at System.Windows.Forms.TabControl.Draw (System.Drawing.Graphics dc, Rectangle clip) <0x40d01d40 + 0x0003d> in :0
at System.Windows.Forms.TabControl.OnPaintInternal (System.Windows.Forms.PaintEventArgs pe) <0x40d01cc0 + 0x0005b> in :0
at System.Windows.Forms.Control.WmPaint (System.Windows.Forms.Message& m) <0x40c459f0 + 0x00140> in :0
at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) <0x40ad6570 + 0x001f7> in :0
at System.Windows.Forms.TabControl.WndProc (System.Windows.Forms.Message& m) <0x40b9acd0 + 0x000d3> in :0
at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) <0x40ad6540 + 0x00024> in :0
at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) <0x40ad6500 + 0x00036> in :0
at System.Windows.Forms.NativeWindow.WndProc (IntPtr hWnd, Msg msg, IntPtr wParam, IntPtr lParam) <0x40ad4e40 + 0x0031c> in :0`

[Request] Command line export / functionality

Support some form of command line export that skips opening the UI completely. There are a number of things currently blocking this that rely too heavily on forms. This kind of functionality should be moved into classes so it is possible to differentiate between a command line activity and a winform activity. One example of such a section is the Deck loading that uses a Wait dialog. Deck loading should be broken into winform vs. not. This should also makesthe creation of unit tests a bit easier.

Possible Example: CardMaker -p (path to project) -images=png

This is not a high priority item.

Element Override Support within Definition field

From virtualflesh:

Perhaps extend the idea towards a general implementation. If @[override:...] was interpretable in any element "Definition", then one could universally programmatically set an element's attributes.
For example, an element with name "TypeColorBack" is created in Card Maker. To change its color dynamically, a CSV file contains:

type,override:TypeColorBack:elementcolor
type_1,@[color_@[type]]
type_2,@[color_@[type]]

a DEFINES.CSV file contains:

Define,Value
color_type_1,128255128
color_type_2,010000050

This works, but the CSV column containing "@[color_@[type]]" is tediously cloned. An attribute override in the "TypeColorBack" element's Definition within Card Maker could simplify this, and one could ditch the cloned CSV column. This leads to an override control conflict, but I would guess the CSV file override could take precedence over the element's Definition override.

[Request] Google reference caching

Whenever a Google reference or project wide defines is downloaded from the server, cache it locally. Switching between layouts would load the cache, if it exists. It would feel more responsive than re-downloading the data. Likewise if you open the project it would load the cache if it exists.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.