Callback for when the version selection has changed

        :param tf: the selected taskfileinfo
        :type tf: :class:`TaskFileInfo` | None
        :returns: None
        :rtype: None
        :raises: None

def shot_taskfile_sel_changed(self, tf):
        """Callback for when the version selection has changed

        :param tf: the selected taskfileinfo
        :type tf: :class:`TaskFileInfo` | None
        :returns: None
        :rtype: None
        :raises: None
        """
        self.shot_open_pb.setEnabled(bool(tf))
        # only allow new, if the releasetype is work
        # only allow new, if there is a shot. if there is a shot, there should always be a task.
        enablenew = bool(self.browser.shotbrws.selected_indexes(1)) and self.browser.get_releasetype() == djadapter.RELEASETYPES['work']
        self.shot_save_pb.setEnabled(enablenew)
        self.shot_descriptor_le.setEnabled(enablenew)
        self.shot_comment_pte.setEnabled(enablenew)
        self.update_descriptor_le(self.shot_descriptor_le, tf)