nvdialog

NvDialog is a C library that lets you create modal dialog boxes, file dialogs, notifications and other kinds of popups using the system's native API for user interfaces.

MIT License

Stars
45

Bot releases are hidden (Show)

nvdialog - v0.8.1 Latest Release

Published by tseli0s 8 months ago

v0.8.1

This is a patch release that fixes some bugs from the v0.8.0 release. Read the changelog below for further details. If you intend to run your application on Apple-based systems, then an upgrade may be necessary.

Changelog

  • MacOS about dialog support returned (#50)
  • (BREAKING) Removed first parameter on nvd_init, which was already unused since v0.7 (Previously compiled executables may not work)
  • Fixed some compiler warnings on Windows.
  • Add icon support for NvdAboutDialog on Windows. (This may not work as expected yet, the next release will fix any bugs, especially with Wine)
  • Many improvements in NvdAboutDialog on Gtk3.
  • Documentation improvements
  • Fix NvdAboutDialog on Linux not having an icon.
  • NvdDialogBox will no longer be marked as a popup on Linux/Gtk3. This will fix incorrect positioning on Wayland/GNOME.

Full Changelog: https://github.com/tseli0s/nvdialog/compare/v0.8.0...v0.8.1

nvdialog - v0.8.0

Published by tseli0s 10 months ago

v0.8.0

Apologies for the delay on this release. Although it did take some time due to me working on other projects simultaneously, it is a massive release with many bugs fixed and many improvements added. Make sure to read the changelog carefully; Some of these changes may break older binaries! (Though they shouldn't)

Changelog

  • You can now set the dialog button text to a custom one.
  • Dialogs in Gtk3 are now unresizable, due to artifacts formed on some systems
    when resizing and worsened looks.
  • Dialogs are now marked as popup windows and not toplevel ones.
  • On the Windows backend, NvDialog will now check if sending the notification to the user was successful.
  • Added destructors on notification objects, to avoid memory leaks.
  • Fixed some compiler warnings regarding const assignments when compiling the library.
  • Fixed Cocoa backend using different implementations of (public) types due to unmaintained code.
  • nvd_get_capabilities() will now set an error code if the query is not supported (eg. Invalid enum).
  • Removed unused functions within the library.
  • Fixed nvd_dialog_box_set_accept_text crashing on Linux.
  • Reduced memory usage by the library (See 3d967e7)
  • Fixed missing declaration warning on the Gtk backend.
  • Completely removed styling functions (Already deprecated since v0.7.0)
  • Increased shared file version to 2 (Output files may contain libnvdialog.so.2 now)
  • Fixed libnotify not loading on Linux (See #44 for details)
  • Fixed a bug where NvDialog would abort the entire process despite no failure happening.
  • Fixed dialog not disappearing after pressing the accept button (See #42)

Full Changelog: https://github.com/tseli0s/nvdialog/compare/v0.7.0...v0.8.0

nvdialog - v0.7.0

Published by tseli0s over 1 year ago

Not a spectacular release, but surely better than nothing. This was planned for May 1st but I decided to leave it for the weekend. Enjoy :)

Changelog

  • Gtk dialogs will now be guaranteed to have their title set.
  • Gtk dialogs are now modal, meaning the user can't skip over them without
    responding to them.
  • NvDialog will check if it has been initialized before any API call.
  • Added extra null pointer / invalid parameter checking.
  • nvd_init: The parameter 'program' of the function is now deprecated.
  • Initial work towards sandbox support (See #36), based off the Gtk3 backend.
  • File dialogs now support extension filters. See documentation.
  • Fixed notifications on Linux failing, NvDialog will now handle dlopen() errors.
  • All global static variables now are thread local, to improve safety on some platforms.
  • GitHub workflows now use a target triple naming (arch-device-os-toolchain, eg.
    x86_64-pc-windows-msvc)
  • C standard is now required to be at least 2011 or newer (See https://github.com/tseli0s/nvdialog/commit/c7e68a04fded266e819e46851b13d74de64cb133).
  • Deprecated styling support (Now all backends will just return a "fail value" like a NULL pointer or a negative integer).

Full Changelog: https://github.com/tseli0s/nvdialog/compare/v0.6.1...v0.7.0

nvdialog - v0.6.1 (Patch)

Published by tseli0s over 1 year ago

Release v0.6.1

Mainly fixes some bugs on a few newer distros. Recommended to upgrade if you notice issues with your application.
For extensive commit message click here: https://github.com/AndroGR/nvdialog/compare/v0.6.0...v0.6.1

Changelog

  • Fixed initialization call failing on Gtk3.
  • New NvdError member: NVD_BACKEND_FAILURE.
  • Fixed some build warnings.
nvdialog - v0.6.0

Published by tseli0s over 1 year ago

v0.6.0

This release includes a series of bug fixes and additions. It's a release that took time as there was a lot of work on all backends.
For a full changelog, see here: https://github.com/AndroGR/nvdialog/compare/v0.5.0...v0.6.0

Changelog

  • Removed domain name support in favor of plain application names.
  • Added application name support.
  • Added macOS support (Thanks to: @Frityet)
  • Fix nvd_get_error return type.
  • Dialogs will now be destroyed immediately after closing them.
  • Added NVD_API macro to export functions to Windows (or import them). This will only be used internally for better optimization.
  • Fixed nvd_about_dialog_gtk not working properly under the Gtk3 backend when custom icons were used instead of the default ones.
  • New function: nvd_add_notification_action. The description of this function is rather long,
    see include/nvdialog_notification.h for the declaration and its documentation.
  • nvd_init will check if the library has been initialized already and return if so.
  • Fixed some build errors on newer distributions (Especially on the Adwaita backend).
  • Improved the documentation largely. Now doxygen will be used to generate documentation.
  • Setting the environment variable NVD_NO_NOTIFS to 1 will disable the libnotify dependency
    on Unix systems.
  • New website for the library, created entirely with Doxygen: https://androgr.github.io/nv.dialog/ .
    From now on, the website will also be constantly updated with new documentation.
  • Added notification support for Windows (Vista and above will work only).
  • Fixed the Gtk4 file dialog not working.

New Contributors

nvdialog - v0.5.0

Published by tseli0s almost 2 years ago

Release

This release is the first fully-complete release of NvDialog, focusing largely on stability. From now on, new features will only be added if all backends support them. There was an exception for the styling API (See the changelog below) as it could only be implemented for Gtk3.

Changelog

  • Added custom CSS stylesheet support (NvdCSSManager).
  • Added notification support (NvdNotification).
  • Added testing units in CI.
  • Fix nvd_stringify_error returning invalid pointer, causing undefined behavior.
  • Added two new library errors:
    - NVD_FILE_INACCESSIBLE (A file NvDialog tried to access is not accessible),
    - NVD_BACKEND_INVALID (A backend is invalid, eg. A symbol can't be accessed)
  • Added NVD_VERSION macro -- Stores the compile time version of NvDialog to the NvdVersion variable passed.
  • Added nvd_*_get_raw() functions -- Allows to get the window implementation behind the dialog to use for the styling API.
  • Added pkg-config script to make NvDialog compatible with other build systems.
  • Removed previously deprecated functions.
  • NvDialog can now build with other compilers than GCC and CLang.
  • On Adwaita backend, the NvdAboutDialog will now use AdwAboutWindow instead, to make development easier.
  • Added NvdFileDialog support for save file dialog, mostly working.

Full Changelog: https://github.com/AndroGR/nvdialog/compare/v0.3.0...v0.5.0

nvdialog - v0.3.0

Published by tseli0s almost 2 years ago

About

v0.3.0 is released, bringing a lot of fundamental changes to NvDialog. See the changelog below for more.
Along with the changes on the library's API, and others described below, as you can see you can now download NvDialog precompiled for your platform. Feel free to use them if you want something that "works".

Changelog

  • Changed the API to now use a new model, where creating and showing the dialog window are now seperate tasks.
  • Rewritten the NvdAboutDialog with a better UI for Linux.
  • The source code tree is now reorganized in a much better working model.
  • On Arch Linux, packages are going to be built from the local source code instead of the remote repository one, to allow for better integration with the package manager and stability.
  • The Adwaita backend is no longer experimental, and has become the default backend on Unix systems.
  • Fix NvdFileDialog not working under the Gtk3 backend.
  • Refreshed the website a little.
  • Added CI, to better test if NvDialog is working properly across platforms. (WIP)
  • Resulting shared library version has now been increased to 1. (f3128b6)
  • Once again, updated the logo. This time it's much more modern and beautiful.

Full Changelog: https://github.com/AndroGR/nvdialog/compare/v0.2.0...v0.3.0

nvdialog - v0.2.0

Published by tseli0s about 2 years ago

Changelog

  • Fixed compilation errors on all backends (Especially Windows).
  • API Upgraded to 0.2.0
  • New function: nvd_about_dialog_new - Shows a window with information about your application.
  • New functions:
    - nvd_set_parent - Allows to set a foreign window as the parent of every dialog.
    - nvd_get_parent - Returns the current parent window or NULL otherwise.
    - nvd_delete_parent - Marks that no window is currently considered the parent.
  • Implemented Gtk4 backend (Currently still experimental).
  • nvd_about_dialog_new -> Window size is now more compact (Gtk3 only)
  • Simple dialogs are no longer resizable (Gtk3 only).
  • Fixed a bug where the process would remain open even though all the windows were closed.
  • Added a function to query NvDialog's capabilities at runtime. (7511aaf)
  • setlinebuf(stdout) will no longer be called on Windows.
  • NvDialog's website is ready (Click Here)
  • nvd-shell is no longer part of this project, considered deprecated until later notice.
  • Fixed a bug in nvd_stringify_error where a local string would be returned instead of a heap one.
  • Assertion failures no longer output red text.
  • Function names are now using a GCC extension to allow main to become int main(int, char**).
  • Ported API changes to Windows.
  • Added PKGBUILD for Arch Linux.
nvdialog - v0.1.3

Published by tseli0s about 2 years ago

Changelog

  • Fixed multiple compiler / linker errors
  • Fixed a buffer overflow by using NVDIALOG_MAXBUF instead of a fixed 128 byte buffer.
  • New function (Incomplete): nvd_about_dialog_new. This function shows a simple dialog similar to those found in some 'About' app menu items. It will be stabilized in 0.2.
  • Added new example.
  • Removed deprecated code, replaced with more modern and accurate alternatives.
  • Partial libadwaita support complete.
  • New assertion system.
  • Remove fallback backend, replaced with raw runtime assertions.
  • Headers are now installed inside the nvdialog/ directory in the standard include directory.
  • New logo (May change again)

Full Changelog: https://github.com/AndroGR/nvdialog/compare/v0.1.2...v0.1.3

Warning

This release brings alot of new features since 0.1.2. This means code linked with the previous version has a chance of breaking. Since nvdialog can't guarantee everything works, make sure to open issues for API breakage. However, the main changes will only be detected at compile time since everything existing hasn't changed much.

nvdialog - v0.1.2

Published by tseli0s about 2 years ago

Changelog

  • Fixed multiple miscalleneous bugs from 0.1.1 and a few memory leaks.
  • Fixed compile error with the Makefie.
  • Initial work towards Gtk4 and libadwaita porting.
  • Update legacy code to v0.1.2

Full Changelog: https://github.com/AndroGR/nvdialog/compare/v0.1.1...v0.1.2

nvdialog - v0.1.1

Published by tseli0s about 2 years ago

Changelog

  • Fixed memory bugs from the library.
  • Returned strings are now returned as strdup() to avoid undefined behavior (Remember to free them).
  • Documentation on its way by v0.2.0.
  • Added nvd_dialog_question_new | This function creates a question dialog. A variant for custom buttons is also coming soon.
  • Fixed some header issues.
  • New build system: Unix Makefiles. This is primarily targeting older systems where the CMake version isn't low enough.
  • Initial work towards optional Gtk4 support.

Full Changelog: https://github.com/AndroGR/nvdialog/compare/v0.1.0...v0.1.1

nvdialog - v0.1.0

Published by tseli0s about 2 years ago

Changelog

This changelog only covers changes since August 31

  • Added support for Windows
  • Ported all Unix functionality on the Windows side.
  • Added minimal Rust support, currently in alpha stage.
  • New function (Still a WIP): nvd_open_file_dialog_new(). This function opens a window that asks for a file through a GUI interface. Not working on Windows and Flatpak, and Unix implementation is still buggy.
  • Fixed a bug where the (dialog) process would remain active after closing the window without pressing OK.
  • Fixed compilation errors on Windows.
  • CMake will no longer attempt to install the built files and headers anywhere.