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; }
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; }
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; }
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); }
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); }
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; }
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); }
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); }
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); } }
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; } }
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); }