mirror of
https://github.com/nmap/nmap.git
synced 2025-12-10 09:49:05 +00:00
Merge #2088: Update Zenmap to Python 3 and PyGObject
Note: Ndiff build will be broken until subsequent changes are made. Deprecation warnings will need to be addressed in future changes. Closes #2088
This commit is contained in:
@@ -57,10 +57,15 @@
|
||||
# * *
|
||||
# ***************************************************************************/
|
||||
|
||||
import gtk
|
||||
import gi
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, GLib, Gdk
|
||||
|
||||
import math
|
||||
import cairo
|
||||
import gobject
|
||||
|
||||
from functools import reduce
|
||||
|
||||
import radialnet.util.geometry as geometry
|
||||
import radialnet.util.misc as misc
|
||||
@@ -102,7 +107,7 @@ FILE_TYPE_PS = 3
|
||||
FILE_TYPE_SVG = 4
|
||||
|
||||
|
||||
class RadialNet(gtk.DrawingArea):
|
||||
class RadialNet(Gtk.DrawingArea):
|
||||
"""
|
||||
Radial network visualization widget
|
||||
"""
|
||||
@@ -162,7 +167,7 @@ class RadialNet(gtk.DrawingArea):
|
||||
|
||||
super(RadialNet, self).__init__()
|
||||
|
||||
self.connect('expose_event', self.expose)
|
||||
self.connect('draw', self.draw)
|
||||
self.connect('button_press_event', self.button_press)
|
||||
self.connect('button_release_event', self.button_release)
|
||||
self.connect('motion_notify_event', self.motion_notify)
|
||||
@@ -172,19 +177,17 @@ class RadialNet(gtk.DrawingArea):
|
||||
self.connect('key_release_event', self.key_release)
|
||||
self.connect('scroll_event', self.scroll_event)
|
||||
|
||||
self.add_events(gtk.gdk.BUTTON_PRESS_MASK |
|
||||
gtk.gdk.BUTTON_RELEASE_MASK |
|
||||
gtk.gdk.ENTER_NOTIFY |
|
||||
gtk.gdk.LEAVE_NOTIFY |
|
||||
gtk.gdk.MOTION_NOTIFY |
|
||||
gtk.gdk.NOTHING |
|
||||
gtk.gdk.KEY_PRESS_MASK |
|
||||
gtk.gdk.KEY_RELEASE_MASK |
|
||||
gtk.gdk.POINTER_MOTION_HINT_MASK |
|
||||
gtk.gdk.POINTER_MOTION_MASK |
|
||||
gtk.gdk.SCROLL_MASK)
|
||||
self.add_events(Gdk.EventMask.BUTTON_PRESS_MASK |
|
||||
Gdk.EventMask.BUTTON_RELEASE_MASK |
|
||||
Gdk.EventMask.ENTER_NOTIFY_MASK |
|
||||
Gdk.EventMask.LEAVE_NOTIFY_MASK |
|
||||
Gdk.EventMask.KEY_PRESS_MASK |
|
||||
Gdk.EventMask.KEY_RELEASE_MASK |
|
||||
Gdk.EventMask.POINTER_MOTION_HINT_MASK |
|
||||
Gdk.EventMask.POINTER_MOTION_MASK |
|
||||
Gdk.EventMask.SCROLL_MASK)
|
||||
|
||||
self.set_flags(gtk.CAN_FOCUS)
|
||||
self.set_can_focus(True)
|
||||
self.grab_focus()
|
||||
|
||||
def graph_is_not_empty(function):
|
||||
@@ -536,10 +539,10 @@ class RadialNet(gtk.DrawingArea):
|
||||
def scroll_event(self, widget, event):
|
||||
"""
|
||||
"""
|
||||
if event.direction == gtk.gdk.SCROLL_UP:
|
||||
if event.direction == Gdk.ScrollDirection.UP:
|
||||
self.set_scale(self.__scale + 0.01)
|
||||
|
||||
if event.direction == gtk.gdk.SCROLL_DOWN:
|
||||
if event.direction == Gdk.ScrollDirection.DOWN:
|
||||
self.set_scale(self.__scale - 0.01)
|
||||
|
||||
self.queue_draw()
|
||||
@@ -549,7 +552,7 @@ class RadialNet(gtk.DrawingArea):
|
||||
def key_press(self, widget, event):
|
||||
"""
|
||||
"""
|
||||
key = gtk.gdk.keyval_name(event.keyval)
|
||||
key = Gdk.keyval_name(event.keyval)
|
||||
|
||||
if key == 'KP_Add':
|
||||
self.set_ring_gap(self.__ring_gap + 1)
|
||||
@@ -571,7 +574,7 @@ class RadialNet(gtk.DrawingArea):
|
||||
def key_release(self, widget, event):
|
||||
"""
|
||||
"""
|
||||
key = gtk.gdk.keyval_name(event.keyval)
|
||||
key = Gdk.keyval_name(event.keyval)
|
||||
|
||||
if key == 'c':
|
||||
self.__translation = (0, 0)
|
||||
@@ -710,7 +713,8 @@ class RadialNet(gtk.DrawingArea):
|
||||
|
||||
if result is not None:
|
||||
|
||||
xw, yw = self.window.get_origin()
|
||||
# first returned value is not meaningful and should be ignored
|
||||
_, xw, yw = self.get_window().get_origin()
|
||||
node, point = result
|
||||
x, y = point
|
||||
|
||||
@@ -792,19 +796,16 @@ class RadialNet(gtk.DrawingArea):
|
||||
|
||||
return False
|
||||
|
||||
def expose(self, widget, event):
|
||||
def draw(self, widget, context):
|
||||
"""
|
||||
Drawing callback
|
||||
@type widget: GtkWidget
|
||||
@param widget: Gtk widget superclass
|
||||
@type event: GtkEvent
|
||||
@param event: Gtk event of widget
|
||||
@type context: cairo.Context
|
||||
@param context: cairo context class
|
||||
@rtype: boolean
|
||||
@return: Indicator of the event propagation
|
||||
"""
|
||||
context = widget.window.cairo_create()
|
||||
|
||||
context.rectangle(*event.area)
|
||||
context.set_source_rgb(1.0, 1.0, 1.0)
|
||||
context.fill()
|
||||
|
||||
@@ -820,8 +821,8 @@ class RadialNet(gtk.DrawingArea):
|
||||
# getting allocation reference
|
||||
allocation = self.get_allocation()
|
||||
|
||||
self.__center_of_widget = (allocation.width / 2,
|
||||
allocation.height / 2)
|
||||
self.__center_of_widget = (allocation.width // 2,
|
||||
allocation.height // 2)
|
||||
|
||||
xc, yc = self.__center_of_widget
|
||||
|
||||
@@ -1453,9 +1454,9 @@ class RadialNet(gtk.DrawingArea):
|
||||
self.__calc_node_positions()
|
||||
|
||||
# steps for slow-in/slow-out animation
|
||||
steps = range(self.__number_of_frames)
|
||||
steps = list(range(self.__number_of_frames))
|
||||
|
||||
for i in range(len(steps) / 2):
|
||||
for i in range(len(steps) // 2):
|
||||
steps[self.__number_of_frames - 1 - i] = steps[i]
|
||||
|
||||
# normalize angles and calculate interpolated points
|
||||
@@ -1572,7 +1573,7 @@ class RadialNet(gtk.DrawingArea):
|
||||
|
||||
# animation continue condition
|
||||
if index < self.__number_of_frames - 1:
|
||||
gobject.timeout_add(self.__animation_rate, # time to recall
|
||||
GLib.timeout_add(self.__animation_rate, # time to recall
|
||||
self.__livens_up, # recursive call
|
||||
index + 1) # next iteration
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user