コード例 #1
0
ファイル: main.py プロジェクト: Ozerich/ajenti
 def go(self, cmd):
     if not self._process.is_running():
         self._process = BackgroundProcess(cmd)
         self._process.start()
         rcnt = [cmd]
         if len(self._recent) > 0:
             for x in self._recent:
                 rcnt.append(x)
         if len(rcnt) > 5:
             rcnt = rcnt[:5]
         self._recent = rcnt
コード例 #2
0
ファイル: main.py プロジェクト: valeriy67/ajenti
 def go(self, cmd):
     if not self._process.is_running():
         self._process = BackgroundProcess(cmd)
         self._process.start()
         rcnt = [cmd]
         if len(self._recent) > 0:
             for x in self._recent:
                 rcnt.append(x)
         if len(rcnt) > 5:
             rcnt = rcnt[:5]
         self._recent = rcnt
コード例 #3
0
ファイル: main.py プロジェクト: valeriy67/ajenti
class ShellPlugin(CategoryPlugin):
    text = "Shell"
    icon = "/dl/shell/icon_small.png"
    folder = "tools"

    def on_session_start(self):
        self._recent = []
        self._process = BackgroundProcess("")

    def get_status(self):
        return shell("echo `logname`@`hostname`")

    def get_ui(self):
        panel = UI.PluginPanel(UI.Label(text=self.get_status()), title="Command shell", icon="/dl/shell/icon.png")
        panel.append(self.get_default_ui())
        return panel

    def get_default_ui(self):
        recent = [UI.SelectOption(text=x[0:40] + "..." if len(x) > 40 else x, value=x) for x in self._recent]
        log = UI.CustomHTML(enquote(self._process.output + self._process.errors))

        frm = UI.FormBox(
            UI.TextInput(name="cmd", size=30, id="shell-command"), id="frmRun", hideok=True, hidecancel=True
        )
        frmr = UI.FormBox(
            UI.Select(*recent, name="cmd", id="shell-recent", onclick="shellRecentClick()"),
            id="frmRecent",
            hideok=True,
            hidecancel=True,
        )

        logc = UI.ScrollContainer(log, width=500, height=300)
        lt = UI.VContainer(
            UI.HContainer(frm, UI.Button(text="Run", form="frmRun", onclick="form")),
            UI.HContainer(UI.Label(text="Repeat:"), frmr),
        )

        rp = None
        if self._process.is_running():
            rp = UI.VContainer(
                UI.HContainer(
                    UI.Image(file="/dl/core/ui/ajax.gif"),
                    UI.Label(text="Running: " + self._process.cmdline, size=2),
                    UI.Refresh(time=3000),
                ),
                UI.Button(text="Abort command", id="abort"),
            )

        t = UI.VContainer(lt, rp, logc, spacing=10)
        return t

    def go(self, cmd):
        if not self._process.is_running():
            self._process = BackgroundProcess(cmd)
            self._process.start()
            rcnt = [cmd]
            if len(self._recent) > 0:
                for x in self._recent:
                    rcnt.append(x)
            if len(rcnt) > 5:
                rcnt = rcnt[:5]
            self._recent = rcnt

    @event("button/click")
    def on_click(self, event, params, vars=None):
        if params[0] == "abort":
            self._process.kill()

    @event("form/submit")
    def on_submit(self, event, params, vars=None):
        self.go(vars.getvalue("cmd", ""))
コード例 #4
0
ファイル: main.py プロジェクト: valeriy67/ajenti
 def on_session_start(self):
     self._recent = []
     self._process = BackgroundProcess("")
コード例 #5
0
ファイル: main.py プロジェクト: Ozerich/ajenti
class ShellPlugin(CategoryPlugin):
    text = 'Shell'
    icon = '/dl/shell/icon_small.png'
    folder = 'tools'

    def on_session_start(self):
        self._recent = []
        self._process = BackgroundProcess('')

    def get_status(self):
        return shell('echo `logname`@`hostname`')

    def get_ui(self):
        panel = UI.PluginPanel(
                    UI.Label(text=self.get_status()),
                    title='Command shell',
                    icon='/dl/shell/icon.png'
                )
        panel.append(self.get_default_ui())
        return panel

    def get_default_ui(self):
        recent = [UI.SelectOption(text=x[0:40] + '...' if len(x) > 40 else x,
                                  value=x) for x in self._recent]
        log = UI.CustomHTML(html=enquote(self._process.output + self._process.errors))

        frm = UI.FormBox(
                UI.TextInput(name='cmd', size=30, id='shell-command'),
                id='frmRun', hideok=True, hidecancel=True
              )
        frmr = UI.FormBox(
                UI.Select(*recent, name='cmd', id='shell-recent',
                          onclick='shellRecentClick()'),
                id='frmRecent', hideok=True, hidecancel=True
              )

        logc = UI.ScrollContainer(log, width=500, height=300)
        lt = UI.VContainer(
                UI.HContainer(
                    frm, 
                    UI.Button(text='Run', form='frmRun', onclick='form')), 
                UI.HContainer(
                    UI.Label(text='Repeat:'),
                    frmr
                )
             )

        t = UI.VContainer(lt, logc, spacing=10)
        return t

    def go(self, cmd):
        if not self._process.is_running():
            self._process = BackgroundProcess(cmd)
            self._process.start()
            rcnt = [cmd]
            if len(self._recent) > 0:
                for x in self._recent:
                    rcnt.append(x)
            if len(rcnt) > 5:
                rcnt = rcnt[:5]
            self._recent = rcnt

    @event('form/submit')
    def on_submit(self, event, params, vars=None):
        self.go(vars.getvalue('cmd', ''))
コード例 #6
0
ファイル: main.py プロジェクト: Ozerich/ajenti
 def on_session_start(self):
     self._recent = []
     self._process = BackgroundProcess('')