# Project Manager

The Project Manager in VCStudio is the lobby place where you choose what door to open. People might have more then one project on the same machine. And making an organizer be able to talk to just one of them is silly. So unlike in the old Blender-Organizer where it used to sit in the folder with the project. This time it's separate. The Project-Manager is here to help make, find and enter projects. As well as to do some other stuff. 

![](https://notabug.org/jyamihud/update_manager/raw/master/vcstudio/46.png)

### Chapters:
 - [Video Tutorial](#video-tutorial)
 - [Create Projects](#create-projects)
 - [Scanning For Projects](#scanning-for-projects)
 - [Converting Legacy Projects](#converting-legacy-projects)
 - [Bottom Buttons](#bottom-buttons)
 - [Source Code](#source-code)

# Video Tutorial

[![](https://notabug.org/jyamihud/update_manager/raw/master/vcstudio/promotions/project_manager_tutorial_lbry_link.png)](https://open.lbry.com/@blender-organizer:5/Victorious-Children-Studio-Organizer-%28-VCStudio-%29---Project-Manager-Tutorial---Creating-Projects---Scanning-the-OS---Settings:7?r=7YADjAZEbHJg8n4qV5rAuBh5Hca7cZQK)

![](../../settings/themes/OldSchool/icons/lbry.png) *Click on the image to view in LBRY* or ![](../../settings/themes/OldSchool/icons/video.png) [Download Video](https://cdn.lbryplayer.xyz/api/v4/streams/free/Victorious-Children-Studio-Organizer-%28-VCStudio-%29---Project-Manager-Tutorial---Creating-Projects---Scanning-the-OS---Settings/7092ba65bc5a69c700d9e09170c000f2e17fc15b/28976a)


![](../../settings/themes/OldSchool/icons/question.png) [What is LBRY?](../../wiki/extra/LBRY.md)


# Create Projects

You want to start doing a project but there is non. Or you want to start a new project. In order to create a new project you have the ![](../../settings/themes/OldSchool/icons/new_file.png) button in the top, left corner. Press it.

![](https://notabug.org/jyamihud/update_manager/raw/master/vcstudio/48.png)

The following setting will be presented to you.

- **Select Folder.** Folder where the new project will be created. *Note: It's not a project's folder, it's a folder where all new project's folders will be.*
- **New Project Name.** The name of your new project.

I'm going to create a new project called **For_Documentation** on the Desktop. *You can choose any name what so ever.*

![](https://notabug.org/jyamihud/update_manager/raw/master/vcstudio/49.png)

Then I press the little ![](../../settings/themes/OldSchool/icons/ok.png) button and it appears in the list of current projects.

![](https://notabug.org/jyamihud/update_manager/raw/master/vcstudio/50.png)

# Scanning For Projects

Under ![](../../settings/themes/OldSchool/icons/new_file.png) button for creating projects you can see ![](../../settings/themes/OldSchool/icons/search_file.png) button for Scanning projects. Clicking it will look through the entire operating system and will find all the projects currently on it. It's usefull if for any reason you had the projects there before. Or you've copied the project from another computer.

*Note: It will find projects also on USB Thumb-Drives and other removable media. When the media is removed, the project will disappear from the menu. But it will keep the record of the project. So every time you mount the removable drive again, the project will appear in the menu.*

# Converting Legacy Projects

![](https://notabug.org/jyamihud/update_manager/raw/master/vcstudio/01.png) The ![](../../settings/themes/OldSchool/icons/search_file.png) scanning will give you not only VCStudio projects but also Blender-Organizer projects. (The older version of the same software) They will have a red top. Selecting one will present you with ![](../..//settings/themes/OldSchool/icons/configure_file.png) third button in the top, left corner. Clicking which will turn the legacy Blender-Organizer project into a new VCStudio project.


# Bottom Buttons

In the bottom left corner. You can see 3 more icons. ![](../../settings/themes/OldSchool/icons/question.png) , ![](../../settings/themes/OldSchool/icons/update.png) and ![](../../settings/themes/OldSchool/icons/settings.png) . Let's go over each of them quickly.

![](../../settings/themes/OldSchool/icons/question.png) in any window of VCStudio will give the documentation menu. It's a high probability that you are reading this document from such a menu. On the left of the menu there is selection of topics you can read about. And the larger part of the right will be your document it self.

![](../../settings/themes/OldSchool/icons/update.png) is for updating VCStudio to the latest version. You can read about the updates in the release notes. And see the full list of changed files. Also if some files are corrupted or missing. You can restore the whole installation by downloading all files.

![](../../settings/themes/OldSchool/icons/settings.png) is the settings menu of VCStudio.

The next chapter will make you understand the Project Manager a bit better. Tho it's not a necessary information for a simple user. Do not be afraid of knowledge. Even more. It's Free Software. You are welcome to look and to change.

# Source Code

The best documentation is to read the code of the software directly. And in order to read about Project Manager you will need to read [this whole folder of files.](../../project_manager)

**How VCStudio draws graphics?**

Well to draw graphics VCStudio using what called GTK. When [project_manager/pm_gtk.py](../../project_manager/pm_gtk.py) is running. It imports a python Gtk module. Which is a library to draw Graphical User Interfaces in GNU / Linux.

But I'm not using all of the Gtk library. VCStudio has a unique, custom Graphical interface. Which is done using a thing called [Gtk.DrawingArea](https://athenajc.gitbooks.io/python-gtk-3-api/content/gtk-group/gtkdrawingarea.html) which allows me to draw any custom stuff I want using a different library called Cairo. Appart from the window it self and some basic functions like button press events, mouse events and clipboard I'm using my own stuff written primarily in cairo.

You can see the folder [UI](../../UI) to read about various elements I wrote for frequent reuse in VCStudio. Things like buttons, text entries and scrolling areas. They are all custom because I want the flexibility and freedom to do what ever weird thing I want with them. I want to have an ability to make a button with in a button that you need to chase with the mouse, for example. I can do it using my toolkit. Not so much using standard Gtk.

**How do I test graphics?**

In the top, right corner you have a **hidden button**. If you click it you will enter a testing mode. Which will show you stuff like where are all the individual buttons and images and what is a current FPS and current button presses with the current button values.

**How the scanning works?**

The [scan()](../../project_manager/pm_project.py) function is looking through every path on the system. Every folder that exists in the OS. And looks the end of the string. If it finds `/ast/chr` in the end of the string. It probably means that this belongs to a project from VCStudio / Blender-Organizer type. Tho there are obvious problems with this approach. And I will be looking at modifying it in future.

**How VCStudio know which project is New and which is Legacy?**

In the new projects all the analytics and nasty data files are hidden under a `/set/` folder. While in the legacy Blender-Organizer project they are all over the place. And there is no such thing as a `/set/` folder. So using this information I can guess whether the project is one or the other. There are other stuff at play. And the function might mature over time. So look at [is_legacy()](../../project_manager/pm_project.py) function.

**How the conversion works?**

This is a big pile of potatoes. Basically [studio/story.py](../../studio/story.py), [studio/checklist.py](../../studio/checklist.py) and [studio/analytics.py](../../studio/analytics.py) read a bunch of stuff from the legacy project. And then save all this stuff it in the new format. 

**What formats does VCStudio use?**

Blender-Organizer legacy had a bunch of weird, custom, but all text based formats trough out the project. Some of them such as checklists ( .progress ) stayed pretty much the same. But analytics, scheduling, history and even story I chose to write into a JSON file this time. The story is saved into `/pln/story.vcss` VCSS stands for VCStudio Script. But it's a re-named JSON file. Some simple stuff could be in a .data file. Which is usually a very straigh forward text document. I was trying to design them such as that when a person opens them in a text editor they will understand right away what is the structure. I don't know if I failed. But the intention was to make them easy to understand.

**How does update work?**

Updates in VCStudio are unintentionally complex. But the core concept is quite simple. You download [this file](https://notabug.org/jyamihud/VCStudio/raw/master/settings/update.data) from the repository and compare it to [the same file](../../settings/update.data) locally. If there is a new version it will be in the top of the document. And missing from the local version. Every version has a number,  a list of files changed and a link to release nodes document.

*I'm saying that it's too complex because it could be simplified. If you want to help. Look into following files.*
 - [project_manager/update_reader.py](../../project_manager/update_reader.py)
 - [project_manager/update_request.py](../../project_manager/update_request.py)
 - [project_manager/pm_updateLayer.py](../../project_manager/pm_updateLayer.py)
 - [project_manager/pm_installUpdatesLayer.py](../../project_manager/pm_installUpdatesLayer.py)


# Help The Documentation

The documentation files are not perfect. And need maintenance.

*If you are reading it from the VCStudio build in Documentation:*

 - Press ![](../../settings/themes/OldSchool/icons/edit.png) to edit locally.
 - Press ![](../../settings/themes/OldSchool/icons/notabug.png) to commit in our NotABug repository.

*(C) J.Y.Amihud 2021. Under GPL v3 or later.*