Jump to content




[Project] djOS -> WOOPS based


7 replies to this topic

#1 Dave-ee Jones

  • Members
  • 456 posts
  • LocationVan Diemen's Land

Posted 03 March 2017 - 03:54 AM

djOS


Pastebin: QKh35fqK


djOS is a project I have been working on that combines object-orientated 'windows' and the Windows API. Nothing too special, just me learning how coroutines and things work.


You're welcome to learn off of this OS (what not to do maybe..) and give suggestions for how it could be written better (especially coroutines and windows, they are really messy!)


The UI is pretty nice, and everything is modular.

At the moment its WIP, so things like the Notifications Menu and Control Panel aren't complete (however the Notifications is functional, just needs touches here and there).


FEATURES

Spoiler


SCREENSHOTS
Everyone loves these!

Spoiler





QUESTIONS YOU WILL PROBABLY ASK

OR

THINGS YOU MIGHT SAY IN THE COMMENTS

Spoiler


WHAT'S NEXT?

Spoiler



FEEL FREE TO COMMENT FEEDBACK, SUGGESTIONS ETC.

('Good job' is a thing as well...)




*I so read your mind, didn't I?


Edited by Dave-ee Jones, 03 March 2017 - 04:58 AM.


#2 Piorjade

  • Members
  • 244 posts
  • LocationComputer, Germany

Posted 04 March 2017 - 12:50 PM

A nice feature is resizable windows.

#3 Dave-ee Jones

  • Members
  • 456 posts
  • LocationVan Diemen's Land

Posted 05 March 2017 - 03:08 AM

Yeah, did you notice the green button on the window's bar? I plan to use that to open a window editor to change the path, x, y, width and height of the window object. Should work fairly smoothly, I know how it would be done.

Same goes with icons/folders. That will be a little more tricky though.

#4 Piorjade

  • Members
  • 244 posts
  • LocationComputer, Germany

Posted 08 March 2017 - 01:15 PM

View PostDave-ee Jones, on 05 March 2017 - 03:08 AM, said:

Yeah, did you notice the green button on the window's bar? I plan to use that to open a window editor to change the path, x, y, width and height of the window object. Should work fairly smoothly, I know how it would be done.

Same goes with icons/folders. That will be a little more tricky though.
You don't plan on using e.g. the botttom right corner to "drag" it to make the window smaller/bigger?

#5 Dave-ee Jones

  • Members
  • 456 posts
  • LocationVan Diemen's Land

Posted 08 March 2017 - 08:41 PM

The problem with that is that if the program inside the window is running and I start dragging from the bottom right then the program might think you are clicking the bottom right (e.g. if it was TicTacToe or some kind of mini-OS or GUI). This would also mean I cannot stop the window from getting certain events either just incase you actually wanted to click the bottom right corner in the program.

I would need to create a second bar (or even just a border around the whole thing?) on the bottom that has the dragging capability. Painful, because the height and y of the window would actually be smaller because the bars take up space.

Bit tricky, pluses and minuses either way.

#6 Dave-ee Jones

  • Members
  • 456 posts
  • LocationVan Diemen's Land

Posted 15 March 2017 - 10:42 PM

Working on a re-write of the whole OS. Basing it on an API that handles all the objects (Windows and Boxes), which will make it easy to use tests (checking where user clicked/what they clicked on, drop/rise menus, where they clicked on a box/status bar etc.).

Should be good. Not sure when it will be done. Only finished the Start Menu yesterday. It's a more of a "write-all-the-functions-then-add-the-actual-objects" process, so the only time I can test it is right at the end. :P Not the wisest way to do it but that is how OOP works..Or should I say, WOOPS.

EDIT: Just built a shell as well for it. However, there are minor bugs...
Using
cd <path>
changes the previous shell's path, so when I use
exit
it goes back to the previous shell (like normal) but it's path (sDir) has been changed.

Also, I have managed to make basically everything read-only and any program/function FS/OS changing has been disabled within the shell. Quite effectively, in fact. :)

Edited by Dave-ee Jones, 16 March 2017 - 05:51 AM.


#7 ObloxCC

  • Members
  • 38 posts

Posted 18 March 2017 - 03:02 AM

The OS looks good, but the window design isn't all that original (looks vary simular to the screenshots of the upcoming Oblox OS version I was posting). I look forwards to WOOPS' future.

EDIT: I have no problem with the use of this design (kind of hard doing anything with the limitations of CC), I was planning to rewrite Oblox OS anyway, it was just too buggy when running programs in windows, etc.

EDIT 2: I was going to keep this for Oblox OS, but try to use the notification window to notify the user of updates available, app updates (when you add a store), security warnings, etc.

Edited by ObloxCC, 18 March 2017 - 03:13 AM.


#8 Dave-ee Jones

  • Members
  • 456 posts
  • LocationVan Diemen's Land

Posted 20 March 2017 - 12:11 AM

View PostObloxCC, on 18 March 2017 - 03:02 AM, said:

The OS looks good, but the window design isn't all that original (looks vary simular to the screenshots of the upcoming Oblox OS version I was posting). I look forwards to WOOPS' future.

EDIT: I have no problem with the use of this design (kind of hard doing anything with the limitations of CC), I was planning to rewrite Oblox OS anyway, it was just too buggy when running programs in windows, etc.

EDIT 2: I was going to keep this for Oblox OS, but try to use the notification window to notify the user of updates available, app updates (when you add a store), security warnings, etc.

Thanks for the feedback! :)

Yeah, window design is kind of hard to change in CC, as you only have a limited amount of pixels to use. The taskbar on top of the windows is neat looking but basic.

The Notifications window is meant to handle basically any event that isn't a mouse click, button press or key press. This means it will tell you if a disk was found/ejected, redstone toggling, rednet/modem messages sent over your channel, alarm events, peripheral attach/detach events etc.

However because I haven't planned usage of a app store yet I cannot provide an updates notification just yet.

EDIT: I don't really have a coroutine manager either. Deleting windows has always been a problem, as you don't really delete them you just tell the program to forget them. I store my windows in tables, and to delete the window I hide it and then set the window to nil, then the table the window is held in to nil. This means the program sometimes thinks the window still exists but it cannot figure out anything about it. There are workarounds, so it does work, just might not be the most efficient in terms of CPU usage.

Edited by Dave-ee Jones, 20 March 2017 - 12:21 AM.






1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users