Still suffering from the autumn/winter darkness. This week was ok but last week was useless because I was too tired to do anything. I really should buy a bright light lamp to combat against the lack of light. Hopefully there will be snow soon.

Anyway, I’ve been working with the plugin support. At first I was meaning to add plugin support only for QuickView but decided to do more generic solution. So, eventually it should be possible to add new panels, tabs, buttons…etc. from plugins. This plugin work I’m currently doing is research for CE 2.0. Trying different things to see what works and what doesn’t. Since CE 2.0 is completely build from plugins, it’s essential to get it right.

I wasn’t planning to release a snapshot this week, but since there are few bug fixes available, I though why not.

I took a bit of a break. It happens every year when autumn starts. I guess it takes few weeks or so for the body to get used to the idea that winter is coming. It’s colder and there’s less light which makes you dead tired, all the time. I’ve been boosting my serotonin and melatonin levels with eggs (they contain tryptophan) and it has helped a lot. Feeling good and energized, so I started to work again few weeks ago.

I don’t really remember why I started to work with SumatraPDF last week but it has resulted in almost complete rewrite of the QuickView system. The plan has been to finally add the plugin support I’ve meant to do for a long time. It’s pretty much finished already but it’s still in a prototype application. I need to move it from there to CE which takes about a week or so.

So before I start breaking the existing QuickView, I though I’d release a snapshot. It’s now possible to open PDF, XPS, CHM, CBR, CRZ and DjVu files in QuickView if SumatraPDF is installed to the system. SumatraPDF does support few other formats too but there’s some issue which makes it hang when used in CE so I disabled those formats.

I took a little break on the notes and from the forum. For the past month I’ve been writing the new UI/application framework I talked about in the last note. There has been nice progress and I already have some working code ready. Thanks to the proper planning/designing (talked in last note), writing the code has been pretty easy and all the pieces fall into their places by themselves. I just need to remember not to rush things and think before writing anything.

The reason I have taken some distance to the forum is because it’s like a wrecking ball that breaks down the plans and ideas I have in my mind. If only our minds could be upgraded similar to computer, more RAM would be the first item on my shopping list. Currently all the variables needed for this UI system are loaded into my memory. Now, if I start to solve CE’s bugs and think about new features for it, my memory gets filled with unrelated information making it more difficult to work with the current project. Maybe someday it becomes possible to load/save the state of our minds, it sure would be a useful feature. But until that happens, I’ll need to keep my distance to distracting things and work with only one project at a time.

This thing I’m writing right now will be the base for CubicExplorer 2.0. There’s still a long way to go but it’s worth the journey. There’s really no point in using much time with the current CE version because it just delays the inevitable. CE 2.0 will be a complete rewrite, meaning most of the work I do with CE 1.0 becomes obsolete. However, there are some bugs that need to be fixed, and a new official version should be released.

I spent last week in designing a new UI system for CE. I’ve hated the current docking system (JVCL Docking) from the very beginning. It has some bugs but because it’s coded to be terribly complex web of objects, it’s almost impossible to find the cause without spending weeks in studying how the damn thing works. So I thought, why not give it a go and try to write my own system. As always, plans changed on the way and I ended up with a sketch for complete UI system.

It’s still at a design level, very little code has been written. Designing it turned out to be a good lesson. I usually jump to coding very quickly and don’t do much planning. It works fine for small things but with big concepts, it usually means many wasted hours. If there’s no proper plan, it’s very easy to get lost or end up in a dead end. In those situations, you start to make compromises. It’s difficult to backtrack and delete the code you’ve spent days to write. So you try to find ways to make the broken code work, even if it’s not the best solution.

So I started from the user end and wrote an XML file that is used to create a UI for simple text editor. It was pretty easy to write and I was able to do major design changes on the fly without losing much time. Although, there were some struggles on the way. Right after I wrote a simple XML document for the docking system, I wanted to open Delphi and start coding. But I kept fighting against that urge and kept tweaking the XML. Few days later the simple docking system had been turned into a complete application framework.

I guess I should always start my work from the user’s point of view. I know it’s pretty self-evident but when your mind is a chaos like mine, it’s easy to be blind to the most obvious things.

CE Snapshot

I did do few changes in CE too. Mainly bug fixes. QuickView panel now shows the selected file from search tab. I added Copy- and Move Selected Here items in the tab right click menu (be careful with them, they aren’t that well tested). I also fixed few issues that might cause CE to hang. If you have experienced hanging issues, let me know if this snapshot fixes them.

Not much has happened. My concentration problems have gotten worse and I had a flu which took me out of the game for a week. I though, I might as well take a break and try to enjoy the summer before the long winter starts again. So I’ve been mainly just chilling, done some cycling and took few photos (my flickr page).

However, there are few small changes to CE. In the Text Editor, there’s now an option to colorize the different sections when using the multi highlighter. It should make reading complex html/php/js/css code little easier. I’ll try to add some options to fine tune the colors.

Oh and, I’d like to say a special thanks to sl23 for helping out in the forum. I haven’t been able to interact as much as I would like to in there so it’s good to have some help.

Let’s see, I spent last week in learning UML and sketching the new item system. I’ve tried to learn UML before but for some reason it’s difficult. The reason why it’s so difficult is probably because there aren’t many sources that explains it well. Maybe I should buy a book or something. Anyway, I found this site which explains the basics of different UML diagrams pretty well. I also (finally) found a nice program that let’s you draw diagrams easily but still has a powerful set of features, Visual Paradigm. It’s a commercial product but they offer a free community version that fits just fine for my needs.

This week I did some work with CE. Quite random stuff, still having troubles in concentration. Biggest things added are Extension colors and Thumbnail caching. Extension colors mean that you can assign different font styles/colors to different file types.

Thumbnail caching saves thumbnails and loads them from the cache next time you visit the folder. It speeds up browsing quite a bit. By default, thumbnails are saved in the settings folder. You can change the location of that folder (StorageRepositoryFolder) or choose to save per folder (StorageType) from Advanced settings: FileView -> Thumbnails.

I also added options to change the font and background color of the FileView. The FontSize setting is now removed so if you are using custom font size, you need to change it again. The line height is now calculated automatically depending on the font. Notice, this happens only if the height setting in Advanced -> FileView -> CellSizes is -1. I’ll have to add similar font and background color options to the panels also.

Oh and, the list of Advanced Settings is now fully collapsed at opening. There’s so many options that it began to be a bit difficult to find things in there. The category should expand on a single click but at the moment it doesn’t, I’ll see if I can fix that. In the mean while, you can use double click to expand/collapse categories, or just click on the + sign.

It’s been quite random two weeks. It’s probably the spring that makes it difficult to concentrate. Last week I started to work with the plugin scheme. It’s part of the CubicCore project so I didn’t hurry with it. Lot’s of time went in research to find out what is the best way to do things so it works cross platform and cross language. There’s still a lot to learn but I managed to write some code that can be implemented in CE. I didn’t have time to implement it yet, maybe next week.

For the past few days I’ve done lot’s of random changes. There’s now a Workspace panel which basically is another FileView. Until we have a proper dual/multi pane support, this panel can be used. I wrote it just yesterday so there is very little testing done, let me know if you find bugs or have ideas for improvement.

I also added support for per folder settings. It’s part of the component set I’m using so I don’t if it has some performance penalties. It’s disabled by default but you can enable it from Options -> Display -> FileView -> Use per folder settings. All those settings are stored in a perfolder.dat file located in the settings folder. Let me know how it works.

Oh, and you can now access bookmarks by right clicking the Tray Icon.

Change Log (0.96.0.1544)

Added Workspace panel.

Added Per folder settings to FileView.

Added Bookmarks to Tray icon.

Added Panels popup menu.

Added Make Visible action.

Added AlwaysSaveAsPIDL advanced option to Bookmarks.

It’s now possible to open links from the text editor.

Esc now closes Text Editor. It can be disabled from Advanced settings.

Unknown files are now opened in Text Editor by default.

Fixed focus and usability issues in Text editor’s Find and Replace.

Fixed issues in tab bar.

Fixed translation bugs.

Fixed Alt key bug in Options dialogs.

Fixed Alt+Click issue in FileView’s Single click mode.

Fixed memory leak and dialog visibility issue in Version Manager.

Fixed crashes in QuickView’s image viewer.

Fixed bug in text file preview.

Misc changes to fix possible crashes.

Fixed bug when closing detached QuickView.

Updated French translation (thanks to BB).

Updated Japanese translation (thanks to Benok).

Updated Italian translation (thanks to Folgore101).

****** EDIT – 14.5.2012 ****** There was one nasty bug that caused all sort of weird behavior in last snapshot. So here’s an update with bunch of fixes and few new advanced settings.

So, I rewrote the text editor. Or to be precise, I replaced it with QuickView and a text editor plugin. It’s not very big change to the old editor but it finally saves those editor settings. Also I redesigned the find/replace function. It’s now smaller and more simple to use.

I changed the highlighters to be little more colorful. Also there’s a new multi highlighter for HTML that supports inline sections for PHP, CSS and JS. The colors used are my personal preferences so they might not fit everyone’s taste. I am planning to add a customizer at some point for the highlighters so you can tweak the colors yourself.

For the file preview you see in QuickView panel when selecting a file, I added a text thumbnail for unknown files. It shows the content of any file that doesn’t have regular thumbnail. It’s not very pretty looking at the moment but I’ll try to work on that.

Change Log

Rewrote text editor.

Added file preview for text files.

Added FontSize to Options->Advanced->Tabs.

Dragging file/folder to tab bar will now open a new tab.

QuickView video/audio player now moves to click position.

Old file previews should be now disregarded properly.

QuickView tab now closes on Detach.

Fixed startup crash when CubicExplorer.exe is located in Unicode path.

Phew, finally the new QuickView is ready. Or well, it’s not ready but it’s usable. I wasn’t planning on spending so much time with this but it turned out to be more complicated job than I initially thought (as usual). However, I’m quite happy how it turned out. Also I learned a lot on the road and wrote some reusable code that will be helpful in the future.

Little bit about how the QuickView works. The QuickView panel will show a file preview (thumbnail and information) when you select a file (or folder). When you click on that preview, the file will be opened in a viewer that will let you pan/zoom images, play videos or edit text (the text editor is still a work in progress). QuickView tab will open the file directly in a viewer.

There is a Filelist that will automatically find all supported files from current folder. If you want to play a slideshow of those files, make sure to change the loop mode to “Loop Filelist”. At the moment all supported files will be added in the Filelist, including text files. I’ll add some way to filter that list.

There’s also a Playlist where you can drag and drop files. I’ll create more ways to add files there including the possibility to load/save playlists. Again, if you want to automatically play all files from the Playlist, choose the “Loop Playlist” option as a loop mode.

By right clicking and selecting “Detach to Window”, you can open the QuickView in a separate window. At the moment if you have video open, you’ll need to right click over the toolbar to show that popup. I’ll fix that.

Notice, the QuickView is running but it’s still a work in progress, so there are bugs and missing features in it. I’ll keep tweaking it next week. After it’s finished, I’ll start a bug hunt/feature request tour. I’ll try to (finally) fix/implement those long standing bugs/features (like the "text editor settings not saving" and "per folder settings"). All these changes will be part of version 0.96 to which I moved with this snapshot.

Still no snapshot I’m afraid. Last week I coded a file previewer for the QuickView (first image). This week I finished coding the image viewer (second image). I’m pretty happy how it turned out. You can now zoom and pan images. Also it supports optimized loading of JPEG images which makes things nice and fast.

I was planning to release a snapshot this week but due to some nasty memory leaks (Delphi’s TJPEGImage is not thread-safe it turns out) I wasn’t able to finish things on time. However, I have managed to finally move the prototype code into CE.