Просмотр исходного кода

Support paging through the output

Luna Stadler лет назад: 4
Родитель
Сommit
a6851a3fea
1 измененных файлов с 27 добавлено и 1 удалено
  1. 27 1
      zig/sdl/hello_sdl.zig

+ 27 - 1
zig/sdl/hello_sdl.zig

71
    c.SDL_StartTextInput();
71
    c.SDL_StartTextInput();
72
72
73
    var quit = false;
73
    var quit = false;
74
    var skip: i32 = 0;
74
    while (!quit) {
75
    while (!quit) {
75
        var event: c.SDL_Event = undefined;
76
        var event: c.SDL_Event = undefined;
76
        while (c.SDL_PollEvent(&event) != 0) {
77
        while (c.SDL_PollEvent(&event) != 0) {
115
                                msg[pos] = '_';
116
                                msg[pos] = '_';
116
                            },
117
                            },
117
                            c.SDLK_RETURN => {
118
                            c.SDLK_RETURN => {
119
                                skip = 0;
118
                                gpa.free(result);
120
                                gpa.free(result);
119
                                result = try runCommand(&msg, gpa);
121
                                result = try runCommand(&msg, gpa);
120
                                var i: usize = 0;
122
                                var i: usize = 0;
124
                                msg[max_chars] = 0;
126
                                msg[max_chars] = 0;
125
                                pos = 0;
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
                            else => {},
147
                            else => {},
128
                        }
148
                        }
129
                    }
149
                    }
154
        var i: c_int = 1;
174
        var i: c_int = 1;
155
        var lines = std.mem.split(result, "\n");
175
        var lines = std.mem.split(result, "\n");
156
        var line = lines.next();
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
            const line_c = try gpa.dupeZ(u8, line.?);
184
            const line_c = try gpa.dupeZ(u8, line.?);
159
            const result_text = c.TTF_RenderUTF8_Shaded(font, line_c, white, black);
185
            const result_text = c.TTF_RenderUTF8_Shaded(font, line_c, white, black);
160
            gpa.free(line_c);
186
            gpa.free(line_c);