Example #1
0
GtkWidget*
dma_sparse_view_new_with_buffer (DmaSparseBuffer *buffer)
{
	GtkWidget *view;

	view = g_object_new (DMA_SPARSE_VIEW_TYPE, NULL);
	g_assert (view != NULL);
	
	DMA_SPARSE_VIEW(view)->priv->buffer = buffer;
	dma_sparse_buffer_get_iterator_at_address (buffer, &(DMA_SPARSE_VIEW (view))->priv->start, 0);

	return view;
}
Example #2
0
static gint
dma_sparse_view_expose (GtkWidget      *widget,
			GdkEventExpose *event)
{
	DmaSparseView *view;
	GtkTextView *text_view;
	gboolean event_handled;
	
	view = DMA_SPARSE_VIEW (widget);
	text_view = GTK_TEXT_VIEW (widget);

	event_handled = FALSE;
	
	/* now check for the left window, which contains the margin */
	if (event->window == gtk_text_view_get_window (text_view,
						       GTK_TEXT_WINDOW_LEFT)) 
	{
		dma_sparse_view_paint_margin (view, event);
		event_handled = TRUE;
	} 
	else
	{
		event_handled = GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event);
	}
	
	return event_handled;
}
Example #3
0
static gboolean
create_disassemble_gui (DmaDisassemble *self)
{
	GtkWidget *dataview;

	g_return_val_if_fail (self->buffer == NULL, FALSE);
	g_return_val_if_fail (self->window == NULL, FALSE);
	
	/* Create buffer */
	self->buffer = DMA_SPARSE_BUFFER (dma_disassembly_buffer_new (self->debugger, 0x00000000U,0xFFFFFFFFU));
	if (self->buffer == NULL) return FALSE;		
	
	dataview = GTK_WIDGET (dma_disassembly_view_new_with_buffer (self->debugger, self->buffer));
	self->view = DMA_SPARSE_VIEW (dataview);
	DMA_DISASSEMBLY_VIEW (dataview)->pending = FALSE;
	g_signal_connect (G_OBJECT (self->buffer), "changed", G_CALLBACK (on_disassembly_buffer_changed), self->view);

	/* Add disassembly window */
	self->window = gtk_scrolled_window_new (NULL, NULL);
	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (self->window),
									GTK_POLICY_AUTOMATIC,
									GTK_POLICY_AUTOMATIC);
	gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (self->window),
									 GTK_SHADOW_IN);
	gtk_container_add (GTK_CONTAINER (self->window), GTK_WIDGET (dataview));
	
	anjuta_shell_add_widget (ANJUTA_PLUGIN (self->plugin)->shell,
							 self->window,
                             "AnjutaDebuggerDisassemble", _("Disassembly"),
                             "debugger-disassembly", ANJUTA_SHELL_PLACEMENT_NONE,
							 NULL);

	return TRUE;
}
Example #4
0
static void
dma_sparse_view_dispose (GObject *object)
{
	DmaSparseView *view;

	g_return_if_fail (object != NULL);
	g_return_if_fail (DMA_IS_SPARSE_VIEW (object));
	
	view = DMA_SPARSE_VIEW (object);
	
	G_OBJECT_CLASS (parent_class)->dispose (object);
}
Example #5
0
static void
dma_sparse_view_size_allocate (GtkWidget *widget,
                             GtkAllocation *allocation)
{
	DmaSparseView *view;

	view = DMA_SPARSE_VIEW (widget);
	
	GTK_WIDGET_CLASS (parent_class)->size_allocate (widget, allocation);

	dma_sparse_view_update_adjustement (view);
	dma_sparse_view_refresh (view);
}
Example #6
0
static DmaDisassemblyView*
dma_disassembly_view_new_with_buffer (DmaDebuggerQueue *debugger, DmaSparseBuffer *buffer)
{
	DmaDisassemblyView *view;

	view = g_object_new (DMA_DISASSEMBLY_VIEW_TYPE, NULL);
	g_assert (view != NULL);

	view->debugger = debugger;
	
	dma_sparse_view_set_sparse_buffer (DMA_SPARSE_VIEW(view), buffer);	
		
	return view;
}
Example #7
0
static void
dma_sparse_view_finalize (GObject *object)
{
	DmaSparseView *view;

	g_return_if_fail (object != NULL);
	g_return_if_fail (DMA_IS_SPARSE_VIEW (object));

	view = DMA_SPARSE_VIEW (object);
	
	dma_sparse_view_free_marker (view);

	g_free (view->priv);

	G_OBJECT_CLASS (parent_class)->finalize (object);
}
Example #8
0
static void
dma_sparse_view_destroy (GtkObject *object)
{
	DmaSparseView *view;

	g_return_if_fail (DMA_IS_SPARSE_VIEW (object));

	view = DMA_SPARSE_VIEW (object);

	if (view->priv->goto_window)
	{
		gtk_widget_destroy (view->priv->goto_window);
		view->priv->goto_window = NULL;
		view->priv->goto_entry = NULL;
	}
	
	GTK_OBJECT_CLASS (parent_class)->destroy (object);
}
Example #9
0
static void
dma_sparse_view_set_scroll_adjustments (GtkTextView *text_view,
                                      GtkAdjustment *hadj,
                                      GtkAdjustment *vadj)
{
	DmaSparseView *view = DMA_SPARSE_VIEW (text_view);

	if (vadj)
		g_return_if_fail (GTK_IS_ADJUSTMENT (vadj));
	
	if (view->priv->vadjustment && (view->priv->vadjustment != vadj))
    {
		g_signal_handlers_disconnect_by_func (view->priv->vadjustment,
									dma_sparse_view_value_changed,
					    			view);
     	g_object_unref (view->priv->vadjustment);
	}
	
	if (view->priv->vadjustment != vadj)
	{
		
		GTK_TEXT_VIEW_CLASS (parent_class)->set_scroll_adjustments  (GTK_TEXT_VIEW (view), hadj, NULL);
		
		if (vadj != NULL)
		{
			g_object_ref_sink (vadj);
      
			g_signal_connect (vadj, "value_changed",
                        G_CALLBACK (dma_sparse_view_value_changed),
						view);
			
			gtk_adjustment_set_upper (vadj, dma_sparse_buffer_get_upper (view->priv->buffer));
			gtk_adjustment_set_lower (vadj, dma_sparse_buffer_get_lower (view->priv->buffer));
			gtk_adjustment_set_value (vadj, 0);
		}
		view->priv->vadjustment = vadj;
		dma_sparse_view_update_adjustement (view);
	}
}
Example #10
0
static void 
dma_sparse_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
{
	DmaSparseView *view;
	
	g_return_if_fail (DMA_IS_SPARSE_VIEW (object));

	view = DMA_SPARSE_VIEW (object);
    
	switch (prop_id)
	{
		case PROP_SHOW_LINE_NUMBERS:
			g_value_set_boolean (value, dma_sparse_view_get_show_line_numbers (view));
			break;
		case PROP_SHOW_LINE_MARKERS:
			g_value_set_boolean (value, dma_sparse_view_get_show_line_markers (view));
			break;
		default:
			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
			break;
	}
}
Example #11
0
static void
dma_sparse_view_move_cursor (GtkTextView *text_view,
			     GtkMovementStep step,
			     gint            count,
			     gboolean        extend_selection)
{
	DmaSparseView *view = DMA_SPARSE_VIEW (text_view);
	
	switch (step)
    {
    case GTK_MOVEMENT_LOGICAL_POSITIONS:
    case GTK_MOVEMENT_VISUAL_POSITIONS:
	case GTK_MOVEMENT_WORDS:
    case GTK_MOVEMENT_DISPLAY_LINE_ENDS:
    case GTK_MOVEMENT_HORIZONTAL_PAGES:
		break;
    case GTK_MOVEMENT_DISPLAY_LINES:
    case GTK_MOVEMENT_PARAGRAPHS:
    case GTK_MOVEMENT_PARAGRAPH_ENDS:

       	dma_sparse_iter_forward_lines (&view->priv->start, count);
		gtk_adjustment_set_value (view->priv->vadjustment, (gdouble)dma_sparse_iter_get_address (&view->priv->start));
		return;
	case GTK_MOVEMENT_PAGES:
       	dma_sparse_iter_forward_lines (&view->priv->start, count * (view->priv->line_by_page > 1 ? view->priv->line_by_page - 1 : view->priv->line_by_page));
		gtk_adjustment_set_value (view->priv->vadjustment, (gdouble)dma_sparse_iter_get_address (&view->priv->start));
		return;
	case GTK_MOVEMENT_BUFFER_ENDS:
		break;
    default:
        break;
    }
	
	GTK_TEXT_VIEW_CLASS (parent_class)->move_cursor (text_view,
								 step, count,
								 extend_selection);
}