View Sidebar

A Million Little Pieces Of My Mind

Organica: Shell

By: Paul S. Cilwa Viewed: 5/18/2024
Posted: 6/22/2021
Page Views: 958
Topics: #Organica
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.

  1. Create a UserControl proportionate container

  2. Suppress unneeded properties inherited from the base class

  3. Create custom properties

Organica: Visual Basic project

By: Paul S. Cilwa Posted: 6/22/2021
Page Views: 812
Topics: #Organica #VisualStudio #VB.NET
Creating the Visual Basic Organica project.

On this page we'll create the basic Organica project. including the main form.

Read more…

Organica: Percentage class

By: Paul S. Cilwa Posted: 6/28/2021
Page Views: 989
Topics: #Organica #Shell #VB.NET #Percentageclass #object-orientedprogramming
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.

Read more…

Organica: SqueezeBox control

By: Paul S. Cilwa Posted: 6/23/2021
Page Views: 543
Topics: #Organica #Shell #UserControl #PostFilterProperties
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.

Read more…

Organica: SqueezePanel control

By: Paul S. Cilwa Posted: 6/24/2021
Updated: 8/7/2021
Page Views: 1181
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!.

Read more…