class GenericInfoView(AbstractFileView):
    def __init__(self, project, filename):
        super(GenericInfoView, self).__init__(project,
            "fileview_generic_title", os.path.basename(filename), filename)
        # prepare model & changeable option values:
        self.project = project
        self.model = GenericInfoModel(project, filename)
        self.optionvalues = dict()
        self.optionvalues["mime_type"] = self.model.get_mime_type() 
        # set up actual layout with options:
        self.layout = QVBoxLayout()
        self.options = dict()
        self.optionsmodels = dict()
        
        self.optionsmodels["filename"] = LabelOptionModel(\
            os.path.basename(filename))
        self.options["filename"] = LabelOption(None,
            "genericfileview_option_filename",
            self.optionsmodels["filename"])
 
        self.optionsmodels["path"] = LabelOptionModel(filename)
        self.options["path"] = LabelOption(None,
            "genericfileview_option_path",
            self.optionsmodels["path"])

        self.optionsmodels["size"] = LabelOptionModel(
            str(os.path.getsize(os.path.join(project.directory,
                filename)) / 1024) + "KB")
        self.options["size"] = LabelOption(None,
            "genericfileview_option_" + \
            "size", self.optionsmodels["size"])
            
        self.optionsmodels["mime_type"] = GenericInfoMimeTypeModel(\
            self.model)
        self.options["mime_type"] = TextOption("mime_type",
            "genericfileview_option_mime_type",
            self.optionsmodels["mime_type"])
        self.options["mime_type"].focussed = lambda widget=self.\
            options["mime_type"].get_input_widget():\
            self._active_widget_changed(widget)
        
        self.layout.addWidget(self.options["filename"])
        self.layout.addWidget(self.options["path"])
        self.layout.addWidget(self.options["size"])
        self.layout.addWidget(self.options["mime_type"])
        self.layout.addStretch()
        self.setLayout(self.layout)
            
    def update_language(self):
        super(GenericInfoView, self).update_language()
        for key in self.options:
            self.options[key].update_language()

    def duplicate(self):
        return GenericInfoView(self.project, self.filename)


    def pop_out_title_name(self):
        return l("fileview_properties_title").format(self.filename)
    def __init__(self, project, filename):
        super(GenericInfoView, self).__init__(project,
            "fileview_generic_title", os.path.basename(filename), filename)
        # prepare model & changeable option values:
        self.project = project
        self.model = GenericInfoModel(project, filename)
        self.optionvalues = dict()
        self.optionvalues["mime_type"] = self.model.get_mime_type() 
        # set up actual layout with options:
        self.layout = QVBoxLayout()
        self.options = dict()
        self.optionsmodels = dict()
        
        self.optionsmodels["filename"] = LabelOptionModel(\
            os.path.basename(filename))
        self.options["filename"] = LabelOption(None,
            "genericfileview_option_filename",
            self.optionsmodels["filename"])
 
        self.optionsmodels["path"] = LabelOptionModel(filename)
        self.options["path"] = LabelOption(None,
            "genericfileview_option_path",
            self.optionsmodels["path"])

        self.optionsmodels["size"] = LabelOptionModel(
            str(os.path.getsize(os.path.join(project.directory,
                filename)) / 1024) + "KB")
        self.options["size"] = LabelOption(None,
            "genericfileview_option_" + \
            "size", self.optionsmodels["size"])
            
        self.optionsmodels["mime_type"] = GenericInfoMimeTypeModel(\
            self.model)
        self.options["mime_type"] = TextOption("mime_type",
            "genericfileview_option_mime_type",
            self.optionsmodels["mime_type"])
        self.options["mime_type"].focussed = lambda widget=self.\
            options["mime_type"].get_input_widget():\
            self._active_widget_changed(widget)
        
        self.layout.addWidget(self.options["filename"])
        self.layout.addWidget(self.options["path"])
        self.layout.addWidget(self.options["size"])
        self.layout.addWidget(self.options["mime_type"])
        self.layout.addStretch()
        self.setLayout(self.layout)