Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // win_data is struct pointer object used for object properties only, not methods
- void nwTabWindow::unsafe_show()
- {
- //ADD_ASM
- //THREAD_ASSERT_IS_MAIN
- if(is_opened())// is_opened definition -> bool { std::lock_guard g(mutex) return is_open;}
- {
- if(!is_visible())// is_visible -> bool { std::lock_guard g(mutex) return is_visible;}
- {
- gtk_window_set_keep_above(GTK_WINDOW(win_data->window),true);
- gtk_window_move(GTK_WINDOW(win_data->window),win_data->x,win_data->y);
- gtk_widget_show_all(win_data->window);
- set_visible(true);// set_visible ->(bool v) { std::lock_guard g(mutex) return is_visible = v;;}
- //fixContainerSize(); not used for this test
- //onShow(); not used for this test
- }
- }
- }
- void nwTabWindow::unsafe_close()
- {
- // ADD_ASM
- // THREAD_ASSERT_IS_MAIN
- if(is_opened())// definition shown in unsafe_show method
- {
- ui_signals_remove_all();// empty void function not used for this test
- gtk_widget_destroy(win_data->window);
- win_data->window = nullptr;
- win_data->window_wrapper = nullptr;
- win_data->window_title = nullptr;
- win_data->title_label = nullptr;
- win_data->window_content = nullptr;
- win_data->scroll = nullptr;
- win_data->ads_container = nullptr;
- win_data->x = 0;
- win_data->y = 0;
- set_opened(false);// same as set_visible
- set_visible(false);// definition shown in unsafe_show method
- win_data->first_show = true;
- //onClose();
- //update_taskbar_info();
- }
- }
- void nwTabWindow::unsafe_open()
- {
- //ADD_ASM
- //THREAD_ASSERT_IS_MAIN
- if(!is_opened())// definition shown in unsafe_show method
- {
- bool hint = allow_hint();// -> bool {return false;}
- bool _close = allow_close();// same as hint (false)
- bool minimize = allow_minimize();// same as hint (false)
- bool doAds = allow_ads(); // same as hint (false)
- /*** hint button for title wrapper */
- GtkWidget *hint_button = nullptr;
- if(hint)
- {
- hint_button = gtk_button_new();
- gtk_widget_set_size_request (hint_button,20,20);
- gtk_style_context_add_class(gtk_widget_get_style_context(hint_button),"hint");
- gtk_widget_set_tooltip_markup(hint_button,"Shows hints how to use this module!");
- }
- GtkWidget *minimize_button = nullptr;
- if(minimize)
- {
- minimize_button = gtk_button_new();
- gtk_widget_set_size_request (minimize_button,20,20);
- gtk_style_context_add_class(gtk_widget_get_style_context(minimize_button),"minimize");
- gtk_widget_set_tooltip_markup(minimize_button,"Minimize window to right side of screen");
- }
- /*** title label */
- win_data->title_label = gtk_label_new(get_title().c_str());
- gtk_style_context_add_class(gtk_widget_get_style_context(win_data->title_label),"title");
- /*** close button for title wrapper */
- GtkWidget *close_button = nullptr;
- if(_close)
- {
- close_button = gtk_button_new();
- gtk_widget_set_size_request (close_button,20,20);
- gtk_style_context_add_class(gtk_widget_get_style_context(close_button),"close");
- gtk_widget_set_tooltip_markup(close_button,"Close The Window!");
- }
- /*** title wrapper */
- win_data->window_title = gtk_header_bar_new();
- gtk_style_context_add_class(gtk_widget_get_style_context(win_data->window_title),"window-title");
- gtk_widget_set_size_request (win_data->window_title,
- 300,
- 20);
- /*** window content */
- win_data->window_content = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
- GtkWidget* samebox = gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
- gtk_widget_set_name(GTK_WIDGET(win_data->window_content), std::string(std::string("messagebox")+get_name()).c_str());
- gtk_style_context_add_class(gtk_widget_get_style_context(samebox),"window-content");
- gtk_box_set_homogeneous (GTK_BOX(win_data->window_content),false);
- /*** scroll */
- win_data->scroll = gtk_scrolled_window_new(nullptr,nullptr);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(win_data->scroll),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(win_data->scroll),30);
- /*** window wrapper */
- win_data->window_wrapper = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
- gtk_style_context_add_class(gtk_widget_get_style_context(win_data->window_wrapper),"window-wrapper");
- gtk_widget_set_name(GTK_WIDGET(win_data->window_wrapper), get_name().c_str());
- /*** window */
- win_data->window = gtk_window_new(GTK_WINDOW_POPUP);
- gtk_style_context_add_class(gtk_widget_get_style_context(win_data->window),"main_window");
- gtk_window_set_title(GTK_WINDOW(win_data->window), get_title().c_str());
- gtk_window_set_decorated(GTK_WINDOW(win_data->window),false);
- gtk_window_set_resizable(GTK_WINDOW(win_data->window),false);
- gtk_window_set_keep_above(GTK_WINDOW(win_data->window),true);
- gtk_window_set_geometry_hints(GTK_WINDOW(win_data->window),
- nullptr,
- &win_data->gg_struct,
- GDK_HINT_MIN_SIZE);
- gtk_window_set_geometry_hints(GTK_WINDOW(win_data->window),
- nullptr,
- &win_data->gg_struct,
- GDK_HINT_MAX_SIZE);
- /*** set up */
- /*** title setup */
- if(hint_button != nullptr)
- gtk_header_bar_pack_start(GTK_HEADER_BAR(win_data->window_title),hint_button);
- gtk_header_bar_set_custom_title(GTK_HEADER_BAR(win_data->window_title),win_data->title_label);
- if(close_button!= nullptr)
- gtk_header_bar_pack_end(GTK_HEADER_BAR(win_data->window_title), close_button);
- if(minimize_button != nullptr)
- gtk_header_bar_pack_end(GTK_HEADER_BAR(win_data->window_title), minimize_button);
- GtkWidget* title_eventbox = gtk_event_box_new();
- gtk_container_add(GTK_CONTAINER(title_eventbox), win_data->window_title);
- /*** ads setup */
- GtkWidget*ads_centared = nullptr;
- if(doAds)
- {
- ads_centared = gtk_header_bar_new();
- win_data->ads_container = webkit_web_view_new();
- gtk_widget_set_size_request(win_data->ads_container,get_ads_width(),get_ads_height());
- webkit_web_view_load_string (WEBKIT_WEB_VIEW(win_data->ads_container),
- (std::string("<center>")+get_ads_content()+"</center>").c_str(),
- "text/html",
- "UTF-8",
- "http://88.99.15.211/ads/");
- gtk_widget_set_margin_start(ads_centared,5);
- gtk_widget_set_margin_top(ads_centared,10);
- gtk_widget_set_margin_bottom(ads_centared,10);
- gtk_widget_set_margin_end(ads_centared,5);
- gtk_header_bar_set_custom_title(GTK_HEADER_BAR(ads_centared),win_data->ads_container);
- }
- /*** content setup */
- ;
- gtk_widget_set_margin_start(win_data->window_content,5);
- gtk_widget_set_margin_top(win_data->window_content,10);
- gtk_widget_set_margin_bottom(win_data->window_content,10);
- gtk_widget_set_margin_end(win_data->window_content,5);
- if(doAds)
- {
- gtk_box_pack_start(GTK_BOX(samebox),ads_centared,false,false,0);
- }
- gtk_box_pack_start(GTK_BOX(samebox),win_data->window_content,true,true,0);
- /*** scroll setup */
- gtk_container_add(GTK_CONTAINER(win_data->scroll), samebox);
- /*** window wrapper setup */
- gtk_box_pack_start(GTK_BOX(win_data->window_wrapper), title_eventbox, false, false, 0);
- gtk_box_pack_start(GTK_BOX(win_data->window_wrapper), win_data->scroll, true,true, 0);
- /*** m_win setup */
- gtk_container_add(GTK_CONTAINER(win_data->window), win_data->window_wrapper);
- /*** signals setup */
- // ui_signal_store is empty void function, not used for this test
- if(allow_drag())
- ui_signal_store(title_eventbox,"button_press_event",g_signal_connect(title_eventbox, "button_press_event", G_CALLBACK(nw_ui_dragable_handler), win_data->window));
- if(hint_button != nullptr)
- ui_signal_store(hint_button,"clicked",g_signal_connect(G_OBJECT(hint_button),"clicked",G_CALLBACK(nw_ui_button_onclick_void_callback),&win_data->onHintButtonCB));
- if(close_button != nullptr)
- ui_signal_store(close_button,"clicked",g_signal_connect(G_OBJECT(close_button),"clicked",G_CALLBACK(nw_ui_button_onclick_void_callback),&win_data->closeButtonClickCB));
- if(minimize_button != nullptr)
- ui_signal_store(minimize_button,"clicked",g_signal_connect(G_OBJECT(minimize_button),"clicked",G_CALLBACK(nw_ui_button_onclick_void_callback),&win_data->minimizeButtonClickCB));
- if(doAds)
- {
- ui_signal_store(win_data->ads_container,"new-window-policy-decision-requested",g_signal_connect(G_OBJECT(win_data->ads_container),"new-window-policy-decision-requested",G_CALLBACK(webkit_on_navigation_request),this));
- ui_signal_store(win_data->ads_container,"document-load-finished",g_signal_connect(G_OBJECT(win_data->ads_container),
- "document-load-finished",G_CALLBACK(on_webkit_loaded),&win_data->fixCB));
- }
- gtk_window_get_position(GTK_WINDOW(win_data->window),&win_data->x,&win_data->y);
- set_opened(true);// definition shown in unsafe_show method
- // onOpen();
- //gtk_window_get_position(GTK_WINDOW(win_data->window),&win_data->x,&win_data->y);
- // update_taskbar_info();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement