(Sorry for the tardiness of this report – i have been having problems connecting to the wordpress servers.)
This past week i have added a ton of comments and finished the online documentation. Since i bought a new laptop last week, I was very eager to get the OSs installed and running as quickly as possible. I created 3 100Gb partitions – one for Windows Vista, One for Linux, and a shared partition. It only took about 2 hours to get both OSs installed and updated!
Well, I _tried_ to test on Vista, but ran into problems installing CPANPLUS via Strawberry Perl. I guess I needed more time to figure out Strawberry’s inner sanctum. I plan on having it working on Strawberry by the end of next month, if not sooner. I have had too many problems with Vista, but continue trudging along, because i am using it only for a couple of games (Gothic 3 and Portal) and for cross-platform testing and development.
I love Fedora, and have been using it since FC1 was in beta. (Before that, I used RedHat, since 5.0.) When testing wxCPAN on Fedora 9, I ran into quite a few bugs that seem to be related to the updated versions of Wx-Perl and CPANPLUS. The search method freezes right in the middle. This didn’t happen on Fedora 7, my last system, with CPANPLUS 0.78 and Wx 0.77. I hope to resolve this issue as soon as possible.
I plan on moving the PODReader into its own module, probably Wx::PODReader. I have added quite a bit of documentation to wxCPAN, to aid future development, possibly by others. I plan on continuing development until CPAN becomes obsolete. I would also like to test wxCPAN on the parrot platform. I hear Strawberry Perl is looking for such a tool as wxCPAN, and would like to contribute to Strawberry, if time allows. Since I am a student, i won’t have much time, but I love to code, and do so frequently. This project has given me a long-standing goal, and I love long-standing goals.
Well – it’s been a great trip! I have had a lot of fun. I could not have done it without the support of my mentor Herbert, Eric, my wife Sarah, and the entire Perl community. Thank you all!
This week, I have tried to install and familiarize myself with Strawberry perl, so I can test on that platform. I have worked out some errors and bugs, and added a bit of documentation – especially on the wxCPAN googlecode site. I have switched to the issue tracker on the web site for all bugs and feature requests. I have also released a couple of files to CPAN. Since I am on vacation until wednesday, I plan on immersing myself into wxCPAN from Thursday to Sunday, where I hope to do lots more testing and documentation.
I have had tons of fun on this project, and look forward to extending it in the next few weeks, before school begins. I hope to have a real production release, with all the features of any great GUI tool, before the end of the year, if not sooner.
I uploaded my first release to PAUSE yesterday! I tweaked around with it for a few hours, only to find out this morning that I didn’t need to do any tweaking. Oh, well – so it goes.
This week, I prepared my module for release to CPAN. I used Module::Install for the Makefile.PL. There is a script in the misc/ directory that I apparently didn’t need to use, but it’s there in case anyone else wants to use it. It cleans the directories, makes HTML docs out of perldocs, and creates a .gz file. This can all be accomplished with `make dist`. (There is so much information to wade through for CPAN authors, I seemed to have missed a few important items.)
I have also tried to optimize the search algorithm, but it seems to take a little longer than I want. I am going to work on it some more this coming week.
I have also tried to resolve the scrollbar issue in the modules list. The problem is that it is inside a wxSplitter, and the scrollbars only show up for really long lists. I am going to get rid of the splitter, and make the information pane a static size. This should resolve the issue until I figure out how to get it working in a Splitter.
So – this coming week, I have three items i wish to address: The scrollbars in the Modules List, the search algorithm, and creating a toolkit for CPAN authors.
Unitl next week – Happy coding!
I finally fixed the AUTOLOAD method in ModulePanel! I don’t know what I was thinking when I originally wrote it, but the new write is great! I have also moved a lot of methods around to better support working with versions and the OOP concept. The biggest change is condensing the ModuleTree::Batch* methods to Frame::SetAction(@_,$cmd). This way means a lot less to debug and less code to sift through. I am currently working on condensing a lot of my code and implementing the Update Wizard. Hopefully, I will be done with the wizard by week’s end.
Next week: sifting through my code to take advantage of new routines, commenting code, and my first CPAN module release!
The week after next: CPAN author utilities!
I have been working on an update wizard for CPANPLUS->Selfupdate(). It is proving to be harder than I thought. I am getting pretty frustrated, so I decided to take a break and work on implementing a feature I almost forgot – working with different versions. I have edited all the code for the ModuleTree->_install_module() and related methods. They all use parse_module() instead of module_tree() in order to obtain a versioned copy of the module. The new function calls look like $tree->_*_module($modname|$mod|$fakemod [, $version]). This method is a LOT safer, anyway. Any time I need a list of modules, I loop through the list of names and convert to modules.
I believe I am at the point where I need to re-write some code. The ModuleTree is not truly Object-Oriented, and looks for other widgets. This needs to be fixed, since it does not _contain_ the other widgets. I am working on writing a Wx::Panel class called ModulePanel that is the Wx::Panel in the Module tab in the main notebook. It holds all the info tabs and can handle the same methods as ModuleTree, so we need not re-write any other interfaces. With the new interface design, anyone can embed just the ModuleTree widget to display modules and use fetch(), etc. on them. I may even make it a sub-class of CPANPLUS::Backend, so all you would need for a backend is the list. It will definitely have a SetCPP() function for setting the backend to an existing object.
Also – I will be working pretty hard today and tomorrow on this, as I have a family reunion to go to this weekend!
I ran my first successful install today! I wated more control of the installation, so included some code to install all the prerequisites in wxCPAN, instead of using CPANPLUS::Backend. I still need to work on code for installing into arbitrary directories, but at least this is a great start! Here is a screenshot of the log:
I chose to create the Preferences dialog with the least amount of code. I set the Name attribute in the XRC file to the path in the CPANPLUS::Configure object. Foe example: The ‘conf’ section has the key ‘show_startup_tip’, so the name of the control is ‘conf/show_startup_tip’. During creation of the control, the name is converted into code, then eval()’ed. Here’s where it got really complicated: There is no post-creation code in wxWidgets, so I searched high and low for some way to overload a built-in method for the control. There is no post-creation code, so I looked into the types of events that were available. There it was: EVT_WINDOW_CREATE(). So I managed to get all this working with just a bit of code. If you wish to see the code, go to http://wxcpan.googlecode.com
This week, I have finished the Preferences window design, and am slowly implementing the controls.
However, I have run into some problems with my svn repo – mainly that I keep getting an error saying that a file already exists when I try to commit any files. I have looked this problem up, and am short on answers.
Here is the error I get:
Some of selected resources were not committed.
svn: Commit failed (details follow):
svn: Path ‘/svn/branches/development/wxcpan/CPANPLUS-Shell-Wx-0.01’ already exists