Esempio n. 1
0
    def __init__(self, window, connection):
        Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL, spacing=6)
        self.window = window
        self.connection = connection

        # Inits the read view
        self.readView = Gtk.TextView()
        fontdesc = Pango.FontDescription("Monospace 10")
        self.readView.modify_font(fontdesc)

        self.textbuffer = self.readView.get_buffer()

        set_textview_color(self.readView)

        self.textbuffer.create_tag("text")
        self.textbuffer.create_tag("mytext", weight=Pango.Weight.BOLD)

        self.sw = Gtk.ScrolledWindow()
        self.sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        self.sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
        uistuff.keepDown(self.sw)
        self.sw.add(self.readView)
        self.readView.set_editable(False)
        self.readView.set_cursor_visible(False)
        self.readView.props.wrap_mode = Gtk.WrapMode.WORD
        self.pack_start(self.sw, True, True, 0)

        # Inits the write view
        self.history = []
        self.pos = 0
        self.writeView = Gtk.Entry()
        # self.writeView.set_width_chars(80)
        self.pack_start(self.writeView, False, True, 0)

        self.writeView.connect("key-press-event", self.onKeyPress)
Esempio n. 2
0
    def load(self, gmwidg):
        self.boardview = gmwidg.board.view
        self.plot = ScorePlot(self.boardview)
        self.sw = __widget__ = Gtk.ScrolledWindow()
        __widget__.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
        port = Gtk.Viewport()
        port.add(self.plot)
        port.set_shadow_type(Gtk.ShadowType.NONE)
        __widget__.add(port)
        __widget__.show_all()

        self.plot_cid = self.plot.connect("selected", self.plot_selected)
        self.cid = self.boardview.connect('shownChanged', self.shownChanged)
        self.model_cids = [
            self.boardview.model.connect_after("game_changed", self.game_changed),
            self.boardview.model.connect_after("moves_undone", self.moves_undone),
            self.boardview.model.connect_after("analysis_changed", self.analysis_changed),
            self.boardview.model.connect_after("game_started", self.game_started),
            self.boardview.model.connect_after("game_terminated", self.on_game_terminated),
        ]

        def cb_config_changed(none):
            self.fetch_chess_conf()
            self.plot.redraw()
        self.cids_conf = [
            conf.notify_add("scoreLinearScale", cb_config_changed)
        ]
        self.fetch_chess_conf()

        uistuff.keepDown(__widget__)

        return __widget__
Esempio n. 3
0
    def load(self, gmwidg):
        self.boardview = gmwidg.board.view
        self.plot = ScorePlot(self.boardview)
        self.sw = __widget__ = Gtk.ScrolledWindow()
        __widget__.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
        port = Gtk.Viewport()
        port.add(self.plot)
        port.set_shadow_type(Gtk.ShadowType.NONE)
        __widget__.add(port)
        __widget__.show_all()

        self.plot.connect("selected", self.plot_selected)
        self.boardview.connect('shown_changed', self.shown_changed)
        glock_connect(self.boardview.model, "game_changed", self.game_changed)
        glock_connect(self.boardview.model, "moves_undoing",
                      self.moves_undoing)
        glock_connect(self.boardview.model, "analysis_changed",
                      self.analysis_changed)

        # Add the initial board
        glock_connect(self.boardview.model, "game_started", self.game_changed)

        uistuff.keepDown(__widget__)

        return __widget__
Esempio n. 4
0
    def __init__(self):
        GObject.GObject.__init__(self)

        # States for the color generator
        self.colors = {}
        self.startpoint = random.random()

        # Inits the read view
        self.readView = Gtk.TextView()

        set_textview_color(self.readView)

        sw = Gtk.ScrolledWindow()
        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        sw.set_shadow_type(Gtk.ShadowType.NONE)
        sw.set_size_request(-1, 20)
        uistuff.keepDown(sw)
        sw.add(self.readView)
        self.readView.set_editable(False)
        self.readView.props.wrap_mode = Gtk.WrapMode.WORD
        self.readView.props.pixels_below_lines = 1
        self.readView.props.pixels_above_lines = 2
        self.readView.props.left_margin = 2
        #self.readView.get_buffer().create_tag("log",
        #        foreground = self.readView.get_style().fg[Gtk.StateType.INSENSITIVE])
        self.pack1(BorderBox(sw, bottom=True), resize=True, shrink=True)

        # Create a 'log mark' in the beginning of the text buffer. Because we
        # query the log asynchronously and in chunks, we can use this to insert
        # it correctly after previous log messages, but before the new messages.
        start = self.readView.get_buffer().get_start_iter()
        self.readView.get_buffer().create_mark("logMark", start)

        # Inits the write view
        self.writeView = Gtk.TextView()

        set_textview_color(self.writeView)

        sw = Gtk.ScrolledWindow()
        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        sw.set_shadow_type(Gtk.ShadowType.NONE)
        sw.add(self.writeView)
        self.writeView.props.wrap_mode = Gtk.WrapMode.WORD
        self.writeView.props.pixels_below_lines = 1
        self.writeView.props.pixels_above_lines = 2
        self.writeView.props.left_margin = 2
        self.pack2(BorderBox(sw, top=True), resize=True, shrink=True)

        # Forces are reasonable position for the panner.
        def callback(widget, ctx):
            widget.disconnect(handle_id)
            allocation = widget.get_allocation()
            self.set_position(
                int(max(0.70 * allocation.height, allocation.height - 60)))

        handle_id = self.connect("draw", callback)

        self.writeView.connect("key-press-event", self.onKeyPress)
Esempio n. 5
0
    def __init__ (self):
        GObject.GObject.__init__(self)
        
        # States for the color generator
        self.colors = {}
        self.startpoint = random.random()
        
        # Inits the read view
        self.readView = Gtk.TextView()

        set_textview_color(self.readView)

        sw = Gtk.ScrolledWindow()
        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        sw.set_shadow_type(Gtk.ShadowType.NONE)
        sw.set_size_request(-1, 20)
        uistuff.keepDown(sw)
        sw.add(self.readView)
        self.readView.set_editable(False)
        self.readView.props.wrap_mode = Gtk.WrapMode.WORD
        self.readView.props.pixels_below_lines = 1
        self.readView.props.pixels_above_lines = 2
        self.readView.props.left_margin = 2
        #self.readView.get_buffer().create_tag("log",
        #        foreground = self.readView.get_style().fg[Gtk.StateType.INSENSITIVE])
        self.pack1(BorderBox(sw,bottom=True), resize=True, shrink=True)
        
        # Create a 'log mark' in the beginning of the text buffer. Because we
        # query the log asynchronously and in chunks, we can use this to insert
        # it correctly after previous log messages, but before the new messages.   
        start = self.readView.get_buffer().get_start_iter()
        self.readView.get_buffer().create_mark("logMark", start)
        
        # Inits the write view
        self.writeView = Gtk.TextView()

        set_textview_color(self.writeView)

        sw = Gtk.ScrolledWindow()
        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        sw.set_shadow_type(Gtk.ShadowType.NONE)
        sw.add(self.writeView)
        self.writeView.props.wrap_mode = Gtk.WrapMode.WORD
        self.writeView.props.pixels_below_lines = 1
        self.writeView.props.pixels_above_lines = 2
        self.writeView.props.left_margin = 2
        self.pack2(BorderBox(sw,top=True), resize=True, shrink=True)
        
        # Forces are reasonable position for the panner.
        def callback (widget, ctx):
            widget.disconnect(handle_id)
            allocation = widget.get_allocation()
            self.set_position(int(max(0.70*allocation.height, allocation.height-60)))        
        handle_id = self.connect("draw", callback)
        
        self.writeView.connect("key-press-event", self.onKeyPress)
Esempio n. 6
0
    def _createPage(cls, parrentIter, tag):
        name = tag[-1]
        iter = cls.treeview.get_model().append(parrentIter, (name, ))
        cls.tagToIter[tag] = iter

        widgets = uistuff.GladeWidgets("findbar.glade")
        frame = widgets["frame"]
        frame.unparent()
        frame.show_all()

        uistuff.keepDown(widgets["scrolledwindow"])
        textview = widgets["textview"]
        tb = textview.get_buffer()
        tb.create_tag(str(LOG_DEBUG), family='Monospace')
        tb.create_tag(str(LOG_LOG),
                      family='Monospace',
                      weight=pango.WEIGHT_BOLD)
        tb.create_tag(str(LOG_WARNING), family='Monospace', foreground="red")
        tb.create_tag(str(LOG_ERROR),
                      family='Monospace',
                      weight=pango.WEIGHT_BOLD,
                      foreground="red")

        findbar = widgets["findbar"]
        findbar.hide()
        # Make searchEntry and "out of label" share height with the buttons
        widgets["prevButton"].connect(
            "size-allocate",
            lambda w, alloc: widgets["searchEntry"].set_size_request(
                -1, alloc.height) or widgets["outofLabel"].set_size_request(
                    -1, alloc.height - 2))

        # Make "out of label" more visually distinct
        uistuff.makeYellow(widgets["outofLabel"])
        widgets["outofLabel"].hide()

        widgets["closeButton"].connect("clicked",
                                       lambda w: widgets["findbar"].hide())

        # Connect showing/hiding of the findbar
        cls.window.connect("key-press-event", cls.onTextviewKeypress, widgets)
        widgets["findbar"].connect("key-press-event", cls.onFindbarKeypress)

        widgets["searchEntry"].connect("changed", cls.onSearchChanged, widgets)

        widgets["prevButton"].connect("clicked",
                                      lambda w: cls.searchJump(-1, widgets))
        widgets["nextButton"].connect("clicked",
                                      lambda w: cls.searchJump(1, widgets))

        cls.pages.append_page(frame)
        page = {"child": frame, "textview": textview}
        cls.tagToPage[tag] = page
        cls.pathToPage[cls.treeview.get_model().get_path(iter)] = page

        cls.treeview.expand_all()
Esempio n. 7
0
 def _createPage (cls, parrentIter, tag):
     name = tag[-1]
     if isinstance(name, int):
         name=str(name)
     iter = cls.treeview.get_model().append(parrentIter, (name,))
     cls.tagToIter[tag] = iter
     
     widgets = uistuff.GladeWidgets("findbar.glade")
     frame = widgets["frame"]
     frame.unparent()
     frame.show_all()
     
     uistuff.keepDown(widgets["scrolledwindow"])
     textview = widgets["textview"]
     tb = textview.get_buffer()
     tb.create_tag(str(logging.DEBUG), family='Monospace')
     tb.create_tag(str(logging.INFO), family='Monospace', weight=Pango.Weight.BOLD)
     tb.create_tag(str(logging.WARNING), family='Monospace', foreground="red")
     tb.create_tag(str(logging.ERROR), family='Monospace', weight=Pango.Weight.BOLD, foreground="red")
     
     
     findbar = widgets["findbar"]
     findbar.hide()
     # Make searchEntry and "out of label" share height with the buttons
     widgets["prevButton"].connect("size-allocate", lambda w, alloc:
             widgets["searchEntry"].set_size_request(-1, alloc.height) or
             widgets["outofLabel"].set_size_request(-1, alloc.height-2))
     
     # Make "out of label" more visually distinct
     uistuff.makeYellow(widgets["outofLabel"])
     widgets["outofLabel"].hide()
     
     widgets["closeButton"].connect("clicked", lambda w:
                                    widgets["findbar"].hide())
     
     # Connect showing/hiding of the findbar
     cls.window.connect("key-press-event", cls.onTextviewKeypress, widgets)
     widgets["findbar"].connect("key-press-event", cls.onFindbarKeypress)
     
     widgets["searchEntry"].connect("changed", cls.onSearchChanged, widgets)
     
     widgets["prevButton"].connect("clicked", lambda w: cls.searchJump(-1, widgets))
     widgets["nextButton"].connect("clicked", lambda w: cls.searchJump(1, widgets))
     
     
     
     
     cls.pages.append_page(frame, None)
     page = {"child": frame, "textview":textview}
     cls.tagToPage[tag] = page
     cls.pathToPage[cls.treeview.get_model().get_path(iter).to_string()] = page
     
     cls.treeview.expand_all()
Esempio n. 8
0
    def __init__(self, window, connection):
        Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL, spacing=6)
        self.window = window
        self.connection = connection

        # Inits the read view
        self.readView = Gtk.TextView()
        fontdesc = Pango.FontDescription("Monospace 10")
        self.readView.modify_font(fontdesc)

        self.textbuffer = self.readView.get_buffer()

        set_textview_color(self.readView)

        self.textbuffer.create_tag("text")
        self.textbuffer.create_tag("mytext", weight=Pango.Weight.BOLD)

        self.sw = Gtk.ScrolledWindow()
        self.sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        self.sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
        uistuff.keepDown(self.sw)
        self.sw.add(self.readView)
        self.readView.set_editable(False)
        self.readView.set_cursor_visible(False)
        self.readView.props.wrap_mode = Gtk.WrapMode.WORD
        self.pack_start(self.sw, True, True, 0)

        # Inits entry
        self.history = []
        self.pos = 0

        liststore = Gtk.ListStore(str)
        for command in FICS_COMMANDS:
            liststore.append([command])
        for command in FICS_HELP:
            liststore.append(["help %s" % command])

        entrycompletion = Gtk.EntryCompletion()
        entrycompletion.set_model(liststore)
        entrycompletion.set_text_column(0)
        entrycompletion.set_minimum_key_length(2)
        entrycompletion.set_popup_set_width(False)

        self.entry = Gtk.Entry()
        self.entry.set_completion(entrycompletion)

        self.pack_start(self.entry, False, True, 0)

        self.entry.connect("key-press-event", self.onKeyPress)
Esempio n. 9
0
    def __init__(self, connection):
        GObject.GObject.__init__(self)
        self.connection = connection

        # Inits the read view
        self.readView = Gtk.TextView()
        fontdesc = Pango.FontDescription("Monospace 10")
        self.readView.modify_font(fontdesc)

        self.textbuffer = self.readView.get_buffer()
        sc = self.get_style_context()
        self.textbuffer.create_tag("text",
                                   foreground=sc.get_color(
                                       Gtk.StateFlags.NORMAL))
        self.textbuffer.create_tag("mytext", weight=Pango.Weight.BOLD)

        self.sw = sw = Gtk.ScrolledWindow()
        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        sw.set_shadow_type(Gtk.ShadowType.NONE)
        uistuff.keepDown(sw)
        sw.add(self.readView)
        self.readView.set_editable(False)
        self.readView.set_cursor_visible(False)
        self.readView.props.wrap_mode = Gtk.WrapMode.WORD
        self.pack1(sw, resize=True, shrink=True)

        # Inits the write view
        self.history = []
        self.pos = 0
        self.writeView = Gtk.Entry()
        #self.writeView.set_width_chars(80)
        self.pack2(self.writeView, resize=True, shrink=True)

        # Forces are reasonable position for the panner.
        def callback(widget, context):
            widget.disconnect(handle_id)
            allocation = widget.get_allocation()
            self.set_position(
                int(max(0.79 * allocation.height, allocation.height - 60)))

        handle_id = self.connect("draw", callback)

        self.writeView.connect("key-press-event", self.onKeyPress)
Esempio n. 10
0
    def __init__ (self, connection):
        GObject.GObject.__init__(self)
        self.connection = connection

        # Inits the read view
        self.readView = Gtk.TextView()
        fontdesc = Pango.FontDescription("Monospace 10")
        self.readView.modify_font(fontdesc)

        self.textbuffer = self.readView.get_buffer()

        set_textview_color(self.readView)

        self.textbuffer.create_tag("text")
        self.textbuffer.create_tag("mytext", weight=Pango.Weight.BOLD)

        self.sw = sw = Gtk.ScrolledWindow()
        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        sw.set_shadow_type(Gtk.ShadowType.NONE)
        uistuff.keepDown(sw)
        sw.add(self.readView)
        self.readView.set_editable(False)
        self.readView.set_cursor_visible(False)
        self.readView.props.wrap_mode = Gtk.WrapMode.WORD
        self.pack1(sw, resize=True, shrink=True)

        # Inits the write view
        self.history = []
        self.pos = 0
        self.writeView = Gtk.Entry()
        #self.writeView.set_width_chars(80)
        self.pack2(self.writeView, resize=True, shrink=True)

        # Forces are reasonable position for the panner.
        def callback (widget, context):
            widget.disconnect(handle_id)
            allocation = widget.get_allocation()
            self.set_position(int(max(0.79*allocation.height, allocation.height-60)))
        handle_id = self.connect("draw", callback)

        self.writeView.connect("key-press-event", self.onKeyPress)
Esempio n. 11
0
    def load (self, gmwidg):
        self.boardview = gmwidg.board.view
        self.plot = ScorePlot(self.boardview)
        self.sw = __widget__ = Gtk.ScrolledWindow()
        __widget__.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
        port = Gtk.Viewport()
        port.add(self.plot)
        port.set_shadow_type(Gtk.ShadowType.NONE)
        __widget__.add(port)
        __widget__.show_all()

        self.plot.connect("selected", self.plot_selected)
        self.boardview.connect('shownChanged', self.shownChanged)
        self.boardview.model.connect_after("game_changed", self.game_changed)
        self.boardview.model.connect_after("moves_undone", self.moves_undone)
        self.boardview.model.connect_after("analysis_changed", self.analysis_changed)
        self.boardview.model.connect_after("game_started", self.game_started)

        uistuff.keepDown(__widget__)

        return __widget__
Esempio n. 12
0
    def __init__ (self, connection):
        gtk.VPaned.__init__(self)
        self.connection = connection
        
        # Inits the read view
        self.readView = gtk.TextView()
        fontdesc = pango.FontDescription("Monospace 10")
        self.readView.modify_font(fontdesc)
        
        self.textbuffer = self.readView.get_buffer()
        self.textbuffer.create_tag("text", foreground="black")
        self.textbuffer.create_tag("mytext", foreground="darkblue")

        self.sw = sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        sw.set_shadow_type(gtk.SHADOW_NONE)
        uistuff.keepDown(sw)
        sw.add(self.readView)
        self.readView.set_editable(False)
        self.readView.set_cursor_visible(False)
        self.readView.props.wrap_mode = gtk.WRAP_WORD
        self.pack1(sw, resize=True, shrink=True)
        
        # Inits the write view
        self.history = []
        self.pos = 0
        self.writeView = gtk.Entry()
        #self.writeView.set_width_chars(80)
        self.pack2(self.writeView, resize=True, shrink=True)
        
        # Forces are reasonable position for the panner.
        def callback (widget, event):
            widget.disconnect(handle_id)
            allocation = widget.get_allocation()
            self.set_position(int(max(0.79*allocation.height, allocation.height-60)))
        handle_id = self.connect("expose-event", callback)
        
        self.writeView.connect("key-press-event", self.onKeyPress)
        self.writeView.grab_focus()
Esempio n. 13
0
    def __init__ (self, gamemodel=None):
        GObject.GObject.__init__(self)
        self.gamemodel = gamemodel

        # States for the color generator
        self.colors = {}
        self.startpoint = random.random()

        # Inits the read view
        self.readView = Gtk.TextView()
        #self.readView.set_size_request(-1, 30)
        set_textview_color(self.readView)

        sw1 = Gtk.ScrolledWindow()
        sw1.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        sw1.set_shadow_type(Gtk.ShadowType.NONE)
        #sw1.set_size_request(-1, 300)
        uistuff.keepDown(sw1)

        sw1.add(self.readView)
        self.readView.set_editable(False)
        self.readView.set_cursor_visible(False)
        self.readView.props.wrap_mode = Gtk.WrapMode.WORD
        self.readView.props.pixels_below_lines = 1
        self.readView.props.pixels_above_lines = 2
        self.readView.props.left_margin = 2
        #self.readView.get_buffer().create_tag("log",
        #        foreground = self.readView.get_style().fg[Gtk.StateType.INSENSITIVE])

        if isinstance(self.gamemodel, ICGameModel):
            self.refresh = Gtk.Image()
            self.refresh.set_from_pixbuf(load_icon(16, "view-refresh", "stock-refresh"))

            vp = Gtk.VPaned()

            # Inits the observers view
            self.obsView = Gtk.TextView()
            self.obsView.set_cursor_visible(False)
            #self.obsView.set_size_request(-1, 3)
            set_textview_color(self.obsView)

            sw0 = Gtk.ScrolledWindow()
            sw0.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
            sw0.set_shadow_type(Gtk.ShadowType.NONE)
            sw0.set_size_request(-1, 3)
            uistuff.keepDown(sw0)
            sw0.add(self.obsView)
            self.obsView.set_editable(False)
            self.obsView.props.wrap_mode = Gtk.WrapMode.WORD
            self.obsView.props.pixels_below_lines = 1
            self.obsView.props.pixels_above_lines = 2
            self.obsView.props.left_margin = 2

            vp.pack1(BorderBox(sw0, bottom=True), resize=False, shrink=False)
            vp.pack2(BorderBox(sw1, top=True), resize=True, shrink=False)

            self.pack1(BorderBox(vp, bottom=True), resize=True, shrink=True)
        else:
            self.pack1(BorderBox(sw1, bottom=True), resize=True, shrink=True)

        # Create a 'log mark' in the beginning of the text buffer. Because we
        # query the log asynchronously and in chunks, we can use this to insert
        # it correctly after previous log messages, but before the new messages.
        start = self.readView.get_buffer().get_start_iter()
        self.readView.get_buffer().create_mark("logMark", start)

        # Inits the write view
        self.writeView = Gtk.TextView()
        set_textview_color(self.writeView)

        sw2 = Gtk.ScrolledWindow()
        sw2.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        sw2.set_shadow_type(Gtk.ShadowType.NONE)
        sw2.set_size_request(-1, 3)
        sw2.add(self.writeView)
        self.writeView.props.wrap_mode = Gtk.WrapMode.WORD
        self.writeView.props.pixels_below_lines = 1
        self.writeView.props.pixels_above_lines = 2
        self.writeView.props.left_margin = 2
        self.pack2(BorderBox(sw2, top=True), resize=False, shrink=False)

        # Forces are reasonable position for the panner.
        def callback (widget, ctx):
            widget.disconnect(handle_id)
            allocation = widget.get_allocation()
            self.set_position(int(max(0.70*allocation.height, allocation.height-60)))
        handle_id = self.connect("draw", callback)

        self.writeView.connect("key-press-event", self.onKeyPress)
Esempio n. 14
0
    def __init__(self, connection):
        Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL, spacing=6)
        self.connection = connection
        self.connection.players.connect("FICSPlayerEntered",
                                        self.on_player_entered)
        self.connection.players.connect("FICSPlayerExited",
                                        self.on_player_exited)

        # Inits the read view
        self.readView = Gtk.TextView()
        fontdesc = Pango.FontDescription("Monospace 10")
        self.readView.modify_font(fontdesc)

        self.textbuffer = self.readView.get_buffer()

        set_textview_color(self.readView)

        self.textbuffer.create_tag("text")
        self.textbuffer.create_tag("mytext", weight=Pango.Weight.BOLD)

        self.sw = Gtk.ScrolledWindow()
        self.sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        self.sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
        uistuff.keepDown(self.sw)
        self.sw.add(self.readView)
        self.readView.set_editable(False)
        self.readView.set_cursor_visible(False)
        self.readView.props.wrap_mode = Gtk.WrapMode.WORD
        self.pack_start(self.sw, True, True, 0)

        # Inits entry
        self.history = []
        self.pos = 0

        self.liststore = Gtk.ListStore(str, int)
        for command in FICS_COMMANDS:
            self.liststore.append([command, TYPE_COMMAND])
        for command in FICS_HELP:
            self.liststore.append([command, TYPE_HELP])

        completion = Gtk.EntryCompletion()
        completion.set_model(self.liststore)
        completion.set_text_column(0)

        completion.set_minimum_key_length(2)
        completion.set_popup_set_width(False)

        def match(completion, entrystr, iter, data):
            modelstr = completion.get_model()[iter][0].lower()
            modeltype = completion.get_model()[iter][1]
            parts = entrystr.split()
            if len(parts) == 1 and modeltype == TYPE_COMMAND:
                return modelstr.startswith(entrystr)
            elif len(parts) == 2:
                if parts[0] == "help":
                    return modelstr.startswith(
                        parts[1]) and modeltype == TYPE_HELP
                else:
                    return parts[0] in FICS_COMMANDS and modelstr.startswith(
                        parts[1].lower()) and modeltype == TYPE_USER

        completion.set_match_func(match, None)

        def on_match_selected(completion, treemodel, treeiter):
            modelstr = treemodel[treeiter][0]
            modeltype = treemodel[treeiter][1]
            entry = completion.get_entry()
            parts = entry.get_text().split()
            if len(parts) == 1 and modeltype == TYPE_COMMAND:
                entry.set_text(modelstr)
                entry.set_position(-1)
                return True
            elif len(parts) == 2:
                entry.set_text("%s %s" % (parts[0], modelstr))
                entry.set_position(-1)
                return True

        completion.connect('match-selected', on_match_selected)

        self.entry = Gtk.Entry()
        self.entry.set_completion(completion)

        self.pack_start(self.entry, False, True, 0)

        self.entry.connect("key-press-event", self.onKeyPress)
Esempio n. 15
0
    def __init__(self, connection):
        Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL, spacing=6)
        self.connection = connection
        self.connection.players.connect("FICSPlayerEntered", self.on_player_entered)
        self.connection.players.connect("FICSPlayerExited", self.on_player_exited)

        # Inits the read view
        self.readView = Gtk.TextView()
        fontdesc = Pango.FontDescription("Monospace 10")
        self.readView.modify_font(fontdesc)

        self.textbuffer = self.readView.get_buffer()
        self.textbuffer.create_tag("text")
        self.textbuffer.create_tag("mytext", weight=Pango.Weight.BOLD)

        self.sw = Gtk.ScrolledWindow()
        self.sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        self.sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
        uistuff.keepDown(self.sw)
        self.sw.add(self.readView)
        self.readView.set_editable(False)
        self.readView.set_cursor_visible(False)
        self.readView.props.wrap_mode = Gtk.WrapMode.WORD
        self.pack_start(self.sw, True, True, 0)

        # Inits entry
        self.history = []
        self.pos = 0

        self.liststore = Gtk.ListStore(str, int)
        for command in FICS_COMMANDS:
            self.liststore.append([command, TYPE_COMMAND])
        for command in FICS_HELP:
            self.liststore.append([command, TYPE_HELP])

        completion = Gtk.EntryCompletion()
        completion.set_model(self.liststore)
        completion.set_text_column(0)

        completion.set_minimum_key_length(2)
        completion.set_popup_set_width(False)

        def match(completion, entrystr, iter, data):
            modelstr = completion.get_model()[iter][0].lower()
            modeltype = completion.get_model()[iter][1]
            parts = entrystr.split()
            if len(parts) == 1 and modeltype == TYPE_COMMAND:
                return modelstr.startswith(entrystr)
            elif len(parts) == 2:
                if parts[0] == "help":
                    return modelstr.startswith(parts[1]) and modeltype == TYPE_HELP
                else:
                    return parts[0] in FICS_COMMANDS and modelstr.startswith(parts[1].lower()) and modeltype == TYPE_USER
        completion.set_match_func(match, None)

        def on_match_selected(completion, treemodel, treeiter):
            modelstr = treemodel[treeiter][0]
            modeltype = treemodel[treeiter][1]
            entry = completion.get_entry()
            parts = entry.get_text().split()
            if len(parts) == 1 and modeltype == TYPE_COMMAND:
                entry.set_text(modelstr)
                entry.set_position(-1)
                return True
            elif len(parts) == 2:
                entry.set_text("%s %s" % (parts[0], modelstr))
                entry.set_position(-1)
                return True
        completion.connect('match-selected', on_match_selected)

        self.entry = Gtk.Entry()
        self.entry.set_completion(completion)

        self.pack_start(self.entry, False, True, 0)

        self.entry.connect("key-press-event", self.onKeyPress)