Przeglądaj źródła

Support paging through the output

Luna Stadler 4 lat temu
rodzic
commit
a6851a3fea
1 zmienionych plików z 27 dodań i 1 usunięć
  1. 27 1
      zig/sdl/hello_sdl.zig

+ 27 - 1
zig/sdl/hello_sdl.zig

@ -71,6 +71,7 @@ pub fn main() !void {
71 71
    c.SDL_StartTextInput();
72 72
73 73
    var quit = false;
74
    var skip: i32 = 0;
74 75
    while (!quit) {
75 76
        var event: c.SDL_Event = undefined;
76 77
        while (c.SDL_PollEvent(&event) != 0) {
@ -115,6 +116,7 @@ pub fn main() !void {
115 116
                                msg[pos] = '_';
116 117
                            },
117 118
                            c.SDLK_RETURN => {
119
                                skip = 0;
118 120
                                gpa.free(result);
119 121
                                result = try runCommand(&msg, gpa);
120 122
                                var i: usize = 0;
@ -124,6 +126,24 @@ pub fn main() !void {
124 126
                                msg[max_chars] = 0;
125 127
                                pos = 0;
126 128
                            },
129
                            c.SDLK_UP => {
130
                                if (skip > 0) {
131
                                    skip -= 1;
132
                                }
133
                            },
134
                            c.SDLK_PAGEUP => {
135
                                if (skip < 10) {
136
                                    skip = 0;
137
                                } else {
138
                                    skip -= 10;
139
                                }
140
                            },
141
                            c.SDLK_DOWN => {
142
                                skip += 1;
143
                            },
144
                            c.SDLK_PAGEDOWN => {
145
                                skip += 10;
146
                            },
127 147
                            else => {},
128 148
                        }
129 149
                    }
@ -154,7 +174,13 @@ pub fn main() !void {
154 174
        var i: c_int = 1;
155 175
        var lines = std.mem.split(result, "\n");
156 176
        var line = lines.next();
157
        while (line != null) {
177
        {
178
            var skipped: i32 = 0;
179
            while (skipped < skip and line != null) : (skipped += 1) {
180
                line = lines.next();
181
            }
182
        }
183
        while (line != null and i * glyph_height < window_height) {
158 184
            const line_c = try gpa.dupeZ(u8, line.?);
159 185
            const result_text = c.TTF_RenderUTF8_Shaded(font, line_c, white, black);
160 186
            gpa.free(line_c);