def __init__(self, data_or_title, list_type, has_separator=False):
        TreeItem.__init__(self)

        self.column_index = 0
        self.side_padding = 5
        self.is_highlight = False
        self.padding_y = 0
        self.padding_x = 8
        self.list_type = list_type

        if isinstance(data_or_title, basestring):
            self.title = data_or_title
            self.data = dict()
        else:
            self.title = data_or_title.get("title", "")
            self.data = data_or_title

        self.data = data_or_title
        self.has_separator = has_separator
        self.separator_height = 4
        self.item_width = CATEGROYLIST_WIDTH
        self.item_height = 26 + self.separator_height if has_separator else 26
        self.init_pixbufs()

        self.song_view = MusicView(view_type=list_type, data=self.data)
        # self.song_view.connect("begin-add-items", self.on_songview_begin_add_items)
        # self.song_view.connect("empty-items", self.on_songview_empty_items)
        self.song_view.set_size_request(PLAYLIST_WIDTH, -1)

        event_manager.connect("login-success", self.on_event_login_success)

        self.login_box = LoginBox(
            lambda w: event_manager.emit("login-dialog-run"))
        self.main_box = gtk.VBox()