1
0
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:
dmiller
2022-12-07 20:34:03 +00:00
parent e2e55660c3
commit 24b26317c7
104 changed files with 5381 additions and 4383 deletions

View File

@@ -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: