Up until recently, I have been happily using codelite on an external USB drive. It took some time to configure it, what with me under the impression that I could make it completely portable via some outdated documentation and later finding out this is false because codelite saves configuration settings in APPDATA now, but I like the interface and it does what I need it to do.
Today that changed when I loaded my most recent workspace, and everything was, pardon my french, extremely f'd up. The code I was looking at were all classes that existed in the project weeks ago, only they were just that: several weeks old (including their time stamps). Many of the new classes and files I had written were just straight up GONE. Within the workspace itself was absolutely nothing, because the project files were apparently corrupt. Looking through the project file, I found the mangled remains of what appears to be the last class I wrote before I properly saved my work and turned off my computer just prior to this insanity. Mind you, I wrote about 7 other classes and made several accommodating changes to my existing work before this class was even written. Here is the project file... Keep in mind I created the headers/cpp files teh same way I have been for months, "add new class"
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<Session Name="E:\Development\C++\Projects\Shooter\Shooter\Shooter.workspace">
<int Value="9" Name="m_selectedTab"/>
<wxString Value="E:\Development\C++\Projects\Shooter\Shooter\Shooter.workspace" Name="m_workspaceName"/>
<TabInfoArray Name="TabInfoArray">
<TabInfo>
<wxString Value="E:\Development\C++\Projects\Shooter\Shooter\main.cpp" Name="FileName"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="17" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="E:\Development\C++\Projects\Shooter\Shooter\Entity.h" Name="FileName"/>
<int Value="17" Name="FirstVisibleLine"/>
<int Value="111" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="E:\Development\C++\Projects\Shooter\Shooter\State.h" Name="FileName"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="12" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="E:\Development\C++\Projects\Shooter\Shooter\globals.h" Name="FileName"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="23" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="E:\Development\Tools\foil-wrapper\include\foil\UserEventSource.hpp" Name="FileName"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="0" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="E:\Development\C++\Projects\Shooter\Shooter\Player.h" Name="FileName"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="0" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="e:\development\ide\codelite\mingw-4.8.1\lib\gcc\mingw32\4.8.1\include\c++\ext\atomicity.h" Name="FileName"/>
<int Value="25" Name="FirstVisibleLine"/>
<int Value="46" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="e:\development\ide\codelite\mingw-4.8.1\lib\gcc\mingw32\4.8.1\include\c++\bits\shared_ptr.h" Name="FileName"/>
<int Value="278" Name="FirstVisibleLine"/>
<int Value="290" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="e:\development\ide\codelite\mingw-4.8.1\lib\gcc\mingw32\4.8.1\include\c++\bits\shared_ptr_base.h" Name="FileName"/>
<int Value="574" Name="FirstVisibleLine"/>
<int Value="552" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="E:\Development\C++\Projects\Shooter\Shooter\MainMenu.h" Name="FileName"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="0" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="E:\Development\C++\Projects\Shooter\Shooter\AudioMenu.h" Name="FileName"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="0" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="E:\Development\C++\Projects\Shooter\Shooter\ControlsMenu.h" Name="FileName"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="0" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="E:\Development\C++\Projects\Shooter\Shooter\CreditsMenu.h" Name="Fil#ifndef _BUTTON_H
#define _BUTTON_H
#include "Entity.h"
class Button : public Entity {
protected:
bool m_selected;
void (*m_clicked) (void);
static void nullFunc() {} //for default constructor.
public:
//Default constructor
Button() : m_selected(false), m_clicked(nullFunc) {}
//Constructor
Button(const Point<float> &pos, const Bitmap &bmp, void (*clickFunction)(void))
: Entity(pos, bmp), m_selected(false), m_clicked(clickFunction) {}
//Selected get/set
bool isSelected() { return m_selected; }
void setSelected(bool b) { m_selected = b; }
//Button functions
void clicked() { m_clicked(); }
//Entity interface functions
void update() { Entity::update(); }
void render() { Entity::render(); }
void collided(int objectID) { Entity::collided(objectID); }
};
#endif Directory)/$(ProjectName)
Preprocessors :=
ObjectSwitch :=-o
ArchiveOutputSwitch
At first I thought maybe this was an issue with the drive, but its not. No bad sectors... Ran malwarebytes and spybot, no malicious software. All my backup solutions are manual. Looking through the remains of my code, I found this nice little tid bit, which replaced the code in the file. The file itself was an include to a header only library in a different directory from the workspace/project that was included in the application. This leads me to believe codelite is to blame:
Code: Select all
##
## Auto Generated makefile by CodeLite IDE
## any manual changes will be erased
##
## Debug
ProjectName :=Shooter
ConfigurationName :=Debug
WorkspacePath := "E:\Development\C++\Projects\Shooter\Shooter"
ProjectPath := "E:\Development\C++\Projects\Shooter\Shooter"
IntermediateDirectory :=./Debug
OutDir := $(IntermediateDirectory)
CurrentFileName :=
CurrentFilePath :=
CurrentFileFullPath :=
User :=Aniconic
Date :=06/03/14
CodeLitePath :="E:\Development\IDE\CodeLite"
LinkerName :=g++
SharedObjectLinkerName :=g++ -shared -fPIC
ObjectSuffix :=.o
DependSuffix :=.o.d
PreprocessSuffix :=.o.i
DebugSwitch :=-gstab
I will admit that I am somewhat new to codelite, and I haven't completely ruled out drive or backup issues, but it seems more like a codelite issue. Especially since this isn't the first bug I've run into, and I haven't been using this IDE altogether for more then 6 months. I'll be honest, I've had better luck with bloodshed, and it hasn't been updated in years. I'd like to know why or how this kind of thing can happen so I can either take the necessary steps to prevent this in the future, or just find a different IDE altogether.
I apologize if I came across as crass, I don't mean to offend anyone, especially if they personally work on this IDE. But please understand, I've literally lost hours upon hours worth of spare time work, and I have hours more ahead of me trying to piece together what survived and what didnt...
Thank you in advance for any constructive input.