diff options
| author | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-08-15 17:28:00 +0200 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-08-15 17:28:00 +0200 |
| commit | f67e92f55b6223f2806c3d5ef1cbe2a638920562 (patch) | |
| tree | f567321e40d03e6f1e6d31338ef3db2eff988e91 /libs/tinyfiledialogs/hello.c | |
| parent | 572caa74ed824fefa02eb81adc7639a783f243c7 (diff) | |
working on invoice form
Diffstat (limited to 'libs/tinyfiledialogs/hello.c')
| -rw-r--r-- | libs/tinyfiledialogs/hello.c | 307 |
1 files changed, 307 insertions, 0 deletions
diff --git a/libs/tinyfiledialogs/hello.c b/libs/tinyfiledialogs/hello.c new file mode 100644 index 0000000..64476d3 --- /dev/null +++ b/libs/tinyfiledialogs/hello.c @@ -0,0 +1,307 @@ +/* SPDX-License-Identifier: Zlib +Copyright (c) 2014 - 2024 Guillaume Vareille http://ysengrin.com + ________________________________________________________________ + | | + | 100% compatible C C++ -> You can rename this .c file as .cpp | + |________________________________________________________________| + +********* TINY FILE DIALOGS OFFICIAL WEBSITE IS ON SOURCEFORGE ********* + _________ + / \ hello.c v3.19.3 [Jul 28, 2025] + |tiny file| Hello World file created [November 9, 2014] + | dialogs | + \____ ___/ http://tinyfiledialogs.sourceforge.net + \| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd + ____________________________________________ + | | + | email: tinyfiledialogs at ysengrin.com | + |____________________________________________| + _________________________________________________________________________________ + | | + | the windows only wchar_t UTF-16 prototypes are at the bottom of the header file | + |_________________________________________________________________________________| + _________________________________________________________ + | | + | on windows: - since v3.6 char is UTF-8 by default | + | - if you want MBCS set tinyfd_winUtf8 to 0 | + | - functions like fopen expect MBCS | + |_________________________________________________________| + ___________________________________________________________ + | | + | v3.10: NEW FORTRAN module fully implemented with examples | + | https://stackoverflow.com/a/59657117 | + |___________________________________________________________| + +If you like tinyfiledialogs, please upvote my stackoverflow answer +https://stackoverflow.com/a/47651444 + +- License - + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgment in the product documentation would be +appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ + + +/* +- Here is the Hello World: + if a console is missing, it will use graphic dialogs + if a graphical display is absent, it will use console dialogs + (on windows the input box may take some time to open the first time) + + See compilation instructions at the end of this file + + __________________________________________ + | ______________________________________ | + | | | | + | | DO NOT USE USER INPUT IN THE DIALOGS | | + | |______________________________________| | + |__________________________________________| +*/ + +#include <stdio.h> +#include <string.h> +#include "tinyfiledialogs.h" + +#ifdef _MSC_VER +#pragma warning(disable:4996) /* silences warnings about strcpy strcat fopen*/ +#endif + +int main( int argc , char * argv[] ) +{ + int lIntValue; + char * lPassword; + char * lTheSaveFileName; + char * lTheOpenFileName; + char * lTheSelectFolderName; + char * lTheHexColor; + char * lWillBeGraphicMode; + unsigned char lRgbColor[3]; + FILE * lIn; + char lBuffer[1024]; + char const * lFilterPatterns[2] = { "*.txt", "*.text" }; + + (void)argv; /*to silence stupid visual studio warning*/ + + tinyfd_verbose = argc - 1; /* default is 0 */ + tinyfd_silent = 1; /* default is 1 */ + + tinyfd_forceConsole = 0; /* default is 0 */ + /* tinyfd_assumeGraphicDisplay = 0; */ /* default is 0 */ + +#ifdef _WIN32 + tinyfd_winUtf8 = 1; /* default is 1 */ +/* On windows, you decide if char holds 1:UTF-8(default) or 0:MBCS */ +/* Windows is not ready to handle UTF-8 as many char functions like fopen() expect MBCS filenames.*/ +/* This hello.c file has been prepared, on windows, to convert the filenames from UTF-8 to UTF-16 + and pass them passed to _wfopen() instead of fopen() */ +#endif + + tinyfd_beep(); + + lWillBeGraphicMode = tinyfd_inputBox("tinyfd_query", NULL, NULL); + + strcpy(lBuffer, "tinyfiledialogs\nv"); + strcat(lBuffer, tinyfd_version); + if (lWillBeGraphicMode) + { + strcat(lBuffer, "\ngraphic mode: "); + } + else + { + strcat(lBuffer, "\nconsole mode: "); + } + strcat(lBuffer, tinyfd_response); + tinyfd_messageBox("hello", lBuffer, "ok", "info", 0); + + tinyfd_notifyPopup("the title", "the message\n\tfrom outer-space", "info"); + + if ( lWillBeGraphicMode && ! tinyfd_forceConsole ) + { +#if 0 + lIntValue = tinyfd_messageBox("Hello World", "\ +graphic dialogs [Yes]\n\ +console mode [No]\n\ +quit [Cancel]", + "yesnocancel", "question", 1); + if (!lIntValue) return 1; + tinyfd_forceConsole = (lIntValue == 2); +#else + lIntValue = tinyfd_messageBox( + "Hello World", "graphic dialogs [Yes] / console mode [No]", + "yesno", "question", 1); + tinyfd_forceConsole = ! lIntValue; +#endif + } + + lPassword = tinyfd_inputBox( + "a password box", "your password will be revealed later", NULL); + + if (!lPassword) return 1; + + tinyfd_messageBox("your password as read", lPassword, "ok", "info", 1); + + lTheSaveFileName = tinyfd_saveFileDialog( + "let us save this password", + "./passwordFile.txt", + 2, + lFilterPatterns, + NULL); + + if (! lTheSaveFileName) + { + tinyfd_messageBox( + "Error", + "Save file name is NULL", + "ok", + "error", + 1); + return 1 ; + } + +#ifdef _WIN32 + if (tinyfd_winUtf8) + lIn = _wfopen(tinyfd_utf8to16(lTheSaveFileName), L"w"); /* the UTF-8 filename is converted to UTF-16 to open the file*/ + else +#endif + lIn = fopen(lTheSaveFileName, "w"); + + if (!lIn) + { + tinyfd_messageBox( + "Error", + "Can not open this file in write mode", + "ok", + "error", + 1); + return 1 ; + } + fputs(lPassword, lIn); + fclose(lIn); + + lTheOpenFileName = tinyfd_openFileDialog( + "let us read the password back", + "../", + 2, + lFilterPatterns, + "text files", + 1); + + if (! lTheOpenFileName) + { + tinyfd_messageBox( + "Error", + "Open file name is NULL", + "ok", + "error", + 0); + return 1 ; + } + +#ifdef _WIN32 + if (tinyfd_winUtf8) + lIn = _wfopen(tinyfd_utf8to16(lTheOpenFileName), L"r"); /* the UTF-8 filename is converted to UTF-16 */ + else +#endif + lIn = fopen(lTheOpenFileName, "r"); + + if (!lIn) + { + tinyfd_messageBox( + "Error", + "Can not open this file in read mode", + "ok", + "error", + 1); + return(1); + } + + lBuffer[0] = '\0'; + fgets(lBuffer, sizeof(lBuffer), lIn); + fclose(lIn); + + tinyfd_messageBox("your password as it was saved", lBuffer, "ok", "info", 1); + + lTheSelectFolderName = tinyfd_selectFolderDialog( + "let us just select a directory", "../../"); + + if (!lTheSelectFolderName) + { + tinyfd_messageBox( + "Error", + "Select folder name is NULL", + "ok", + "error", + 1); + return 1; + } + + tinyfd_messageBox("The selected folder is", lTheSelectFolderName, "ok", "info", 1); + + lTheHexColor = tinyfd_colorChooser( + "choose a nice color", + "#FF0077", + lRgbColor, + lRgbColor); + + if (!lTheHexColor) + { + tinyfd_messageBox( + "Error", + "hexcolor is NULL", + "ok", + "error", + 1); + return 1; + } + + tinyfd_messageBox("The selected hexcolor is", lTheHexColor, "ok", "info", 1); + + tinyfd_messageBox("your read password was", lPassword, "ok", "info", 1); + + return 0; +} + +#ifdef _MSC_VER +#pragma warning(default:4996) +#endif + +/* +OSX : +$ clang -o hello.app hello.c tinyfiledialogs.c +( or gcc ) + +UNIX : +$ gcc -o hello hello.c tinyfiledialogs.c +( or clang tcc owcc cc CC ) + +Windows : + MinGW needs gcc >= v4.9 otherwise some headers are incomplete + > gcc -o hello.exe hello.c tinyfiledialogs.c -LC:/mingw/lib -lcomdlg32 -lole32 + + TinyCC needs >= v0.9.27 (+ tweaks - contact me) otherwise some headers are missing + > tcc -o hello.exe hello.c tinyfiledialogs.c ^ + -isystem C:\tcc\winapi-full-for-0.9.27\include\winapi ^ + -lcomdlg32 -lole32 -luser32 -lshell32 + + Borland C: > bcc32c -o hello.exe hello.c tinyfiledialogs.c + OpenWatcom v2: create a character-mode executable project. + + VisualStudio : + Create a console application project, + it links against comdlg32.lib & ole32.lib. + + VisualStudio command line : + > cl hello.c tinyfiledialogs.c comdlg32.lib ole32.lib user32.lib shell32.lib /W4 +*/ |
