#usage "Export of Palette\n" "

" "This ULP can export your current color palette or all palettes as an EAGLE script file." "

" "Author: jorge@cadsoftusa.com" /****************************************************************************** * Jorge Garcia, CadSoft Computer * March 14, 2016 * * Copyright (c) 2016 Newark, Premier Farnell DBA CadSoft Computer * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. ******************************************************************************/ /****************************************************************************** * REVISION HISTORY * * * * V1.0 Initial Release- export_palette() by Franz * * * ******************************************************************************/ /****************************************************************************** * GLOBAL VARIABLES AND DEFINITIONS * ******************************************************************************/ string Version = "1.0"; /****************************************************************************** * NON-GUI FUNCTIONS * ******************************************************************************/ /****************************************************************************** * export_palette() * Description: This function outputs a .scr file which contains either the * current palette or all of the palettes depending on the * value of the currentPalette argument. * * Argument(s): filePath Contains the path for the output file * * currentPalette 0 = output all of the palettes * 1 = output only the current palette * * Caller(s): main() * ******************************************************************************/ void export_palette(string filePath, int currentPalette) { output (filePath, "wt") { string PaletteNames[]; PaletteNames[PALETTE_BLACK] = "black"; PaletteNames[PALETTE_WHITE] = "white"; PaletteNames[PALETTE_COLORED] = "colored"; for (int t = 0; t < PALETTE_TYPES; ++t) { if (currentPalette && (palette(0) != palette(0, t))) { continue; } printf("\nset palette %s;\n\n", PaletteNames[t]); for (int i = t == PALETTE_WHITE ? 1 : 0; i < PALETTE_ENTRIES; ++i) { printf("set palette %2d 0x%08X;\n", i, palette(i, t)); } if (currentPalette) { break; } } } exit(EXIT_SUCCESS); } /****************************************************************************** * MAIN() * ******************************************************************************/ int main() { int paletteSelection = 0; string outputPath = path_scr[0] + '/' + "palette-sample.scr"; int result = dlgDialog("Export Palette") { dlgGridLayout { dlgCell(0,0,1,1) { dlgGroup("Export:") { dlgRadioButton("All Palettes", paletteSelection); // paletteSelection = 0 dlgRadioButton("Current Palette", paletteSelection); // paletteSelection = 1 } } dlgCell(2,0) dlgLabel("Path:"); dlgCell(2,1) dlgStringEdit(outputPath); dlgCell(2,2) dlgPushButton("Browse...") { string newPath; newPath = dlgFileSave("Please select where to store Palette script", outputPath , "*.scr"); if (newPath) { if(fileext(newPath) != ".scr") { newPath = newPath + ".scr"; } outputPath = newPath; } } dlgCell(3,0,3,2) dlgHBoxLayout { dlgStretch(1); //Allows for a larger dialog and avoids buttons being streched out dlgPushButton("Export") export_palette(outputPath, paletteSelection); dlgPushButton("-Cancel") dlgReject(); } dlgCell(4,1) dlgSpacing(400); //Allows the outputPath field to have some width } }; return result; }