Giter Site home page Giter Site logo

dfl2's Introduction

DFL2

DFL2, or D Forms Library 2, is a GUI library for Windows.
DFL2 is based on original DFL by Christopher E. Miller, which was abandoned in 2011.
This project is an attempt to bring DFL to modern D2 and make it a viable alternative to other existing GUI libraries.
Latest DMD version that compiles the library - 2.108.0

Linker dependencies:

advapi32.lib, comdlg32.lib, comctl32.lib, gdi32.lib, ole32.lib, oleaut32.lib, ws2_32.lib, uuid.lib and user32.lib

How to start:

git clone https://github.com/DeenOConnor/dfl2
Copy dfl2\source\dfl folder to your project
Use with import dfl.all;

The latest features:

1 - It works.
2 - Strings are all UTF-16 (or WCHAR) where possible. Respective WinAPI calls are also WCHAR.
3 - Full 64-bit support at the cost of not supporting 32-bit.
4 - Some additional features that don't exist in original DFL.

How to build separately:

Your best option is to use Visual Studio with VisualD extension to open and build the project.
Building with DMD only is also possible, starting in dfl2\source folder:
To generate a .lib file dmd -m64 -J=dfl -lib -of="..\dfl2.lib" dfl\package.d
DLLs are not supported for now Build command tested with powershell on windows 10 22h2

Screenshots:

IntelliSense in VS 2022

dfl's intellisense in VS 2022

dfl2's People

Contributors

deenoconnor avatar franklike avatar darkhole1 avatar deviator avatar

dfl2's Issues

Known bugs, enhancements and features

to-do-list

Whatever is checked is fixed/done and will be removed later.
What isn't checked is being worked on in no particular order.
Everyting in Checks is what i'm yet to test properly.

Known bugs:

  • Fix note text not displaying for BS_COMMANDLINK buttons
  • Fix selection for split buttons

Updates to existing components:

  • Upgrade all remaining WinAPI A functions and types to W (relates to text bugs above)
  • Rewrite overloads of msgBox to use default argument values
  • Remove compatibility code. Noone realistically will use DFL2 with Win98 or DMD 0.9.8

New features:

  • Add trackbar control
    • Fix DFL name not working (?)
  • Revisit and implement dark mode:
    • Make Application know if system is set to dark mode
    • DwmSetWindowAttribute() to paint title bar black if set to dark mode
    • Fix GetThemeData() consistently returning null for GroupBox
    • Automatically adjust colors with GetSysColor() or GetSysColorBrush() to light/dark mode
    • Let all controls with custom drawing know they have something that overrides default colors
    • Application.enableDarkMode() or something like this to not break compatibility

Checks:

  • Check if ComboBox has any remaining issues
  • Check if ToolTip works
  • Check if ToolBar works
  • Check what PictureBox can and can't do
  • Check if Clipboard works
  • Check FileOpenDialog and FileSaveDialog, including making them follow dark mode

Text issues with GroupBox and Label

GroupBox doesn't show all the text, instead it clips just a few characters before the end.
Label always renders with empty text initially, even if explicitly set with Label.text property.

Caught when creating controls with Entice Designer, which is definitely not an intended behaviour.
Quick run with debugger showed that for some reason their wtext field becomes empty once the constructor finishes. Re-setting the field from somewhere else, even immediately after new Form() is a valid workaround only for Label.

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.