Beispiel #1
0
    def on_slave_icon_selected(self, filename):
        """Called when the user selects a slave in the slave icon view."""
        from saplib import saputils

        # Add the slave into the slave graph.
        bus_type = self.sc.get_bus_type()

        tags = saputils.get_module_tags(filename, bus_type)
        module_name = tags["module"]
        filename = saputils.find_module_filename(module_name)
        self.property_view.set_node(module_name, filename, tags)
Beispiel #2
0
  def on_slave_icon_selected(self, filename):
    """Called when the user selects a slave in the slave icon view."""
    from saplib import saputils

    # Add the slave into the slave graph.
    bus_type = self.sc.get_bus_type()

    tags = saputils.get_module_tags(filename, bus_type)
    module_name = tags["module"]
    filename = saputils.find_module_filename(module_name)
    self.property_view.set_node(module_name, filename,  tags)
Beispiel #3
0
    def on_slave_add(self, filename, slave_type, index):
        """Called when the user visually drops a slave box into a valid location in
    one of the slave buses."""
        #    print "entered on slave add"
        from saplib import saputils
        from sap_controller import SlaveType

        #    print "filename: " + filename

        # Add the slave to the slave graph.
        bus_type = self.sc.get_bus_type()

        tags = saputils.get_module_tags(filename, bus_type)
        name_index = 0
        name = tags["module"]

        p_count = self.sc.get_number_of_slaves(SlaveType.PERIPHERAL)
        m_count = self.sc.get_number_of_slaves(SlaveType.MEMORY)

        # Check peripheral bus for the name.
        done = False
        while not done:
            #      print "checking names"
            for i in xrange(p_count):
                sname = self.sc.get_slave_name(SlaveType.PERIPHERAL, i)
                if sname == name + str(name_index):
                    name_index += 1
                    continue  # XXX needed?  Just continues for loop ...
            for i in xrange(m_count):
                sname = self.sc.get_slave_name(SlaveType.MEMORY, i)
                if sname == name + str(name_index):
                    name_index += 1
                    continue  # XXX needed?  Just continues for loop ...
            done = True
        self.sc.add_slave(name + str(name_index), filename, slave_type, index)
        self.gd.force_update()
        self.project_view.setup_project_view()
        return True
Beispiel #4
0
  def on_slave_add(self, filename, slave_type, index):
    """Called when the user visually drops a slave box into a valid location in
    one of the slave buses."""
#    print "entered on slave add"
    from saplib import saputils
    from sap_controller import SlaveType

#    print "filename: " + filename

    # Add the slave to the slave graph.
    bus_type = self.sc.get_bus_type()

    tags = saputils.get_module_tags(filename, bus_type)
    name_index = 0
    name = tags["module"]

    p_count = self.sc.get_number_of_slaves(SlaveType.PERIPHERAL)
    m_count = self.sc.get_number_of_slaves(SlaveType.MEMORY)

    # Check peripheral bus for the name.
    done = False
    while not done:
#      print "checking names"
      for i in xrange(p_count):
        sname = self.sc.get_slave_name(SlaveType.PERIPHERAL, i)
        if sname == name + str(name_index):
          name_index += 1
          continue   # XXX needed?  Just continues for loop ...
      for i in xrange(m_count):
        sname = self.sc.get_slave_name(SlaveType.MEMORY, i)
        if sname == name + str(name_index):
          name_index += 1
          continue   # XXX needed?  Just continues for loop ...
      done = True
    self.sc.add_slave(name + str(name_index), filename, slave_type, index)
    self.gd.force_update()
    self.project_view.setup_project_view()
    return True
Beispiel #5
0
    def __init__(self, filename=""):
        '''Initialize and display the Sap GUI.'''

        os.environ["SAPLIB_BASE"] = os.path.join(sys.path[0], os.pardir,
                                                 "saplib")
        from saplib import saputils
        import sap_controller as sc
        import graph_drawer
        import slave_icon_view as siv
        import property_view as pv
        import project_view
        import project_properties_view as ppv
        import module_view
        import status_text
        import open_dialog
        import save_dialog
        import properties_dialog

        # Load the sap controller.

        builderfile = "sap_gui.glade"
        windowname = "Sap IDE"
        builder = gtk.Builder()
        builder.add_from_file(builderfile)

        # Instantiate the singleton.
        sv = builder.get_object("status_textview")
        self.status = status_text.StatusText(sv)
        #    self.status.set_print_level(3)
        self.status.print_verbose(__file__, "Sap GUI Started!")

        self.sc = sc.SapController()
        self.module_view = module_view.ModuleView(self.sc)
        self.module_view.set_on_update_callback(self.on_properties_update)
        self.module_view.set_on_bind_callback(self.on_bind)
        self.module_view.set_on_unbind_callback(self.on_unbind)

        self.ppv = ppv.ProjectPropertiesView(self.sc)
        self.ppv.set_project_name_change_callback(self.on_project_name_changed)
        self.ppv.set_vendor_tool_change_callback(self.on_vendor_tools_changed)
        self.ppv.set_bus_change_callback(self.on_bus_template_changed)
        self.ppv.set_board_change_callback(self.on_board_changed)
        self.ppv.set_constraint_change_callback(self.on_constraint_file_change)
        self.open_dialog = open_dialog.OpenDialog()
        self.open_dialog.set_open_callback(self.on_open_cb)
        self.save_dialog = save_dialog.SaveDialog()
        self.save_dialog.set_save_callback(self.on_save_cb)
        self.properties_dialog = properties_dialog.PropertiesDialog()

        self.build_thread = None

        try:
            if len(filename) > 0:
                self.status.print_info(__file__, "Loading: " + filename)
                self.sc.load_config_file(filename)
        except IOError as err:
            self.status.print_error(__file__, "Failed to load")
            print "Error loading file: " + str(err)
            sys.exit(-1)

        self.status.print_info(__file__, "Loaded File!")

        self.sc.initialize_graph()

        self.gd = graph_drawer.GraphDrawer(self.sc.get_graph_manager())
        self.gd.set_debug_mode(debug=_debug)
        self.gd.set_slave_add_callback(self.on_slave_add)
        self.gd.set_slave_move_callback(self.on_slave_move)
        self.gd.set_slave_remove_callback(self.on_slave_remove)
        self.gd.set_slave_select_callback(self.on_slave_selected)
        self.gd.set_slave_arbitrator_select_callback(
            self.on_arbitrator_master_selected)
        self.gd.set_back_selected(self.on_back_selected)
        self.gd.set_arb_connect(self.on_arbitrator_connected)
        self.gd.set_arb_disconnect(self.on_arbitrator_disconnect)

        # Register callbacks.
        builder.connect_signals(self)

        self.window = builder.get_object("main_window")
        self.main_view = builder.get_object("mainhpanel")

        self.current_widget = None

        # Add project view.
        self.project_view = project_view.ProjectView(self.sc)
        self.project_view.set_size_request(200, -1)

        self.project_view.set_project_item_callback(
            self.on_project_item_changed)
        self.main_view.pack1(self.project_view, True, False)
        self.project_view.show()
        self.main_view.show_all()

        self.graph_pane = gtk.HPaned()
        self.graph_pane.show()
        self.set_main_view(self.graph_pane)
        #    self.main_view.pack2(self.graph_pane, True, False)
        self.prop_slave_view = gtk.VPaned()

        # Add slave property view ...
        self.slave_icon_view = siv.SlaveIconView()
        #    self.slave_icon_view.show()
        bus_type = self.sc.get_bus_type()
        slave_file_list = saputils.get_slave_list(bus_type)
        slave_dict = {}

        for slave in slave_file_list:
            slave_tags = saputils.get_module_tags(slave, bus_type)
            name = slave_tags["module"]
            slave_dict[name] = {}
            slave_dict[name]["filename"] = slave
            slave_dict[name]["r"] = 0.0
            slave_dict[name]["g"] = 0.0
            slave_dict[name]["b"] = 1.0

        self.slave_icon_view.set_slave_list(slave_dict)
        self.slave_icon_view.set_size_request(-1, 300)
        self.slave_icon_view.set_slave_icon_selected_callback(
            self.on_slave_icon_selected)

        # ... and icon view.
        self.prop_slave_view.add1(self.slave_icon_view)
        self.property_view = pv.PropertyView()
        self.property_view.show_all()
        self.property_view.set_size_request(-1, 100)

        self.prop_slave_view.add2(self.property_view)
        self.prop_slave_view.set_size_request(200, -1)
        self.prop_slave_view.show_all()

        # Add the graph drawer and property/slave list to self.graph_pane.
        #    self.graph_pane.add1(self.gd)
        self.graph_pane.pack1(self.gd, True, False)
        self.gd.set_size_request(400, -1)
        self.gd.show()
        self.graph_pane.pack2(self.prop_slave_view, True, False)

        # Set up the toolbar.
        self.main_toolbar = builder.get_object("main_toolbar")
        tb = self.main_toolbar

        # Open Icon
        icon = gtk.image_new_from_stock(gtk.STOCK_OPEN, 1)
        tb.append_item(
            "Open",  # label
            "Open a config file",  # tooltip
            "Open a config file",  # private tooltip
            icon,  # icon
            self.on_open)  # callback

        # Save Icon
        icon = gtk.image_new_from_stock(gtk.STOCK_SAVE, 1)
        tb.append_item(
            "Save",  # label
            "Save a config file",  # tooltip
            "Save a config file",  # private tooltip
            icon,  # icon
            self.on_save)  # callback

        # Properties Icon
        icon = gtk.image_new_from_stock(gtk.STOCK_PROPERTIES, 1)
        tb.append_item(
            "Properties",  # label
            "Set Properties",  # tooltip
            "Set Properties",  # private tooltip
            icon,  # icon
            self.on_properties)  # callback

        # Execute Icon
        icon = gtk.image_new_from_stock(gtk.STOCK_EXECUTE, 1)
        tb.append_item(
            "Execute",  # label
            "Set Execute",  # tooltip
            "Set Execute",  # private tooltip
            icon,  # icon
            self.on_execute)  # callback

        #    self.window.connect("destroy", gtk.main_quit)
        self.window.connect("destroy", self.sap_quit)
        self.window.show()

        self.filename = filename
        self.bc = build_controller.BuildController()
        return
Beispiel #6
0
  def __init__(self, filename = ""):
    '''Initialize and display the Sap GUI.'''

    os.environ["SAPLIB_BASE"] = os.path.join(sys.path[0], os.pardir, "saplib")
    from saplib import saputils
    import sap_controller as sc
    import graph_drawer
    import slave_icon_view as siv
    import property_view as pv
    import project_view
    import project_properties_view as ppv
    import module_view
    import status_text
    import open_dialog
    import save_dialog
    import properties_dialog

    # Load the sap controller.

    builderfile = "sap_gui.glade"
    windowname = "Sap IDE"
    builder = gtk.Builder()
    builder.add_from_file(builderfile)

    # Instantiate the singleton.
    sv = builder.get_object("status_textview")
    self.status = status_text.StatusText(sv)
#    self.status.set_print_level(3)
    self.status.print_verbose(__file__, "Sap GUI Started!")


    self.sc = sc.SapController()
    self.module_view = module_view.ModuleView(self.sc)
    self.module_view.set_on_update_callback(self.on_properties_update)
    self.module_view.set_on_bind_callback(self.on_bind)
    self.module_view.set_on_unbind_callback(self.on_unbind)

    self.ppv = ppv.ProjectPropertiesView(self.sc)
    self.ppv.set_project_name_change_callback(self.on_project_name_changed)
    self.ppv.set_vendor_tool_change_callback(self.on_vendor_tools_changed)
    self.ppv.set_bus_change_callback(self.on_bus_template_changed)
    self.ppv.set_board_change_callback(self.on_board_changed)
    self.ppv.set_constraint_change_callback(self.on_constraint_file_change)
    self.open_dialog = open_dialog.OpenDialog()
    self.open_dialog.set_open_callback(self.on_open_cb)
    self.save_dialog = save_dialog.SaveDialog()
    self.save_dialog.set_save_callback(self.on_save_cb)
    self.properties_dialog = properties_dialog.PropertiesDialog()

    self.build_thread = None

    try:
      if len(filename) > 0:
        self.status.print_info(__file__, "Loading: " + filename)
        self.sc.load_config_file(filename)
    except IOError as err:
      self.status.print_error(__file__, "Failed to load")
      print "Error loading file: " + str(err)
      sys.exit(-1)

    self.status.print_info(__file__, "Loaded File!")

    self.sc.initialize_graph()

    self.gd = graph_drawer.GraphDrawer(self.sc.get_graph_manager())
    self.gd.set_debug_mode(debug = _debug)
    self.gd.set_slave_add_callback(self.on_slave_add)
    self.gd.set_slave_move_callback(self.on_slave_move)
    self.gd.set_slave_remove_callback(self.on_slave_remove)
    self.gd.set_slave_select_callback(self.on_slave_selected)
    self.gd.set_slave_arbitrator_select_callback(self.on_arbitrator_master_selected)
    self.gd.set_back_selected(self.on_back_selected)
    self.gd.set_arb_connect(self.on_arbitrator_connected)
    self.gd.set_arb_disconnect(self.on_arbitrator_disconnect)


    # Register callbacks.
    builder.connect_signals(self)

    self.window = builder.get_object("main_window")
    self.main_view = builder.get_object("mainhpanel")


    self.current_widget = None

    # Add project view.
    self.project_view = project_view.ProjectView(self.sc)
    self.project_view.set_size_request(200, -1)

    self.project_view.set_project_item_callback(self.on_project_item_changed)
    self.main_view.pack1(self.project_view, True, False)
    self.project_view.show()
    self.main_view.show_all()

    self.graph_pane = gtk.HPaned()
    self.graph_pane.show()
    self.set_main_view(self.graph_pane)
#    self.main_view.pack2(self.graph_pane, True, False)
    self.prop_slave_view = gtk.VPaned()

    # Add slave property view ...
    self.slave_icon_view = siv.SlaveIconView()
#    self.slave_icon_view.show()
    bus_type = self.sc.get_bus_type()
    slave_file_list = saputils.get_slave_list(bus_type)
    slave_dict = {}

    for slave in slave_file_list:
      slave_tags = saputils.get_module_tags(slave, bus_type)
      name = slave_tags["module"]
      slave_dict[name] = {}
      slave_dict[name]["filename"] = slave
      slave_dict[name]["r"] = 0.0
      slave_dict[name]["g"] = 0.0
      slave_dict[name]["b"] = 1.0

    self.slave_icon_view.set_slave_list(slave_dict)
    self.slave_icon_view.set_size_request(-1, 300)
    self.slave_icon_view.set_slave_icon_selected_callback(self.on_slave_icon_selected)

    # ... and icon view.
    self.prop_slave_view.add1(self.slave_icon_view)
    self.property_view = pv.PropertyView()
    self.property_view.show_all()
    self.property_view.set_size_request(-1, 100)

    self.prop_slave_view.add2(self.property_view)
    self.prop_slave_view.set_size_request(200, -1)
    self.prop_slave_view.show_all()

    # Add the graph drawer and property/slave list to self.graph_pane.
#    self.graph_pane.add1(self.gd)
    self.graph_pane.pack1(self.gd, True, False)
    self.gd.set_size_request(400, -1)
    self.gd.show()
    self.graph_pane.pack2(self.prop_slave_view, True, False)

    # Set up the toolbar.
    self.main_toolbar = builder.get_object("main_toolbar")
    tb = self.main_toolbar

    # Open Icon
    icon = gtk.image_new_from_stock(gtk.STOCK_OPEN, 1)
    tb.append_item(
            "Open",                # label
            "Open a config file",  # tooltip
            "Open a config file",  # private tooltip
            icon,                  # icon
            self.on_open)          # callback

    # Save Icon
    icon = gtk.image_new_from_stock(gtk.STOCK_SAVE, 1)
    tb.append_item(
            "Save",                # label
            "Save a config file",  # tooltip
            "Save a config file",  # private tooltip
            icon,                  # icon
            self.on_save)          # callback

    # Properties Icon
    icon = gtk.image_new_from_stock(gtk.STOCK_PROPERTIES, 1)
    tb.append_item(
            "Properties",        # label
            "Set Properties",    # tooltip
            "Set Properties",    # private tooltip
            icon,                # icon
            self.on_properties)  # callback

    # Execute Icon
    icon = gtk.image_new_from_stock(gtk.STOCK_EXECUTE, 1)
    tb.append_item(
            "Execute",         # label
            "Set Execute",     # tooltip
            "Set Execute",     # private tooltip
            icon,              # icon
            self.on_execute)   # callback


#    self.window.connect("destroy", gtk.main_quit)
    self.window.connect("destroy", self.sap_quit)
    self.window.show()

    self.filename = filename
    self.bc = build_controller.BuildController()
    return