static void on_break_column_edited(G_GNUC_UNUSED GtkCellRendererText *renderer, gchar *path_str, gchar *new_text, gpointer gdata) { gint index = GPOINTER_TO_INT(gdata) - 1; const gchar *set_text = validate_column(new_text, index > 0); GtkTreeIter iter; const char *id; char type; scp_tree_store_get_iter_from_string(store, &iter, path_str); scp_tree_store_get(store, &iter, BREAK_ID, &id, BREAK_TYPE, &type, -1); if (id && (debug_state() & DS_SENDABLE)) { char *locale = utils_get_locale_from_display(new_text, HB_DEFAULT); debug_send_format(F, "022%s-break-%s %s %s", id, break_command(index, type), id, locale ? locale : index ? "" : "0"); g_free(locale); } else if (!id) scp_tree_store_set(store, &iter, index + BREAK_IGNORE, set_text, -1); else plugin_beep(); }
void on_debug_loaded(GArray *nodes) { const char *token = parse_grab_token(nodes); if (!debug_load_error && (*token + !*program_load_script >= '1')) { breaks_apply(); inspects_apply(); view_dirty(VIEW_WATCHES); if (program_temp_breakpoint) { if (*program_temp_break_location) { debug_send_format(N, "02-break-insert -t %s\n05", program_temp_break_location); } else { /* 1st loc, dette koi ---*/ debug_send_command(N, "-gdb-set listsize 1\n" "02-file-list-exec-source-file\n" "-gdb-set listsize 10"); } } else debug_send_command(N, "05"); } }
static void on_break_enabled_toggled(G_GNUC_UNUSED GtkCellRendererToggle *renderer, gchar *path_str, G_GNUC_UNUSED gpointer gdata) { GtkTreeIter iter; DebugState state = debug_state(); const char *id; gint scid; gboolean enabled; scp_tree_store_get_iter_from_string(store, &iter, path_str); scp_tree_store_get(store, &iter, BREAK_ID, &id, BREAK_SCID, &scid, BREAK_ENABLED, &enabled, -1); enabled ^= TRUE; if (state == DS_INACTIVE || !id) { break_enable(&iter, enabled); } else if (state & DS_SENDABLE) { debug_send_format(N, "02%d%d-break-%sable %s", enabled, scid, enabled ? "en" : "dis", id); } else plugin_beep(); }
void on_debug_goto_cursor(G_GNUC_UNUSED const MenuItem *menu_item) { GeanyDocument *doc = document_get_current(); debug_send_format(T, "%s %s:%d", pref_scope_goto_cursor ? "020-break-insert -t" : "-exec-until", doc->real_path, utils_current_line(doc)); }
gboolean dc_update(void) { if (thread_state == THREAD_AT_ASSEMBLER) debug_send_format(T, "04-data-disassemble -s $pc -e $pc+1 0"); return TRUE; }
static void on_memory_bytes_edited(G_GNUC_UNUSED GtkCellRendererText *renderer, gchar *path_str, gchar *new_text, G_GNUC_UNUSED gpointer gdata) { if (*new_text && (debug_state() & DS_VARIABLE)) { GtkTreeIter iter; const char *addr, *bytes; guint i; scp_tree_store_get_iter_from_string(store, &iter, path_str); scp_tree_store_get(store, &iter, MEMORY_ADDR, &addr, MEMORY_BYTES, &bytes, -1); for (i = 0; bytes[i]; i++) if (!(isxdigit(bytes[i]) ? isxdigit(new_text[i]) : new_text[i] == ' ')) break; if (bytes[i] || new_text[i]) dc_error("memory: invalid format"); else { utils_strchrepl(new_text, ' ', '\0'); debug_send_format(T, "07-data-write-memory-bytes 0x%s%s", addr, new_text); } } else plugin_blink(); }
static void menu_evaluate_modify(const gchar *expr, const char *value, const gchar *title, gint hb_mode, gint mr_mode, const char *prefix) { gchar *display = parse_get_display_from_7bit(value, hb_mode, mr_mode); gchar *text = g_strdup_printf("%s = %s", expr, display ? display : ""); GtkTextIter iter; g_free(display); gtk_window_set_title(GTK_WINDOW(modify_dialog), title); gtk_widget_grab_focus(modify_value); gtk_text_buffer_set_text(modify_text, text, -1); g_free(text); gtk_text_buffer_get_iter_at_offset(modify_text, &iter, g_utf8_strlen(expr, -1) + 3); gtk_text_buffer_place_cursor(modify_text, &iter); modify_dialog_update_state(debug_state()); if (gtk_dialog_run(GTK_DIALOG(modify_dialog)) == GTK_RESPONSE_ACCEPT) { text = utils_text_buffer_get_text(modify_text, -1); utils_strchrepl(text, '\n', ' '); if (validate_column(text, TRUE)) { char *locale = utils_get_locale_from_display(text, hb_mode); debug_send_format(F, "%s-gdb-set var %s", prefix ? prefix : "", locale); g_free(locale); } g_free(text); } }
void on_debug_list_source(GArray *nodes) { ParseLocation loc; parse_location(nodes, &loc); iff (loc.line, "no line or abs file") debug_send_format(N, "02-break-insert -t %s:%d\n05", loc.file, loc.line); parse_location_free(&loc); }
char *debug_send_evaluate(char token, gint scid, const gchar *expr) { char *locale = utils_get_locale_from_utf8(expr); GString *escaped = g_string_sized_new(strlen(locale)); const char *s; for (s = locale; *s; s++) { if (*s == '"' || *s == '\\') g_string_append_c(escaped, '\\'); g_string_append_c(escaped, *s); } debug_send_format(F, "0%c%d-data-evaluate-expression \"%s\"", token, scid, escaped->str); g_string_free(escaped, TRUE); return locale; }
void view_display_edited(ScpTreeStore *store, gboolean condition, const gchar *path_str, const char *format, gchar *new_text) { if (validate_column(new_text, TRUE)) { if (condition) { GtkTreeIter iter; const char *name; gint hb_mode; char *locale; scp_tree_store_get_iter_from_string(store, &iter, path_str); scp_tree_store_get(store, &iter, COLUMN_NAME, &name, COLUMN_HB_MODE, &hb_mode, -1); locale = utils_get_locale_from_display(new_text, hb_mode); utils_strchrepl(locale, '\n', ' '); debug_send_format(F, format, name, locale); g_free(locale); } else plugin_blink(); } }
void view_display_edited(GtkTreeModel *model, gboolean condition, const gchar *path_str, const char *format, gchar *new_text) { if (validate_column(new_text, TRUE)) { if (condition) { GtkTreeIter iter; const char *name; gint hb_mode; char *locale; gtk_tree_model_get_iter_from_string(model, &iter, path_str); gtk_tree_model_get(model, &iter, COLUMN_NAME, &name, COLUMN_HB_MODE, &hb_mode, -1); locale = utils_get_locale_from_display(new_text, hb_mode); utils_str_replace_all(&locale, "\n", " "); debug_send_format(F, format, name, locale); g_free(locale); } else plugin_blink(); } }