예제 #1
0
    def __on_activate_plugin(self, cell, path):
        model = self.tree.get_model()
        iter = model.get_iter(path)

        plugin = model.get_value(iter, COLUMN_OBJECT)

        if not plugin:
            return

        if not plugin.enabled:
            func = self.p_window.engine.load_plugin
        else:
            func = self.p_window.engine.unload_plugin

        ret, errmsg = func(plugin)

        if not ret:
            dialog = HIGAlertDialog(PMApp().main_window,
                                    gtk.DIALOG_MODAL,
                                    gtk.MESSAGE_ERROR,
                                    message_format=errmsg,
                                    secondary_text=errmsg.summary)
            dialog.run()
            dialog.hide()
            dialog.destroy()
예제 #2
0
    def __on_response(self, dialog, response_id):
        if response_id == gtk.RESPONSE_ACCEPT:
            opts = self.get_options()

            if opts['capmethod'] == 1 and not opts['capfile']:
                log.debug('Capture method selected is virtual interface but '
                          'the file entry is empty. Stopping response emission')

                self.stop_emission('response')

                d = HIGAlertDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT | \
                                         gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR,
                                   message_format=_("Some options are missing"),
                                   secondary_text=_("You've selected Virtual "
                                                    "interface as capture "
                                                    "method. You need to "
                                                    "specify a file source to "
                                                    "read from"))
                d.run()
                d.hide()
                d.destroy()
예제 #3
0
    def __on_response(self, dialog, response_id):
        if response_id == gtk.RESPONSE_ACCEPT:
            opts = self.get_options()

            if opts['capmethod'] == 1 and not opts['capfile']:
                log.debug(
                    'Capture method selected is virtual interface but '
                    'the file entry is empty. Stopping response emission')

                self.stop_emission('response')

                d = HIGAlertDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT | \
                                         gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR,
                                   message_format=_("Some options are missing"),
                                   secondary_text=_("You've selected Virtual "
                                                    "interface as capture "
                                                    "method. You need to "
                                                    "specify a file source to "
                                                    "read from"))
                d.run()
                d.hide()
                d.destroy()
    def on_save_log(self, action, selection=False):
        if selection:
            model, rows = self.get_selection().get_selected_rows()

            if not rows:
                return

        dialog = gtk.FileChooserDialog(_('Save log file'), PMApp().main_window,
                                       gtk.FILE_CHOOSER_ACTION_SAVE,
                                       (gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT,
                                        gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))

        afilter = gtk.FileFilter()
        afilter.add_pattern('*.txt')
        afilter.add_pattern('*.log')
        afilter.add_mime_type('text/plain')
        afilter.set_name('ASCII log file')

        dialog.add_filter(afilter)

        xfilter = gtk.FileFilter()
        xfilter.add_pattern('*.xml')
        xfilter.add_mime_type('text/html')
        xfilter.set_name('XML log file')

        dialog.add_filter(xfilter)

        if dialog.run() == gtk.RESPONSE_ACCEPT:
            outname = dialog.get_filename()
            type = (dialog.get_filter() is xfilter and 1 or 0)

            if exists(outname):
                d = gtk.MessageDialog(PMApp().main_window,
                                      gtk.DIALOG_MODAL,
                                      gtk.BUTTONS_YES_NO,
                                      _('A file named %s already exists. Do '
                                        'want overwrite it?') % outname)
                ret = d.run()
                d.hide()
                d.destroy()

                if ret == gtk.RESPONSE_NO:
                    dialog.hide()
                    dialog.destroy()

                    return

            try:
                f = open(outname, 'w')

                if type == 1:
                    f.write('<?xml version="1.0"?>\n<auditlog>\n')
                    sep = ' '
                else:
                    sep = ''

                if selection:
                    for path in rows:
                        iter = model.get_iter(path)
                        f.write(sep + \
                                self.get_row_txt(model, iter, type) + \
                                '\n')
                else:
                    def dump(model, path, iter, f):
                        f.write(sep + \
                                self.get_row_txt(model, iter, type) + \
                                '\n')

                    self.store.foreach(dump, f)

                if type == 1:
                    f.write('</auditlog>\n')

                f.close()

            except Exception, err:
                try:
                    unlink(outname)
                except:
                    pass

                d = HIGAlertDialog(PMApp().main_window, gtk.DIALOG_MODAL,
                                   gtk.MESSAGE_ERROR,
                                   message_format=_('Error while saving log '
                                                    'file to %s') % outname,
                                   secondary_text=str(err))
                d.run()
                d.hide()
                d.destroy()