Esempio n. 1
0
 def _make(cls, proxy, value):
     widget = NormalWidgetMaker._make(proxy, value)
     if ccode.is_expr(value):
         return HBox(List([
             widget,
             make_label(style.semicolon, ';')
         ]), relay_focus=True)
     return widget
Esempio n. 2
0
# Copyright (c) 2007 Enough Project.
# See LICENSE for details.

from ccode import c_escape_str
from LiteralWidget import LiteralWidget
import style


class LiteralStrWidget(LiteralWidget):
    escape_table = c_escape_str
    ldelimiter = rdelimiter = '"'
    ldelimiter_style = rdelimiter_style = style.literal_string_delimiter
    literal_style = style.literal_string
    example_frame_color = (255, 255, 255)
    example_style = style.example_string

    def _get_example_str(self):
        return self._get_string()


import nodes
from widget_for import NormalWidgetMaker

NormalWidgetMaker.register(nodes.LiteralString, LiteralStrWidget)
Esempio n. 3
0
# Copyright (c) 2007 Enough Project.
# See LICENSE for details.

from IdentifierWidget import IdentifierWidget
from VariableDeclarationWidget import VariableDeclarationWidget
import style

class VariableWidget(IdentifierWidget):
    def __init__(self, variable_proxy):
        IdentifierWidget.__init__(self, variable_proxy, style.variable_name)
        self._info_shower.info_widget = VariableDeclarationWidget(variable_proxy)
import nodes
from widget_for import NormalWidgetMaker
NormalWidgetMaker.register(nodes.Variable, VariableWidget)
Esempio n. 4
0
    def _unfold(self):
        """Unfold the code block"""
        self.block.meta['folded'] = False
        self._update_fold_state()

    def _delete_selected_child(self):
        """Delete block statement"""
        if self.statement_box.index is None or not self.block.statements:
            return
        self.block.statements.pop(self.statement_box.index)

    def _statement_index(self):
        index = self.statement_box.index
        if index is None:
            return 0
        return index

    def _insert_statement(self):
        """New statement before cursor"""
        index = self._statement_index()
        self.block.statements.insert(index, nodes.Missing())
        self.statement_box.set_index(index)

    def _append_statement(self):
        """New statement after cursor"""
        index = self._statement_index()+1
        self.block.statements.insert(index, nodes.Missing())
        self.statement_box.set_index(index)
NormalWidgetMaker.register(nodes.Block, BlockWidget)
    def _allowed_text(self, text):
        return getattr(self, '_%s__allowed_text' % (self._mode,))(text)

    def _dec__value_of_string(self, text):
        return int(text)
    def _dec__string_of_value(self, value):
        return str(abs(value))
    def _dec__allowed_text(self, value):
        return not value or value.isdigit()
    _dec__ldelimiter = ''

    def _oct__value_of_string(self, text):
        return int(text, 8)
    def _oct__string_of_value(self, value):
        return oct(long(abs(value)))[1:-1]
    def _oct__allowed_text(self, value):
        return all(c in '01234567' for c in value)
    _oct__ldelimiter = '0'

    def _hex__value_of_string(self, text):
        return int(text, 16)
    def _hex__string_of_value(self, value):
        return hex(long(abs(value)))[2:-1]
    def _hex__allowed_text(self, value):
        return all((c.isdigit() or c in 'abcdef')
                   for c in value.lower())
    _hex__ldelimiter = '0x'
import nodes
from widget_for import NormalWidgetMaker
NormalWidgetMaker.register(nodes.LiteralInt, LiteralIntWidget)
Esempio n. 6
0
# Copyright (c) 2007 Enough Project.
# See LICENSE for details.

from IdentifierWidget import IdentifierWidget
from EnumWidget import EnumWidget
import style

class EnumValueWidget(IdentifierWidget):
    def __init__(self, variable_proxy):
        IdentifierWidget.__init__(self, variable_proxy, style.enum_value)

        self._info_shower.info_widget = EnumWidget(self.variable.enum, self.variable)
import nodes
from widget_for import NormalWidgetMaker
NormalWidgetMaker.register(nodes.EnumValue, EnumValueWidget)
Esempio n. 7
0
    add_func_key = Keymap.Key(pygame.KMOD_CTRL, pygame.K_f)
    
    def __init__(self, module_proxy):
        self.module = module_proxy.get()
        self.func_box = VBox(CacheMap(NormalWidgetMaker.make, self.module.declarations),
                             relay_focus=True)
        VBox.__init__(self, List([
            make_label(style.module_name, loop.namer.get_name(self.module)),
            self.func_box,
        ]))

        self.keymap.register_key(
            self.add_func_key,
            Keymap.keydown_noarg(self._add_func)
        )

    def _add_func(self):
        """Add a new function"""
        func = nodes.Function(
            meta=nodes.Meta(name='new_func'),
            type=nodes.FunctionType(return_type=builtins.void(),
                                    parameters=List()),
            block=nodes.Block(statements=List()),
        )
        index = self.func_box.index
        if index is None:
            index = 0
        self.module.declarations.insert(index, func)
        self.func_box.set_index(index)
NormalWidgetMaker.register(nodes.Module, ModuleWidget)
# Copyright (c) 2007 Enough Project.
# See LICENSE for details.

from DefineWidget import DefineWidget
from IdentifierWidget import IdentifierWidget
import style

class DefineValueWidget(IdentifierWidget):
    def __init__(self, variable_proxy):
        IdentifierWidget.__init__(self, variable_proxy, style.define_value)
        self._info_shower.info_widget = DefineWidget(variable_proxy)
import nodes
from widget_for import NormalWidgetMaker
NormalWidgetMaker.register(nodes.Define, DefineValueWidget)