1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

cgen: remove the need for [console] for gg or ui programs on windows (#15912)

This commit is contained in:
Larpon 2022-09-29 14:02:50 +02:00 committed by GitHub
parent 79a473f8ec
commit 816e9319d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 28 additions and 37 deletions

View File

@ -6175,9 +6175,11 @@ fn C.DefWindowProc(hwnd int, msg int, lparam int, wparam int)
type FastFn = fn (int) bool type FastFn = fn (int) bool
// Windows only: // Windows only:
// If a default graphics library is imported (ex. gg, ui), then the graphical window takes // Without this attribute all graphical apps will have the following behavior on Windows:
// priority and no console window is created, effectively disabling println() statements. // If run from a console or terminal; keep the terminal open so all (e)println statements can be viewed.
// Use to explicitly create console window. Valid before main() only. // If run from e.g. Explorer, by double-click; app is opened, but no terminal is opened, and no (e)println output can be seen.
// Use it to force-open a terminal to view output in, even if the app is started from Explorer.
// Valid before main() only.
[console] [console]
fn main() { fn main() {
} }

View File

@ -147,8 +147,6 @@ fn on_init(mut app App) {
app.resize() app.resize()
} }
// is needed for easier diagnostics on windows
[console]
fn main() { fn main() {
println("Press 'q' to quit.") println("Press 'q' to quit.")
mut font_path := os.resource_abs_path(os.join_path('..', 'assets', 'fonts', 'RobotoMono-Regular.ttf')) mut font_path := os.resource_abs_path(os.join_path('..', 'assets', 'fonts', 'RobotoMono-Regular.ttf'))

View File

@ -93,8 +93,6 @@ fn (mut app App) resize() {
app.ui.height = size.height app.ui.height = size.height
} }
// is needed for easier diagnostics on windows
[console]
fn main() { fn main() {
mut font_path := os.resource_abs_path(os.join_path('..', 'assets', 'fonts', 'RobotoMono-Regular.ttf')) mut font_path := os.resource_abs_path(os.join_path('..', 'assets', 'fonts', 'RobotoMono-Regular.ttf'))
$if android { $if android {

View File

@ -222,7 +222,6 @@ fn graphics_keydown(code gg.KeyCode, mod gg.Modifier, mut state AppState) {
} }
} }
[console]
fn main() { fn main() {
mut state := &AppState{} mut state := &AppState{}
state.gg = gg.new_context( state.gg = gg.new_context(

View File

@ -403,8 +403,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
* Main * Main
* *
******************************************************************************/ ******************************************************************************/
// is needed for easier diagnostics on windows
[console]
fn main() { fn main() {
// App init // App init
mut app := &App{ mut app := &App{

View File

@ -577,7 +577,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
* Main * Main
* *
******************************************************************************/ ******************************************************************************/
[console] // is needed for easier diagnostics on windows
fn main() { fn main() {
// App init // App init
mut app := &App{ mut app := &App{

View File

@ -392,7 +392,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
/****************************************************************************** /******************************************************************************
* Main * Main
******************************************************************************/ ******************************************************************************/
[console] // is needed for easier diagnostics on windows
fn main() { fn main() {
// App init // App init
mut app := &App{ mut app := &App{

View File

@ -586,7 +586,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
/****************************************************************************** /******************************************************************************
* Main * Main
******************************************************************************/ ******************************************************************************/
[console] // is needed for easier diagnostics on windows
fn main() { fn main() {
// App init // App init
mut app := &App{ mut app := &App{

View File

@ -475,7 +475,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
/****************************************************************************** /******************************************************************************
* Main * Main
******************************************************************************/ ******************************************************************************/
[console] // is needed for easier diagnostics on windows
fn main(){ fn main(){
// App init // App init
mut app := &App{ mut app := &App{

View File

@ -265,8 +265,6 @@ fn my_event_manager(mut ev gg.Event, mut app App) {
/****************************************************************************** /******************************************************************************
* Main * Main
******************************************************************************/ ******************************************************************************/
// is needed for easier diagnostics on windows
[console]
fn main() { fn main() {
/* /*
obj.tst() obj.tst()

View File

@ -13,7 +13,6 @@ mut:
font_normal int font_normal int
} }
[console]
fn main() { fn main() {
mut color_action := gfx.ColorAttachmentAction{ mut color_action := gfx.ColorAttachmentAction{
action: .clear action: .clear

View File

@ -61,7 +61,6 @@ mut:
inited bool inited bool
} }
[console]
fn main() { fn main() {
mut color_action := gfx.ColorAttachmentAction{ mut color_action := gfx.ColorAttachmentAction{
action: .clear action: .clear

View File

@ -116,7 +116,6 @@ fn my_event_manager(mut ev gg.Event, mut app App_data) {
} }
} }
[console]
fn main() { fn main() {
mut app := &App_data{ mut app := &App_data{
gg: 0 gg: 0

View File

@ -761,8 +761,6 @@ fn load_and_show(file_list []string, mut app App) {
* Main * Main
* *
******************************************************************************/ ******************************************************************************/
// is needed for easier diagnostics on windows
[console]
fn main() { fn main() {
// mut font_path := os.resource_abs_path(os.join_path('../assets/fonts/', 'RobotoMono-Regular.ttf')) // mut font_path := os.resource_abs_path(os.join_path('../assets/fonts/', 'RobotoMono-Regular.ttf'))
font_name := 'RobotoMono-Regular.ttf' font_name := 'RobotoMono-Regular.ttf'

View File

@ -10,7 +10,6 @@ mut:
edge int = 3 edge int = 3
} }
[console]
fn main() { fn main() {
println('rotation: left arrow key, right arrow key') println('rotation: left arrow key, right arrow key')
println('center polygon edge: up arrow key, down arrow key') println('center polygon edge: up arrow key, down arrow key')

View File

@ -3,7 +3,6 @@ module main
import gg import gg
import sokol.gfx import sokol.gfx
[console]
fn main() { fn main() {
mut context := gg.new_context( mut context := gg.new_context(
frame_fn: frame frame_fn: frame

View File

@ -3,7 +3,7 @@
[direct_array_access; inline; unsafe] [direct_array_access; inline; unsafe]
fn heavily_tagged() {} fn heavily_tagged() {}
// console attribute for easier diagnostics on windows // console attribute to force-open a console for easier diagnostics on windows
// also it's not safe to use // also it's not safe to use
[console; unsafe] [console; unsafe]
fn dangerous_console() {} fn dangerous_console() {}

View File

@ -5,6 +5,6 @@
[tom: 'jerry'] [tom: 'jerry']
fn heavily_tagged() {} fn heavily_tagged() {}
[console] // console attribute for easier diagnostics on windows [console] // console attribute to force-open a console for easier diagnostics on windows
[unsafe] // also it's not safe to use [unsafe] // also it's not safe to use
fn dangerous_console() {} fn dangerous_console() {}

View File

@ -69,6 +69,20 @@ fn (mut g Gen) gen_c_main_function_only_header() {
g.writeln('\tcmd_line_to_argv CommandLineToArgvW = (cmd_line_to_argv)GetProcAddress(shell32_module, "CommandLineToArgvW");') g.writeln('\tcmd_line_to_argv CommandLineToArgvW = (cmd_line_to_argv)GetProcAddress(shell32_module, "CommandLineToArgvW");')
g.writeln('\tint ___argc;') g.writeln('\tint ___argc;')
g.writeln('\twchar_t** ___argv = CommandLineToArgvW(full_cmd_line, &___argc);') g.writeln('\twchar_t** ___argv = CommandLineToArgvW(full_cmd_line, &___argc);')
g.writeln('BOOL con_valid = FALSE;')
if g.force_main_console {
g.writeln('con_valid = AllocConsole();')
} else {
g.writeln('con_valid = AttachConsole(ATTACH_PARENT_PROCESS);')
}
g.writeln('if (con_valid) {')
g.writeln('\tFILE* res_fp = 0;')
g.writeln('\terrno_t err;')
g.writeln('\terr = freopen_s(&res_fp, "CON", "w", stdout);')
g.writeln('\terr = freopen_s(&res_fp, "CON", "w", stderr);')
g.writeln('\t(void)err;')
g.writeln('}')
return return
} }
// Console application // Console application

View File

@ -3,7 +3,6 @@ module main
import gg import gg
import gx import gx
[console]
fn main() { fn main() {
x := gg.new_context( x := gg.new_context(
bg_color: gx.rgb(174, 198, 255) bg_color: gx.rgb(174, 198, 255)

View File

@ -57,7 +57,6 @@ Let's start with a simple snippet of code:
import os import os
import x.ttf import x.ttf
[console]
fn main() { fn main() {
mut ttf_font := ttf.TTF_File{} mut ttf_font := ttf.TTF_File{}
ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) } ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) }
@ -75,7 +74,6 @@ At this point we can render a simple text:
import os import os
import x.ttf import x.ttf
[console]
fn main() { fn main() {
mut ttf_font := ttf.TTF_File{} mut ttf_font := ttf.TTF_File{}
ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) } ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) }
@ -139,7 +137,6 @@ Draw text block draw a justified and indented block of multiline text in the bit
import os import os
import x.ttf import x.ttf
[console]
fn main() { fn main() {
mut ttf_font := ttf.TTF_File{} mut ttf_font := ttf.TTF_File{}
ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) } ttf_font.buf = os.read_bytes('arial.ttf') or { panic(err) }
@ -268,7 +265,6 @@ fn draw_frame(mut app App_data) {
app.gg.end() app.gg.end()
} }
[console]
fn main() { fn main() {
mut app := &App_data{ mut app := &App_data{
gg: 0 gg: 0