GithubHelp home page GithubHelp logo

brandoncomputer / vds Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 58.0 797 KB

Visual DialogShell

Home Page: https://dialogshell.com

License: MIT License

PowerShell 100.00%
powershell forms ide visual dot-net forms-generator forms-builder dialogscript dialogshell forms-designer

vds's Introduction

Visual DialogShell

Visual DialogShell is a way forward for DialogScript syntax within Powershell ~ this project exists to provide a vehicle for the spirit of the DialogScript language to continue - providing a concise, powerful, straightforward language with seemingly untyped variables.

Does not compile executables, but does create packages that run on endpoints. The installer also contains no executables, you'll hardly notice.

Further...

What is DialogShell?

It's like jQuery, but for PowerShell.

Yes, but what is DialogShell?

DialogShell is a best effort to preserve the DialogScript language, more importantly it's method of operation into a modern format, PowerShell.

Yes, again, but what is DialogShell?

DialogShell is this PowerShell module. https://github.com/brandoncomputer/vds/blob/master/vds.psm1

Yes, but there's obviously more than that here, so what is DialogShell?

Visual DialogShell is a visual programming language, a product of DialogShell, which is a PowerShell module. It contains a packager that encompasses the codebase that allows you to create new solutions in the DialogShell language (derived from PowerShell and DialogScript) for end user applications. Alternately you can call to the codebase vds.psm1 (dialogshell!) and make the deliverable a PowerShell script.

Why do I need DialogShell?

Why should you be interested in DialogShell when C++, C# and Visual Basic are all similarly suited to the task of visual programming? DialogScript is amazing at one thing: The Law of Demeter, or principle of least knowledge. PowerShell is good at this, but not as good as DialogScript. The Law of Demeter is why people love PowerShell, DialogShell builds on this strength to allow users to quickly build powerful solutions. If you are solution oriented, DialogShell should appeal to you.

Project Board

https://github.com/brandoncomputer/vds/projects/1

Issue Velocity Points

Leave a comment under any task you'd like to be assigned to in the format [n][n] where n is a fibonacci number, the first representing how complex you feel the issue is, and the second representing how much effort you feel it will take to resolve. Average the new complexity with the existing complexity number, and the effort with the existing effort number. In the title, the very first [n] gets incremented by 1 if an item is incomplete and on the project board at the end of a week to notate it's tardiness/ability to be reassigned.

I believe in simplicity. If you want to update the project, but don't want to geek out, zip your solution and attach it to the issue comments. I'll review and commit it for you when time permits. You can bug me about it to get it done faster, I don't mind.

Getting Started

Compile order: make.bat (recently simplified)

Prerequisites

Windows XP or above with Powershell is the primary prerequisite.

DialogShell comes with it's own IDE.

Example script syntax:

$form1 =   dialog create "Hello World" 500 500 300 300
$button1 = dialog add $form1 button 10 10 100 20 "Click Me"

$timer = timer 1000
$timer.add_Tick({
console "Tick"
})

$button1.add_Click({
$info = $(chr 34) + "Hello World!" + $(chr 34)
info $info #Comment: We could have just called called the string directly from the info command, but it's more fun to show a defined object (variable)
})

$button1.add_MouseHover({
console "you are hovering!"
})


dialog show $form1

#Code pauses execution when the form is shown.

#:CLOSE

console $(dlgprops $button1)

console "exit"
exit

#END SCRIPT

In relation to DialogScript and not necessarily Powershell

(Powershell will not abide comma's. We must get over this and move on.) $OBJECT - This can be a jumpto, an object or a variable. $(FUNCTION PARAM1 PARAM2) - This is how function calls are made. COMMAND PARAM1 PARAM2 - This is how commands are called.

As seen above a special exception has been made for DIALOG. According to DialogScript, DIALOG would now be a function (@dialog()) but we are not doing that. I do however recommend calling the dialog command as an object that can be acted upon - otherwise you can't act on it. (When you think about it, this was also true in previous implementations of DialogScript, because the dialog command abstracted the user defined name of each dialog object (dialog select,0 or BUTTON1) - so this is arguably a non-change).

New events are available for most objects you are familiar with, use the new function dlgprops $(dlgprops $object) to discover stuff such as $button1.add_MouseHover above, this also can return the value of a property like $(dlgprops $button1 Text).

Authors

License

This project is licensed under the MIT License - see the license.md file for details

Acknowledgments

Julian Moss (jules)
Alex Z
FreezingFire
Skit3000
Garrett
LiquidCode
Mac
Serge
vdsalchemist
Dr. Dread
CodeScript
PGWARE
jwfv
Tommy
seeminglyscience
DalonP

vds's People

Contributors

brandoncomputer avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

vds's Issues

Repath several functions due to Elevation of privlege & bugs

Need to be mindful of new install elevation of privlege contstraints due to pf install path. This applies to examples, themes, wizards etc.

Program must operate without elevation in the userspace.

May need to repath several IDE functions.

Items for review
Compile GUI start directory
Plugins Enable/Disable functions
Plugins > Examples
Plugins > Wizards
Plugins > Themes (all subitems)

Revert PS 7 branch code

Change to where module lives means PS 7 branch code no longer required in vds-ide.ps1, vds-ide-noscale.ps1

Dialog Designer

Dialog Designer either needs to run in legacy scale mode or we need to notify user.
This does pose a problem, because the entire IDE is now linked.

When IDE fonts are smooth at scale, Dialog Designer does not work properly. When Dialog Designer works properly, the fonts are improperly scaled and ugly to look at.

If we backtrack on DD integration, problems will occur printing to window and having a direct script reference.

For short term, probably a notice to the user to launch the application at 100% scale will suffice.

Drive adoption, prepare for release

To drive adoption, let's change the way we think about Dialogshell. Previously, we viewed this as an application suite built in the powershell language, let's regear this.

Going forward, we will view Dialogshell as a powershell module, and will restructure the installation and use around this scenario ~ since this is no longer a collection of exectuable files that output executable files this just makes more sense.

As part of this, may want to consider rebranding some of the utility of the module ~ right now Dialogshell exists in an awkward space. Let's try and conform a bit.

Flagged as PUA by ClamAV

Furstrated. I've literally spent probably a hundred hours bending to the will of many security vendors. I'm over it. Won't fix.

dsform open dialog won't accept a directory path

where
$global:openform = filedlg("DialogShell Form|*.dsform")

a second parameter for directory will not accept even though it works in another part of the software.

This is a wanted feature add that causes the software to crash.
Wontfix

Make IDE optional, gear users AWAY from it.

This will require a redesign of the workflow for DialogShell Designer (which needed more emphasis anyway), Compile-GUI and DialogShell Console.

Let's emphasize that the GUI is an EXAMPLE and is NOT a core component of the module, as good as it may be.

Review powershell gallery submission standards

Make certain module is fit to publish.

IE, DialogShell is not PARAMETER oriented, it is ARGUMENT oriented, and this is CORE to the application, and is a possible cause of potential module rejection.

DialogShell does not conform to Powershell langauge perse, because it is NOT Powershell on purpose. It's DialogScript.

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.