def hud_set_prompt(self, prompt, default=''): if (prompt is None) and self.hud_prompt_input: htxt = self.hud_prompt_input.get_text() self.hud_prompt.hide() self.hud_prompt_input.hide() if htxt: self.hud_write(htxt) return if self.hud_prompt is None: for actor, anim, oldmsg in self.hud_history: actor.set_position(actor.get_x(), actor.get_y() - 20) self.hud_prompt = Clutter.Text() self.hud_prompt_input = Clutter.Text() self.stage.add_actor(self.hud_prompt) self.hud_prompt.set_position(10, self.stage.get_height() - 25) self.hud_prompt.set_property("opacity", 255) self.stage.add_actor(self.hud_prompt_input) self.hud_prompt.set_position(10, self.stage.get_height() - 25) self.hud_prompt.set_property("opacity", 255) else: self.hud_prompt.show() self.hud_prompt_input.show() self.hud_prompt.set_markup(prompt) self.hud_prompt_input.set_text(default) self.hud_prompt_input.set_position(15 + self.hud_prompt.get_width(), self.stage.get_height() - 25)
def __init__(self): super().__init__() self.set_title("TextApp") self.set_size(800, 600) self.text = TestText() self.cursor = Cursor_Canvas() layout = Clutter.BinLayout() self.container = Clutter.Actor() self.container.set_layout_manager(layout) self.container.add_child(self.text) self.container.add_child(self.cursor) self.pos = Clutter.Text() self.pos2 = Clutter.Text() self.pos.set_background_color(Clutter.Color.new(0, 0, 255, 255)) cursor_pos = self.text.get_cursor_position() coords = self.text.position_to_coords(cursor_pos) self.pos.set_text(''.join(["Kursor na pozycji: ", str(cursor_pos)])) self.pos2.set_text(''.join(["Kursor na koordynatach: ", str(coords)])) self.layout = Clutter.BoxLayout() self.layout.set_orientation(Clutter.Orientation.VERTICAL) self.set_layout_manager(self.layout) self.add_child(self.pos) self.add_child(self.container) self.add_child(self.pos2) self.text.connect("cursor_changed", lambda _1: self.onKeyPress(_1))
def send(self, comment): if not isinstance(comment, CoreComment): raise Exception('Must pass a CoreComment in order to send') if comment.mode != 1: return # Only support scrolling for now text = Clutter.Text() text.set_color(Clutter.Color.from_string(comment.color)[1]) text.set_text(comment.text) text.set_font_name(comment.get_font_string()) # Add a few extra text objects shadowBR = Clutter.Text() shadowBR.set_color(Clutter.Color.from_string("#000000")[1]) shadowBR.set_text(comment.text) shadowBR.set_font_name(comment.get_font_string()) shadowTL = Clutter.Text() shadowTL.set_color(Clutter.Color.from_string("#000000")[1]) shadowTL.set_text(comment.text) shadowTL.set_font_name(comment.get_font_string()) shadowBL = Clutter.Text() shadowBL.set_color(Clutter.Color.from_string("#000000")[1]) shadowBL.set_text(comment.text) shadowBL.set_font_name(comment.get_font_string()) shadowTR = Clutter.Text() shadowTR.set_color(Clutter.Color.from_string("#000000")[1]) shadowTR.set_text(comment.text) shadowTR.set_font_name(comment.get_font_string()) comment._drawObject = text comment._shadowBR = shadowBR comment._shadowTL = shadowTL comment._shadowBL = shadowBL comment._shadowTR = shadowTR if comment._width == None or comment._height == None: comment._width = comment._drawObject.get_width() + 1 comment._height = comment._drawObject.get_height() + 1 comment._x = float(self.width + comment._width) x = comment._x # set position comment._drawObject.set_position(x, comment._y) comment._shadowBR.set_position(x + 1, comment._y + 1) comment._shadowTL.set_position(x - 1, comment._y - 1) comment._shadowBL.set_position(x - 1, comment._y + 1) comment._shadowTR.set_position(x + 1, comment._y - 1) # add text and shadow self.add_child(shadowBR) self.add_child(shadowTL) self.add_child(shadowBL) self.add_child(shadowTR) self.add_child(text) self.allocator.add(comment) self.runline.append(comment)
def hud_write(self, msg, disp_time=3.0): def anim_complete(anim): new_history = [] for h_actor, h_anim, h_msg in self.hud_history: if anim != h_anim: new_history.append((h_actor, h_anim, h_msg)) else: h_actor.destroy() self.hud_history = new_history if not len(self.hud_history) or self.hud_history[0][2] != msg: for actor, anim, oldmsg in self.hud_history: actor.set_position(actor.get_x(), actor.get_y() - 20) else: self.hud_history[0][1].completed() for actor, anim, oldmsg in self.hud_history[3:]: anim.completed() actor = Clutter.Text() self.stage.add_actor(actor) if self.hud_prompt is None: actor.set_position(10, self.stage.get_height() - 25) else: actor.set_position(10, self.stage.get_height() - 45) actor.set_property("opacity", 255) actor.set_markup(msg) animation = actor.animatev(Clutter.AnimationMode.EASE_IN_CUBIC, disp_time * 1000.0, ['opacity'], [0]) self.hud_history[0:0] = [(actor, animation, msg)] animation.connect_after("completed", anim_complete)
def create_display(self, width, height): self.rect = clutter.Rectangle() self.label = clutter.Text() # group clutter.Group.set_size(self, width, height) # rectangle box self.rect.set_border_width(2) self.rect.set_border_color(self.get_color('stroke-color')) self.rect.set_position(0, 0) self.rect.set_size(width, height) self.rect.set_depth(-1) self.rect.set_reactive(False) # label self.label.set_position(self.label_off_x, self.label_off_y) self.label.set_color(self.get_color('text-color')) self.label.set_font_name(self.get_fontspec()) self.label.connect('text-changed', self.label_changed_cb) self.label.set_reactive(False) # chart created later self.xyplot = None self.add_actor(self.label) self.add_actor(self.rect) self.set_reactive(True)
def __init__(self, window, x, y): PatchElement.__init__(self, window, x, y) self.indicator = False # create elements self.texture = Clutter.Canvas.new() self.texture.set_size(20, 20) self.set_content(self.texture) self.texture.connect("draw", self.draw_cb) self.label = Clutter.Text() self.label.set_color(self.get_color('text-color')) self.label.set_font_name(self.get_fontspec()) self.label.connect('text-changed', self.label_changed_cb) self.label.set_reactive(False) self.label.set_use_markup(True) self.label_text = '' self.set_reactive(True) self.add_actor(self.label) self.set_size(20, 20) self.move(x, y) self.param_list.append('label_text') # request update when value changes self.update_required = True
def __init__(self, window, x, y): PatchElement.__init__(self, window, x, y) self.connections_out = [] self.connections_in = [] # create elements txs = self.VIA_SIZE + self.VIA_FUDGE self.texture = Clutter.CairoTexture.new(txs, txs) self.texture.set_size(txs, txs) self.texture.set_surface_size(txs, txs) self.texture.connect("draw", self.draw_cb) self.texture.set_position(0, self.TEXTURE_Y) self.label = Clutter.Text() self.label.set_position(0, self.LABEL_Y) self.set_reactive(True) self.add_actor(self.texture) self.add_actor(self.label) # configure label self.label.set_color(window.color_unselected) self.label.connect('text-changed', self.text_changed_cb) self.move(x, y) self.set_size( self.VIA_SIZE + 2 * self.VIA_FUDGE, self.VIA_SIZE + self.LABEL_HEIGHT + self.LABEL_FUDGE + 2 * self.VIA_FUDGE) self.recenter_label() self.texture.invalidate()
def __init__(self, window, x, y): PatchElement.__init__(self, window, x, y) self.message_text = None self.clickstate = False # create elements self.texture = Clutter.Canvas.new() self.set_content(self.texture) self.texture.connect("draw", self.draw_cb) self.texture.set_size(35, 25) self.label = Clutter.Text() self.set_reactive(True) self.add_actor(self.label) self.set_size(35, 25) self.obj_state = self.OBJ_HALFCREATED self.texture.invalidate() # configure label self.label.set_position(4, 1) self.label.set_color(self.get_color('text-color')) self.label.set_font_name(self.get_fontspec()) self.label.connect('text-changed', self.text_changed_cb) self.move(x, y) # request update when value changes self.update_required = True
def create_label(text, posX, posY, sizeX=IGNORE, sizeY=IGNORE, iD="label", color=0xf0f0f0ff, backgroundColor=0x404040ff, font="Mono 32"): label = Clutter.Text() label.set_id(iD) label.set_text(text) label.set_background_color(Clutter.color_from_pixel(backgroundColor)) label.set_color(Clutter.color_from_pixel(color)) label.set_font_name(font) ''' x = label.get_layout() x.set_alignment(Pango.Alignment.CENTER) print(x.get_alignment(), x.get_text()) x.set_spacing(50) x.set_justify(True) label.set_content_gravity(Clutter.Gravity.CENTER) label.set_line_alignment(Pango.Alignment.CENTER) label.set_justify(True) label.set_anchor_point(20,20) ''' if (posX != IGNORE) and (posY != IGNORE): label.set_position(posX, posY) if (sizeX != IGNORE) and (sizeY != IGNORE): label.set_size(sizeX, sizeY) return label
def __init__(self, text, font="sans 16"): super().__init__(Clutter.Text()) self._font = Pango.FontDescription.from_string(font) self.actor.set_font_description(self._font) self.actor.set_text(text)
def hud_banner(self, msg, disp_time=3.0): def anim_complete(anim, actor): actor.destroy() if self.hud_banner_anim is not None: self.hud_banner_anim.completed() self.hud_banner_text = Clutter.Group() txt = Clutter.Text() bg = Clutter.Rectangle() self.hud_banner_text.add_actor(bg) self.hud_banner_text.add_actor(txt) bg.set_color(ColorDB().find(255, 255, 255, 200)) self.stage.add_actor(self.hud_banner_text) self.hud_banner_text.set_position(12, 4) self.hud_banner_text.set_property("opacity", 255) txt.set_markup(msg) bg.set_size(self.hud_banner_text.get_width(), self.hud_banner_text.get_height()) anim = self.hud_banner_text.animatev(Clutter.AnimationMode.EASE_IN_CUBIC, disp_time * 1000.0, ['opacity'], [0]) anim.connect_after("completed", anim_complete, self.hud_banner_text) self.hud_banner_anim = anim
def rectangle(self, x, y): r = Clutter.Rectangle() r.set_color(Clutter.Color.new(0, 0, 255, 255)) r.set_size(200, 40) r.set_position(x, y) r.set_reactive(True) t = Clutter.Text() t.set_text('wow') t.set_position(x, y) return t
def create_line(i): line = Clutter.Text() # We must never see this color: line.set_color(Clutter.Color.new(255, 0, 255, 255)) line.set_font_name(self.font) line.set_width(self.char_width * self.shell.cols) line.set_height(self.char_height) line.set_y(i * self.char_height) self.linesGroup.add_actor(line) return line
def create_label(color, markup): text = Clutter.Text() text.set_color(Clutter.Color.from_string(color)) text.set_markup(markup) text.set_editable(False) text.set_selectable(False) text.set_single_line_mode(True) text.set_ellipsize(Pango.EllipsizeMode.END) return text
def show_autoplace_marker(self, x, y): if self.autoplace_marker is None: self.autoplace_marker = Clutter.Text() self.autoplace_marker.set_text("+") self.autoplace_layer = self.selected_layer self.autoplace_layer.group.add_actor(self.autoplace_marker) elif self.autoplace_layer != self.selected_layer: self.autoplace_layer.group.remove_actor(self.autoplace_marker) self.autoplace_layer = self.selected_layer self.autoplace_layer.group.add_actor(self.autoplace_marker) self.autoplace_marker.set_position(x, y) self.autoplace_marker.set_depth(-10) self.autoplace_marker.show()
def __init__(self, trace): super(TraceLabel, self).__init__() self.trace = trace self.set_size(144, 48) self.name_label = Clutter.Text() self.name_label.set_color(color_from_string('black')) self.name_label.set_text('foo bar') self.add_actor(self.name_label) self.name_label.set_position(6, 6) self.name_label.set_size(*self.get_size()) self.connect('paint', self.paint) self.trace.connect_after('notify::color', self.color_changed) self.trace.connect_after('notify::name', self.name_changed)
def add_wifi_tab(self, ap): actor = Clutter.Text() actor.set_selectable(False) actor.set_font_description(self.ap_font) actor.set_color(self.ap_color) actor.set_width(self.ap_width) actor.set_margin_left(self.ap_margin_left) self.set_text(actor, ap) tap = Clutter.TapAction() actor.add_action(tap) actor.ap = ap tap.connect("tap", self.ap_tap) actor.set_reactive(True) self.tabs_by_path[ap["object_path"]] = actor return actor
def label(stage, x, y, width, text): r = Clutter.Rectangle() r.set_color(Clutter.Color.new(0, 255, 255, 255)) r.set_size(width, 32) r.set_position(x, y) r.set_reactive(True) stage.add_actor(r) t = Clutter.Text() t.set_text(text) #t.set_markup('<span foreground="blue" background="red">' + text + '</span>') t.set_max_length(width - 8) t.set_position(x + 8, y + 6) #t.set_ellipsize = Pango.PangoEllipsizeMode.PANGO_ELLIPSIZE_END t.set_ellipsize(Pango.EllipsizeMode.END) t.set_reactive(True) stage.add_actor(t)
def __init__(self, window, x, y): PatchElement.__init__(self, window, x, y) self.value = '' self.param_list.append('value') # configure label self.label = Clutter.Text() self.label.set_color(window.color_unselected) self.add_actor(self.label) self.update_required = True self.set_size(12, 12) self.move(x, y) self.set_reactive(True) self.label_changed_cb = self.label.connect('text-changed', self.text_changed_cb)
def on_motion_event(self, stage, event): self.lastMouseX = event.x self.lastMouseY = event.y update = False if self.do_scroll: if self.pantimeout: GLib.source_remove(self.pantimeout) self.pantimeout = None if self.pan_camera(event.x, event.y): self.pantimeout = GLib.timeout_add(PAN_KEEP_INTERVAL, self.pan_camera, event.x, event.y, True) update = True if self.active_entity: # event.modifier_state == Clutter.BUTTON1_MASK and entity = self.active_entity wx, wy = self.camera.translate_from_view(event.x, event.y) self.space.set_pos(entity, (wx - self.dispx, wy - self.dispy)) update = True if update: self.update() if self.show_tooltip: try: actor = stage.get_actor_at_pos(event.x, event.y) ent = actor.entity title = ent.get_title() if self.label: self.stage.remove_actor(self.label) self.label = None self.label = Clutter.Text() self.label.set_text(title) self.label.set_color(Clutter.color_parse("white")) self.label.set_position(0, 0) self.label.show() self.stage.add_actor(self.label) self.stage.show_all() except Exception: if self.label: self.stage.remove_actor(self.label) self.label = None
def create_entry(color, passchar, maxlength): text = Clutter.Text() text.set_color(Clutter.Color.from_string(color)) text.set_reactive(True) text.set_editable(True) text.set_selectable(True) text.set_activatable(True) text.set_password_char(passchar) text.set_cursor_color(Clutter.Color.from_string("#fff")) text.set_selected_text_color(Clutter.Color.from_string("#acf")) text.set_single_line_mode(True) text.set_max_length(maxlength) text.connect("paint", on_entry_paint) text.connect("activate", on_entry_activate) # text.connect("captured-event", on_captured_event) return text
def __init__(self, window, x, y): PatchElement.__init__(self, window, x, y) self.value = 0 self.digits = 1 self.min_value = None self.max_value = None self.scientific = False self.format_str = "%.1f" self.connections_out = [] self.connections_in = [] self.update_required = True self.param_list.extend( ['digits', 'min_value', 'max_value', 'scientific']) self.obj_state = self.OBJ_HALFCREATED # create elements self.texture = Clutter.Canvas.new() self.texture.connect("draw", self.draw_cb) self.set_content(self.texture) self.label = Clutter.Text() self.set_reactive(True) self.add_actor(self.label) # configure label self.label.set_position(4, 1) self.label.set_font_name(self.get_fontspec()) self.label.set_color(self.get_color('text-color')) self.label.connect('text-changed', self.text_changed_cb) self.label.set_text(self.format_value(self.value)) # click handler # self.actor.connect('button-press-event', self.button_press_cb) self.move(x, y) self.set_size(35, 25) self.texture.invalidate()
def __init__(self): Clutter.Actor.__init__(self) self.__text = None self.__click = Clutter.ClickAction() self.__child = Clutter.Box() self.__label = Clutter.Text() self.__label.set_line_alignment(Pango.Alignment.CENTER) self.__label.set_ellipsize(Pango.EllipsizeMode.END) self.__click.connect("clicked", self.clicked) self.__child.set_layout_manager( Clutter.BinLayout.new(Clutter.BinAlignment.CENTER, Clutter.BinAlignment.CENTER)) self.__child.add_actor(self.__label) self.__child.set_parent(self) self.set_reactive(True) self.add_action(self.__click)
def label2(stage, x, y, width, text): bl = Clutter.BinLayout.new(Clutter.BinAlignment.CENTER, Clutter.BinAlignment.CENTER) # Aint happening? #b.set_position(x, y) #stage.add_actor(b) #container = Clutter.Actor.new() #container.set_layout_manager(bl) r = Clutter.Rectangle() r.set_layout_manager(bl) r.set_color(Clutter.Color.new(180, 100, 0, 255)) r.set_size(width, 32) r.set_reactive(True) #stage.add_child(r) #bl.add_child(r) #label(p, x, y, width, headText) #inStage = r.get_stage() t = Clutter.Text() t.set_text(text) t.set_x_expand(True) t.set_x_align(Clutter.ActorAlign.CENTER) t.set_y_expand(True) t.set_y_align(Clutter.ActorAlign.CENTER) t.set_background_color(Clutter.Color.new(255, 255, 200, 255)) t.set_position(0, 0) #t.set_markup('<span foreground="blue" background="red">' + text + '</span>') #t.set_max_length(width - 8) #t.set_ellipsize = Pango.PangoEllipsizeMode.PANGO_ELLIPSIZE_END #t.set_ellipsize = Pango.PangoEllipsizeMode.PANGO_ELLIPSIZE_END #s = r.get_stage() #r.add_child(t) #r.insert_child_above(t) #r.add_child(t) #t.margin_top = 5 #t.margin_left = 15 stage.add_child(t)
def __init__(self, window, x, y): PatchElement.__init__(self, window, x, y) self.value = '' self.clickchange = False self.default = '' self.param_list.extend(['value', 'clickchange', 'default']) self.texture = Clutter.Canvas.new() self.texture.connect("draw", self.draw_cb) self.set_content(self.texture) self.label = Clutter.Text() self.label.set_color(self.get_color('text-color')) self.label.set_font_name(self.get_fontspec()) self.label.set_position(3, 3) self.add_actor(self.label) self.update_required = True self.move(x, y) self.set_size(12, 12) self.set_reactive(True) self.label_changed_cb = self.label.connect('text-changed', self.text_changed_cb)
def __init__(self): self.black = Clutter.Box.new(Clutter.BinLayout()) self.black.set_color(Clutter.Color.new(0, 0, 0, 96)) self.label = Clutter.Text() self.label.set_color(Clutter.Color.new(255, 255, 255, 255)) self.xhair = Clutter.Rectangle.new_with_color( Clutter.Color.new(0, 0, 0, 64)) for signal in ['latitude', 'longitude']: map_view.connect('notify::' + signal, display, get_obj('maps_link'), self.label) map_view.connect( 'notify::width', lambda view, param, black: black.set_size(view.get_width(), 30), self.black) scale = Champlain.Scale.new() scale.connect_view(map_view) map_view.bin_layout_add(scale, Clutter.BinAlignment.START, Clutter.BinAlignment.END) map_view.bin_layout_add(self.black, Clutter.BinAlignment.START, Clutter.BinAlignment.START) self.black.get_layout_manager().add(self.label, Clutter.BinAlignment.CENTER, Clutter.BinAlignment.CENTER)
for i in range(N_RECTS): color = Clutter.Color.from_hls(360 / N_RECTS * i, 0.5, 0.8) color.alpha = 128 + 128 / N_RECTS * i rect = Clutter.Actor() rect.props.background_color = color rect.props.opacity = 0 rect.props.reactive = True rect.set_size(RECT_SIZE, RECT_SIZE) rect.set_pivot_point(0.5, 0.5) rect.set_easing_duration(250) rect.set_easing_mode(Clutter.AnimationMode.EASE_OUT_CUBIC) box.add_child(rect) transition = Clutter.PropertyTransition(property_name='opacity', duration=250, delay=i*50) transition.set_from(0) transition.set_to(color.alpha) rect.add_transition('fadeIn', transition) rect.connect('enter-event', on_enter) rect.connect('leave-event', on_leave) label = Clutter.Text(text="Press t → Toggle layout\nPress q → Quit") label.add_constraint(Clutter.AlignConstraint(source=stage, align_axis=Clutter.AlignAxis.X_AXIS, factor=0.50)) label.add_constraint(Clutter.AlignConstraint(source=stage, align_axis=Clutter.AlignAxis.Y_AXIS, factor=0.95)) stage.add_child(label) stage.connect('key-press-event', on_key_press, layout) Clutter.main()
# it'd be nice to have a better force model, but for now: FORCE = 50 # for some reason Clutter is lying to us… well… ACTOR_SIZE = 2048 smap = {'x': {-1: 'e', 1: 'w'}, 'y': {1: 'n', -1: 's'}} # if you set this, all magic goes away DEBUG = 0 if DEBUG: sky_color = Clutter.Color.new(0, 255, 0, 0) earth_color = Clutter.Color.new(255, 0, 0, 0) debug_text = Clutter.Text() debug_text.set_text("hello") debug_text.set_color(Clutter.Color.new(255, 0, 0, 200)) else: sky_color = Clutter.Color.new(255, 255, 255, 0) earth_color = Clutter.Color.new(0, 0, 0, 0) class XaMap: def __init__(self, tex=None, stage=None): self.current_tile = [0, 0] self.cache_dir = os.path.abspath(".cache") self.base_url = "http://imgs.xkcd.com/clickdrag/" try: os.mkdir(self.cache_dir)
def keyPress(self, event, _actor): _actor.set_position(200, 100) _actor.animatev(Clutter.AnimationMode.EASE_OUT_BOUNCE, 1500, ["x"], [20]) if __name__ == '__main__': Clutter.init(sys.argv) # Create Stage _stage = Clutter.Stage() _stage.set_title("Basic Usage") _stage.set_size(400, 200) # Create Actor _red = Clutter.Color().new(255, 0, 0, 255) # R,G,B,alpha _actor = Clutter.Text().new_full("Mono 10", "Hello World!", _red) _actor.set_position(100, 100) _actor_anim = _actor.animatev(Clutter.AnimationMode.EASE_OUT_BOUNCE, 1500, ["x"], [20]) # Add Actor to the Stage _stage.add_actor(_actor) _stage.connect("destroy", lambda w: Clutter.main_quit()) _stage.connect('key-press-event', keyPress, _actor) _stage.show_all() Clutter.main()
stage_height / 3 * 2 - text_height / 2) Clutter.init(None) stage = Clutter.Stage() stage.set_minimum_size(600, 400) stage.set_user_resizable(True) stage.set_title("Event Timer") stage.set_color(black) stage.connect_after("key-press-event", parseKeyPress) stage.connect("allocation-changed", redraw) stage.connect("destroy", finalize) time_elapsed = Clutter.Text() time_elapsed.set_color(white) time_remaining = Clutter.Text() time_remaining.set_color(white) stage.add_actor(time_elapsed) stage.add_actor(time_remaining) redraw() stage.show_all() t = Clutter.Timeline() t.set_duration(250) t.set_loop(True) t.connect('completed', update_display)