Navigation

  • index
  • modules |
  • previous |
  • PLink 2.4.2 documentation »
  • plink – A Python/Tk link editor

plink – A Python/Tk link editor¶

Technical documentation of the Python objects that underly PLink. Of interest only to Marc, Nathan, or similar folks.

class plink.LinkEditor(*args, **kwargs)¶

A complete graphical link drawing tool based on the one embedded in Jeff Weeks’ original SnapPea program.

active_crossing_data()¶

Return the tuple of edges crossed by the in and out arrows of the active vertex.

attach_cursor(reason='')¶
clear()¶
clicked_on_arrow(vertex)¶
crossed_arrows(arrow, ignore_list=[])¶

Return a tuple containing the arrows of the diagram which are crossed by the given arrow, in order along the given arrow.

cursor_on_arrow(point)¶
destroy_arrow(arrow)¶
detach_cursor(reason='')¶
done(event=None)¶
double_click(event)¶

Event handler for mouse double-clicks.

end_dragging_state()¶
focus_in(event)¶
focus_out(event)¶
generic_arrow(arrow)¶
generic_vertex(vertex)¶
goto_drawing_state(x1, y1)¶
goto_start_state()¶
make_alternating()¶

Changes crossings to make the projection alternating. Requires that all components be closed.

mouse_moved(event)¶

Handler for mouse motion events.

move_active(x, y)¶
move_is_ok()¶
notice_focus()¶
reflect()¶
set_start_cursor(x, y)¶
shift_click(event)¶

Event handler for mouse shift-clicks.

single_click(event)¶

Event handler for mouse clicks.

update_crossings(this_arrow)¶

Redraw any arrows which were changed by moving this_arrow.

verify_drag()¶

This module exports the class Arrow which represents a (directed) line segment in a PL link diagram.

class plink.arrow.Arrow(start, end, canvas=None, style='normal', color='black', other_params=None)¶

An arrow in a PL link diagram.

draw(crossings=[], recurse=True, skip_frozen=True)¶
epsilon = 8¶
erase()¶

Prepare the arrow for the garbage collector.

expose(crossings=[])¶
find_segments(crossings, include_overcrossings=False)¶

Return a list of segments that make up this arrow, each segment being a list of 4 coordinates [x0,y0,x1,y1]. The first segment starts at the start vertex, and the last one ends at the end vertex. Otherwise, endpoints are near crossings where this arrow goes under, leaving a gap between the endpoint and the crossing point. If the include_overcrossings flag is True, then the segments are also split at overcrossings, with no gap.

freeze()¶
property frozen¶
property hidden¶
hide()¶
make_faint()¶
reverse(crossings=[])¶
set_color(color)¶
set_end(vertex, crossings=[])¶
set_start(vertex, crossings=[])¶
too_close(vertex, tolerance=None)¶
vectorize()¶

This module exports the Crossing class, which represents a crossing in a link diagram, and the ECrossing class which represents an edge of the diagram passing through a crossing.

class plink.crossings.Crossing(over, under, is_virtual=False, label=None)¶

A pair of crossing arrows in a PL link diagram.

DT_hit(count, ecrossing)¶

Count the crossing, using DT conventions. Return True on the first hit if the count is odd and the crossing is shared by two components of the diagram. As a side effect, set the flipped attribute on the first hit.

clear_marks()¶
height(arrow)¶
locate()¶
mark_component(component)¶
reverse()¶
sign()¶
strand(arrow)¶
class plink.crossings.ECrossing(crossing, arrow)¶

A pair: (Crossing, Arrow), where the Arrow is involved in the Crossing. The ECrossings correspond 1-1 with edges of the link diagram.

goes_over()¶
pair()¶

Table of Contents

  • plink – A Python/Tk link editor
    • LinkEditor
      • LinkEditor.active_crossing_data()
      • LinkEditor.attach_cursor()
      • LinkEditor.clear()
      • LinkEditor.clicked_on_arrow()
      • LinkEditor.crossed_arrows()
      • LinkEditor.cursor_on_arrow()
      • LinkEditor.destroy_arrow()
      • LinkEditor.detach_cursor()
      • LinkEditor.done()
      • LinkEditor.double_click()
      • LinkEditor.end_dragging_state()
      • LinkEditor.focus_in()
      • LinkEditor.focus_out()
      • LinkEditor.generic_arrow()
      • LinkEditor.generic_vertex()
      • LinkEditor.goto_drawing_state()
      • LinkEditor.goto_start_state()
      • LinkEditor.make_alternating()
      • LinkEditor.mouse_moved()
      • LinkEditor.move_active()
      • LinkEditor.move_is_ok()
      • LinkEditor.notice_focus()
      • LinkEditor.reflect()
      • LinkEditor.set_start_cursor()
      • LinkEditor.shift_click()
      • LinkEditor.single_click()
      • LinkEditor.update_crossings()
      • LinkEditor.verify_drag()
    • Arrow
      • Arrow.draw()
      • Arrow.epsilon
      • Arrow.erase()
      • Arrow.expose()
      • Arrow.find_segments()
      • Arrow.freeze()
      • Arrow.frozen
      • Arrow.hidden
      • Arrow.hide()
      • Arrow.make_faint()
      • Arrow.reverse()
      • Arrow.set_color()
      • Arrow.set_end()
      • Arrow.set_start()
      • Arrow.too_close()
      • Arrow.vectorize()
    • Crossing
      • Crossing.DT_hit()
      • Crossing.clear_marks()
      • Crossing.height()
      • Crossing.locate()
      • Crossing.mark_component()
      • Crossing.reverse()
      • Crossing.sign()
      • Crossing.strand()
    • ECrossing
      • ECrossing.goes_over()
      • ECrossing.pair()

Previous topic

Installing and running PLink

This Page

  • Show Source

Quick search

Navigation

  • index
  • modules |
  • previous |
  • PLink 2.4.2 documentation »
  • plink – A Python/Tk link editor
© Copyright 2009-present, Marc Culler, Nathan Dunfield and others. Created using Sphinx 6.1.3.