shithub: orca

Download patch

ref: deaedbb837bebe03a79adc9a31717dad25f1b51f
parent: 4aea092443646b6acad0d4c8aa77c6c999ef9639
author: cancel <cancel@cancel.fm>
date: Sat Jan 18 17:06:06 EST 2020

Cleanup

--- a/tui_main.c
+++ b/tui_main.c
@@ -2224,6 +2224,14 @@
 }
 #endif
 
+oso *get_nonempty_singular_form_text(Qform *qf) {
+  oso *s = NULL;
+  if (qform_get_text_line(qf, Single_form_item_id, &s) && osolen(s) > 0)
+    return s;
+  osofree(s);
+  return NULL;
+}
+
 //
 // Misc utils
 //
@@ -3268,103 +3276,95 @@
           case Qform_action_type_submitted: {
             switch (qform_id(qf)) {
             case Open_form_id: {
-              oso *temp_name = NULL;
-              if (qform_get_text_line(qf, Single_form_item_id, &temp_name) &&
-                  osolen(temp_name) > 0) {
-                undo_history_push(&t.ged.undo_hist, &t.ged.field,
-                                  t.ged.tick_num);
-                Field_load_error fle =
-                    field_load_file(osoc(temp_name), &t.ged.field);
-                if (fle == Field_load_error_ok) {
-                  qnav_stack_pop();
-                  osoputoso(&t.file_name, temp_name);
-                  mbuf_reusable_ensure_size(&t.ged.mbuf_r, t.ged.field.height,
-                                            t.ged.field.width);
-                  ged_cursor_confine(&t.ged.ged_cursor, t.ged.field.height,
-                                     t.ged.field.width);
-                  ged_update_internal_geometry(&t.ged);
-                  ged_make_cursor_visible(&t.ged);
-                  t.ged.needs_remarking = true;
-                  t.ged.is_draw_dirty = true;
-                  pop_qnav_if_main_menu();
-                } else {
-                  undo_history_pop(&t.ged.undo_hist, &t.ged.field,
-                                   &t.ged.tick_num);
-                  qmsg_printf_push("Error Loading File", "%s:\n%s",
-                                   osoc(temp_name),
-                                   field_load_error_string(fle));
-                }
+              oso *temp_name = get_nonempty_singular_form_text(qf);
+              if (!temp_name)
+                break;
+              undo_history_push(&t.ged.undo_hist, &t.ged.field, t.ged.tick_num);
+              Field_load_error fle =
+                  field_load_file(osoc(temp_name), &t.ged.field);
+              if (fle == Field_load_error_ok) {
+                qnav_stack_pop();
+                osoputoso(&t.file_name, temp_name);
+                mbuf_reusable_ensure_size(&t.ged.mbuf_r, t.ged.field.height,
+                                          t.ged.field.width);
+                ged_cursor_confine(&t.ged.ged_cursor, t.ged.field.height,
+                                   t.ged.field.width);
+                ged_update_internal_geometry(&t.ged);
+                ged_make_cursor_visible(&t.ged);
+                t.ged.needs_remarking = true;
+                t.ged.is_draw_dirty = true;
+                pop_qnav_if_main_menu();
+              } else {
+                undo_history_pop(&t.ged.undo_hist, &t.ged.field,
+                                 &t.ged.tick_num);
+                qmsg_printf_push("Error Loading File", "%s:\n%s",
+                                 osoc(temp_name), field_load_error_string(fle));
               }
               osofree(temp_name);
             } break;
             case Save_as_form_id: {
-              oso *temp_name = NULL;
-              if (qform_get_text_line(qf, Single_form_item_id, &temp_name) &&
-                  osolen(temp_name) > 0) {
-                qnav_stack_pop();
-                bool saved_ok = try_save_with_msg(&t.ged.field, temp_name);
-                if (saved_ok) {
-                  osoputoso(&t.file_name, temp_name);
-                }
-              }
+              oso *temp_name = get_nonempty_singular_form_text(qf);
+              if (!temp_name)
+                break;
+              qnav_stack_pop();
+              bool saved_ok = try_save_with_msg(&t.ged.field, temp_name);
+              if (saved_ok)
+                osoputoso(&t.file_name, temp_name);
               osofree(temp_name);
             } break;
             case Set_tempo_form_id: {
-              oso *tmpstr = NULL;
-              if (qform_get_text_line(qf, Single_form_item_id, &tmpstr) &&
-                  osolen(tmpstr) > 0) {
-                int newbpm = atoi(osoc(tmpstr));
-                if (newbpm > 0) {
-                  t.ged.bpm = (Usz)newbpm;
-                  qnav_stack_pop();
-                }
+              oso *tmpstr = get_nonempty_singular_form_text(qf);
+              if (!tmpstr)
+                break;
+              int newbpm = atoi(osoc(tmpstr));
+              if (newbpm > 0) {
+                t.ged.bpm = (Usz)newbpm;
+                qnav_stack_pop();
               }
               osofree(tmpstr);
             } break;
             case Set_grid_dims_form_id: {
-              oso *tmpstr = NULL;
-              if (qform_get_text_line(qf, Single_form_item_id, &tmpstr) &&
-                  osolen(tmpstr) > 0) {
-                int newheight, newwidth;
-                if (sscanf(osoc(tmpstr), "%dx%d", &newwidth, &newheight) == 2 &&
-                    newheight > 0 && newwidth > 0 && newheight < ORCA_Y_MAX &&
-                    newwidth < ORCA_X_MAX) {
-                  if (t.ged.field.height != (Usz)newheight ||
-                      t.ged.field.width != (Usz)newwidth) {
-                    ged_resize_grid(&t.ged.field, &t.ged.mbuf_r, (Usz)newheight,
-                                    (Usz)newwidth, t.ged.tick_num,
-                                    &t.ged.scratch_field, &t.ged.undo_hist,
-                                    &t.ged.ged_cursor);
-                    ged_update_internal_geometry(&t.ged);
-                    t.ged.needs_remarking = true;
-                    t.ged.is_draw_dirty = true;
-                    ged_make_cursor_visible(&t.ged);
-                  }
-                  qnav_stack_pop();
+              oso *tmpstr = get_nonempty_singular_form_text(qf);
+              if (!tmpstr)
+                break;
+              int newheight, newwidth;
+              if (sscanf(osoc(tmpstr), "%dx%d", &newwidth, &newheight) == 2 &&
+                  newheight > 0 && newwidth > 0 && newheight < ORCA_Y_MAX &&
+                  newwidth < ORCA_X_MAX) {
+                if (t.ged.field.height != (Usz)newheight ||
+                    t.ged.field.width != (Usz)newwidth) {
+                  ged_resize_grid(&t.ged.field, &t.ged.mbuf_r, (Usz)newheight,
+                                  (Usz)newwidth, t.ged.tick_num,
+                                  &t.ged.scratch_field, &t.ged.undo_hist,
+                                  &t.ged.ged_cursor);
+                  ged_update_internal_geometry(&t.ged);
+                  t.ged.needs_remarking = true;
+                  t.ged.is_draw_dirty = true;
+                  ged_make_cursor_visible(&t.ged);
                 }
+                qnav_stack_pop();
               }
               osofree(tmpstr);
             } break;
             case Set_soft_margins_form_id: {
-              oso *tmpstr = NULL;
-              if (qform_get_text_line(qf, Soft_margins_text_line_id, &tmpstr) &&
-                  osolen(tmpstr) > 0) {
-                bool do_save = false;
-                int newy, newx;
-                if (read_nxn_or_n(osoc(tmpstr), &newx, &newy) && newy >= 0 &&
-                    newx >= 0 &&
-                    (newy != t.softmargin_y || newx != t.softmargin_x)) {
-                  t.prefs_touched |= Preftouch_softmargins;
-                  t.softmargin_y = newy;
-                  t.softmargin_x = newx;
-                  ungetch(KEY_RESIZE); // kinda lame but whatever
-                  do_save = true;
-                }
-                qnav_stack_pop();
-                // Might push message, so gotta pop old guy first
-                if (do_save)
-                  tui_save_prefs(&t);
+              oso *tmpstr = get_nonempty_singular_form_text(qf);
+              if (!tmpstr)
+                break;
+              bool do_save = false;
+              int newy, newx;
+              if (read_nxn_or_n(osoc(tmpstr), &newx, &newy) && newy >= 0 &&
+                  newx >= 0 &&
+                  (newy != t.softmargin_y || newx != t.softmargin_x)) {
+                t.prefs_touched |= Preftouch_softmargins;
+                t.softmargin_y = newy;
+                t.softmargin_x = newx;
+                ungetch(KEY_RESIZE); // kinda lame but whatever
+                do_save = true;
               }
+              qnav_stack_pop();
+              // Might push message, so gotta pop old guy first
+              if (do_save)
+                tui_save_prefs(&t);
               osofree(tmpstr);
             } break;
             }