|By: Paul S. Cilwa||Viewed: 12/7/2023
|Page Views: 798|
|Creating Organica's visual structure.|
In computing, a shell is a computer program which exposes an operating system's services to a human user or other program. In general, operating system shells use either a command-line interface or graphical user interface, depending on a computer's role and particular operation. It is named a shell because it is the outermost layer around the operating system.
In an earlier incarnation of Organica, the entire layout was done in HTML/CSS in a web browser control. It loaded quickly and cleanly. Unfortunately, it made it tricky to support opening an existing web page as a document. So it's back to the drawing board, and this time the web browser control will display the document only, and none of the control features.
Here's a graphic showing where we want each page component to appear. Note that not all components must appear on every page. But this shows the relative positions of the components when they do appear.
Each section should be adjustable in size, and should retain its relative proportions should the application window be resized.
To achieve this, we'll create a pair of related custom user controls: MultiPanel to act as host to individual panels, and ProportionedPanel to provide a place for standard controls (such as a navigational TreeView or a Toolbox) to live. By making the MultiPanel control able to deal with horizontal or vertical layouts, and making it possible for a horizontal MultiPanel to be placed into a vertical MultiPanel should allow for the most complex arrangements.
While Organica is intended to be an alternative shell for an operating system such as Windows 10, as a program it also has a shell. In this section, we'll create that shell, as well as learn the following techniques.
Create a UserControl proportionate container
Suppress unneeded properties inherited from the base class
Create custom properties
Organica: Visual Basic project
|By: Paul S. Cilwa||Posted: 6/22/2021
||Page Views: 666|
|Topics: #Organica #VB.NET #VisualStudio|
|Creating the Visual Basic Organica project.|
On this page we'll create the basic Organica project. including the main form.
Organica: Percentage class
|By: Paul S. Cilwa||Posted: 6/28/2021
||Page Views: 801|
|Topics: #object-orientedprogramming #Organica #Percentageclass #Shell #VB.NET|
|A general purpose class for easily calculating percentages and values without bothering with all that math stuff.|
I have dyslexia, and as a partial consequence I can never get the equation for calculating percentages right on the first try. Which side does the 100 go on, and is it divide or multiply? And so, for me at least, it makes sense to get it right once…in a reusable function (or, better yet, object) that I can reference by name when needed? And thus is born the Percentage class.
Organica: SqueezeBox control
|By: Paul S. Cilwa||Posted: 6/23/2021
||Page Views: 404|
|Topics: #Organica #PostFilterProperties #Shell #UserControl|
|Creating the basic SqueezeBox user control.|
Visual Basic comes with a number of splitable panel-type containers. However, in my initial experiments, I found they had three major problems with regard to this project.
Organica: SqueezePanel control
|By: Paul S. Cilwa||Posted: 6/24/2021
|Page Views: 955|
|Topics: #Organica #Shell #UserControl|
|Creating the basic SqueezePanel user control and tying it into the SqueezeBox container.|
Now that we have the basic SqueezeBox control working (and no, we aren't done with it, yet), we are going to create a minimal, special control to reside within it. This control, called the SqueezePanel, is not a general-purpose control—That is, because of its specialization, there's truly no reason why anyone would ever want to use it in a stand-alone fashion. And, therefore, we don't want it to show up in the Toolbox—in fact, we'll want the SqueezeBox to create these panels automatically, when the SqueezeBox itself is deposited onto a form (or another container control). And the easiest way to make this happen, is to create the new control as a class member of SqueezeBox!.