!C99Shell v. 1.0 pre-release build #16!

Software: Apache/2.0.54 (Fedora). PHP/5.0.4 

uname -a: Linux mina-info.me 2.6.17-1.2142_FC4smp #1 SMP Tue Jul 11 22:57:02 EDT 2006 i686 

uid=48(apache) gid=48(apache) groups=48(apache)
context=system_u:system_r:httpd_sys_script_t
 

Safe-mode: OFF (not secure)

/usr/share/system-config-packages/   drwxr-xr-x
Free 3.84 GB of 27.03 GB (14.19%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     GroupDetails.py (6.96 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
import gtk
import gtk.glade
import gettext
import gobject
import os
import rpm
import locale
from rhpl.translate import _, N_, utf8, textdomain

from config import *
from constants import *
from size_string import size_string

textdomain(PROGNAME)
SELECTION_STRING=_("A package group can have both standard and extra package members.  Standard packages are always available when the package group is installed.")
SELECTION_PACKAGE_STRING=_("Select the extra packages to be installed:")


class GroupDetails(object):
    COLUMN_SELECTED=0
    COLUMN_VISIBLE=1
    COLUMN_NAME=2
    COLUMN_PACKAGE=3
    MAX_LIST_WIDTH=550
    def __init__ (self, comps, component, parent=None):
        self.comps = comps
        self.component = component
        self.parent = parent
        self.construct_dialog ()
        self.hydrate_dialog ()

    def select_package(self, selection):
        (model, iter) = selection.get_selected()
        if iter:
            package = model.get_value(iter, self.COLUMN_PACKAGE)
            if package:
                self.fullnameLabel.set_text(package.getName())
                self.sizeLabel.set_markup (size_string (package.getSize()))
                return
        self.fullnameLabel.set_markup('<i>None</i>')
        self.sizeLabel.set_markup('<i>None</i>')

    def construct_dialog (self):
        glade_file = "GroupDetails.glade"
        if not os.path.isfile(glade_file):
            glade_file = GLADEDIR + glade_file
        xml = gtk.glade.XML (glade_file, 'group_details_dialog',
                             domain = PROGNAME)

        self.dialog = xml.get_widget ('group_details_dialog')
        self.tree_view = xml.get_widget ('group_details_tree_view')
        self.swindow = xml.get_widget ('group_details_swindow')
        self.fullnameLabel = xml.get_widget('group_details_full_name_label')
        self.sizeLabel = xml.get_widget('group_details_size_label')
        self.intro_label = xml.get_widget ('group_details_intro_label')
        self.model = gtk.TreeStore (gobject.TYPE_BOOLEAN,
                                    gobject.TYPE_BOOLEAN,
                                    gobject.TYPE_STRING,
                                    gobject.TYPE_PYOBJECT)
        xml.get_widget ('group_details_image').set_from_file (RHCPIXMAPSDIR+'group-details-logo.png')
        self.tree_view.set_model (self.model)
        if self.parent:
            self.dialog.set_transient_for (self.parent)
        column = gtk.TreeViewColumn (None, None)
        renderer = gtk.CellRendererToggle()
        renderer.connect ('toggled', self.renderer_toggled)
        column.pack_start (renderer, False)
        column.add_attribute (renderer, 'active', self.COLUMN_SELECTED)
        column.add_attribute (renderer, 'visible', self.COLUMN_VISIBLE)
        renderer = gtk.CellRendererText()
        column.pack_start (renderer, True)
        column.add_attribute (renderer, 'markup', self.COLUMN_NAME)
        self.tree_view.append_column (column)
        selection = self.tree_view.get_selection()
        selection.connect("changed", self.select_package)

    def hydrate_dialog (self):
    def getDescription(obj):
            basedesc = obj.getDescription()

        if basedesc is not None:
        desc = basedesc.replace ("\n\n", "\x00")
        desc = desc.replace ("\n", " ")
                desc = desc.replace ("&", "&amp;")
        desc = desc.replace ("\x00", "\n\n")
        desc = utf8(desc)
        else:
        desc = ""
        return "%s - %s" % (obj.name, desc)

        name = self.component.name
        self.dialog.set_title (_("%s Package Details") % name)

        sized = 0
        req_height = -1
        req_width = -1
        packages = self.component.packageInfo(type = PKGTYPE_MANDATORY)
        mandatory_iter = None
        if len (packages) > 0:
            mandatory_iter = self.model.append (None)
            self.model.set (mandatory_iter,
                            self.COLUMN_VISIBLE, False,
                            self.COLUMN_NAME, _("<b>Standard Packages</b>"),
                            self.COLUMN_PACKAGE, None)
            # Give the scrolled window a good height.
            req = self.tree_view.size_request ()
            req_height = req[1]*12
            sized = 1
            for package in packages:
                pkg = self.comps.hdrlist[package]
                iter = self.model.append (mandatory_iter)
                pkgname = getDescription (pkg)
                self.model.set (iter,
                                self.COLUMN_VISIBLE, False,
                                self.COLUMN_NAME, pkgname,
                                self.COLUMN_PACKAGE, pkg)

        packages = self.component.packageInfo(type = PKGTYPE_OPTIONAL | PKGTYPE_DEFAULT)
        if packages == []:
            path = self.model.get_path (mandatory_iter)
            self.tree_view.expand_row (path, True)
            self.intro_label.set_text (SELECTION_STRING)
        else:
            self.intro_label.set_text (SELECTION_STRING + "\n\n" + SELECTION_PACKAGE_STRING)

        if len (packages) > 0:
            optional_iter = self.model.append (None)
            self.model.set (optional_iter,
                            self.COLUMN_VISIBLE, False,
                            self.COLUMN_NAME, _("<b>Extra Packages</b>"),
                            self.COLUMN_PACKAGE, None)
            if not sized:
                # Give the scrolled window a good height.
                req = self.tree_view.size_request ()
                req_height = req[1]*12

            for package in packages:
                if self.component.packages[package]["meta"] == 0:
                    pkg = self.comps.hdrlist[package]
                else:
                    pkg = self.comps.groups[package]
                pkgname = getDescription (pkg)
                iter = self.model.append (optional_iter)
                self.model.set (iter,
                                self.COLUMN_SELECTED, pkg.isSelected(),
                                self.COLUMN_VISIBLE, True,
                                self.COLUMN_NAME, pkgname,
                                self.COLUMN_PACKAGE, pkg)

            path = self.model.get_path (optional_iter)
            self.tree_view.expand_row (path, False)

        # Give the scrolled window a good width.
        req = self.tree_view.size_request ()
        if req[0] > self.MAX_LIST_WIDTH:
            req_width = self.MAX_LIST_WIDTH
            self.swindow.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        else:
            self.swindow.set_policy (gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
        self.swindow.set_size_request (req_width, req_height)


    def run (self):
        self.dialog.run ()
        self.dialog.destroy ()

    def renderer_toggled (self, renderer, path):
        iter = self.model.get_iter_from_string (path)
        package = self.model.get_value (iter, self.COLUMN_PACKAGE)
        if package.isSelected():
            self.component.unselectPackage(package.id)
        else:
            self.component.selectPackage(package.id)
        self.model.set (iter, self.COLUMN_SELECTED, package.isSelected())

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #16 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.004 ]--