# Path: fofix/core/VFS.py
# class Mount(object):
# class StatResult(object):
#     def __init__(self):
#     def resolveRead(self, path):
#     def resolveWrite(self, path):
#     def listdir(self, path):
# def mount(dir, mountpt):
# def mountWritable(dir, mountpt):
# def _convertPath(path):
# def resolveRead(path):
# def resolveWrite(path):
#     def __init__(self, path):
#     def __len__(self):
#     def __getitem__(self, idx):
#     def __repr__(self):
# def stat(path):
# def listdir(path):
# def glob(pattern):
# def unlink(path):
# def mkdir(path):
# def rmdir(path):
# def rename(src, dest):
# def exists(path):
# def isfile(path):
# def isdir(path):
# def open(path, mode='r'):
# def openSqlite3(path):
# def getWritableResourcePath():
# 
# Path: fofix/core/Language.py
# def getAvailableLanguages():


from collections import OrderedDict
from functools import total_ordering
from fretwork import midi
from fretwork.audio import StreamingSound
from fretwork.unicode import utf8
from fofix.core import Config
from fofix.core import VFS
from fofix.core import Version
from fofix.core.Language import _
from fofix.core.Theme import *
from fofix.core.Theme import hexToColor, colorToHex
from fofix.game.song.songconstants import *
    from fofix.game import Dialogs
import binascii
import cPickle  # Cerealizer and sqlite3 don't seem to like each other that much...
import copy
import glob
import hashlib
import logging
import os
import random
import re
import time
import urllib
import cerealizer
        self.id = uid               # int uid for this instance
        self.text = text            # str friendly name for this instance
        self.trackName = trackName  # list(str) of names which the part is called in the midi

    def __eq__(self, other):
        # if it's not being compared with a part, we probably want its real ID.
        if isinstance(other, Part):
            compare = PART_SORTING[self.id] == PART_SORTING[other.id]
        else:
            compare = self.id == other
        return compare

    def __lt__(self, other):
        # if it's not being compared with a part, we probably want its real ID.
        if isinstance(other, Part):
            compare = PART_SORTING[self.id] < PART_SORTING[other.id]
        else:
            compare = self.id < other
        return compare

    def __str__(self):
        return self.text

    def __repr__(self):
        return self.text


parts = {
    GUITAR_PART: Part(GUITAR_PART, _("Guitar"), ["PART GUITAR", "T1 GEMS", "Click", "Midi Out"]),
    RHYTHM_PART: Part(RHYTHM_PART, _("Rhythm"), ["PART RHYTHM"]),

# Path: fofix/core/VFS.py
# class Mount(object):
# class StatResult(object):
#     def __init__(self):
#     def resolveRead(self, path):
#     def resolveWrite(self, path):
#     def listdir(self, path):
# def mount(dir, mountpt):
# def mountWritable(dir, mountpt):
# def _convertPath(path):
# def resolveRead(path):
# def resolveWrite(path):
#     def __init__(self, path):
#     def __len__(self):
#     def __getitem__(self, idx):
#     def __repr__(self):
# def stat(path):
# def listdir(path):
# def glob(pattern):
# def unlink(path):
# def mkdir(path):
# def rmdir(path):
# def rename(src, dest):
# def exists(path):
# def isfile(path):
# def isdir(path):
# def open(path, mode='r'):
# def openSqlite3(path):
# def getWritableResourcePath():
# 
# Path: fofix/core/Language.py
# def getAvailableLanguages():


# Path: fofix/game/song/song.py
from collections import OrderedDict
from functools import total_ordering
from fretwork import midi
from fretwork.audio import StreamingSound
from fretwork.unicode import utf8
from fofix.core import Config
from fofix.core import VFS
from fofix.core import Version
from fofix.core.Language import _
from fofix.core.Theme import *
from fofix.core.Theme import hexToColor, colorToHex
from fofix.game.song.songconstants import *
    from fofix.game import Dialogs
import binascii
import cPickle  # Cerealizer and sqlite3 don't seem to like each other that much...
import copy
import glob
import hashlib
import logging
import os
import random
import re
import time
import urllib
import cerealizer

        self.id = uid               # int uid for this instance
        self.text = text            # str friendly name for this instance
        self.trackName = trackName  # list(str) of names which the part is called in the midi

    def __eq__(self, other):
        # if it's not being compared with a part, we probably want its real ID.
        if isinstance(other, Part):
            compare = PART_SORTING[self.id] == PART_SORTING[other.id]
        else:
            compare = self.id == other
        return compare

    def __lt__(self, other):
        # if it's not being compared with a part, we probably want its real ID.
        if isinstance(other, Part):
            compare = PART_SORTING[self.id] < PART_SORTING[other.id]
        else:
            compare = self.id < other
        return compare

    def __str__(self):
        return self.text

    def __repr__(self):
        return self.text


parts = {
    GUITAR_PART: Part(GUITAR_PART, _("Guitar"), ["PART GUITAR", "T1 GEMS", "Click", "Midi Out"]),
    RHYTHM_PART: Part(RHYTHM_PART, _("Rhythm"), ["PART RHYTHM"]),

    BASS_PART:   Part(BASS_PART,   _("Bass"),   ["PART BASS"]),