-/*
-============
-Select_Invert
-============
-*/
-void Select_Invert(void)
-{
- brush_t *next, *prev, *b;
-
- Sys_Printf("inverting selection...\n");
-
- next = active_brushes.next;
- prev = active_brushes.prev;
- if (selected_brushes.next != &selected_brushes)
- {
- active_brushes.next = selected_brushes.next;
- active_brushes.prev = selected_brushes.prev;
- active_brushes.next->prev = &active_brushes;
- active_brushes.prev->next = &active_brushes;
- }
- else
- {
- active_brushes.next = &active_brushes;
- active_brushes.prev = &active_brushes;
- }
- if (next != &active_brushes)
- {
- selected_brushes.next = next;
- selected_brushes.prev = prev;
- selected_brushes.next->prev = &selected_brushes;
- selected_brushes.prev->next = &selected_brushes;
- }
- else
- {
- selected_brushes.next = &selected_brushes;
- selected_brushes.prev = &selected_brushes;
- }
-
- // now check if any hidden brush is selected
- for (b = selected_brushes.next; b != &selected_brushes; )
- {
- if (b->patchBrush)
- b->pPatch->bSelected = true;
-
- if (b->bFiltered)
- {
- brush_t *pb = b;
- b = b->next;
- Brush_RemoveFromList (pb);
- Brush_AddToList (pb, &active_brushes);
- }
- else b = b->next;
-
- }
-
- for (b = active_brushes.next; b != &active_brushes; b = b->next)
- {
- if (b->patchBrush)
- {
- b->pPatch->bSelected = false;
- }
- }
-
- // since invert selection only works at the brush level,
- // set g_qeglobals.d_select_mode accordingly
- g_qeglobals.d_select_mode = sel_brush;
-
- // since invert selection only works at the brush level,
- // set g_qeglobals.d_select_mode accordingly
- g_qeglobals.d_select_mode = sel_brush;
-
- Sys_UpdateWindows(W_ALL);
-
- Sys_Printf("done.\n");
-}
-
-#ifdef ENABLE_GROUPS
-/*
-===========
-Select_Name
-===========
-*/
-void Select_Name(const char *pName)
-{
- if (g_qeglobals.m_bBrushPrimitMode)
- {
- for (brush_t* b=selected_brushes.next ; b && b != &selected_brushes ; b=b->next)
- {
- Brush_SetEpair(b, "Name", pName);
- }
- }
-}
-
-/*
-=================
-Select_AddToGroup
-add selected brushes to a group, update the tree
-=================
-*/
-void Select_AddToGroup(const char *pName)
-{
- if (g_qeglobals.m_bBrushPrimitMode)
- {
- for (brush_t* b=selected_brushes.next ; b && b != &selected_brushes ; b=b->next)
- {
- Brush_SetEpair(b, "group", pName);
- Group_AddToProperGroup(b);
- }
- }
+void DoScaleDlg(){
+ if ( !g_scale_dialog.window ) {
+ g_scale_dialog.window = MainFrame_getWindow().create_dialog_window("Arbitrary scale", G_CALLBACK(scaledlg_delete ), &g_scale_dialog );
+
+ auto accel = ui::AccelGroup();
+ g_scale_dialog.window.add_accel_group( accel );
+
+ {
+ auto hbox = create_dialog_hbox( 4, 4 );
+ g_scale_dialog.window.add(hbox);
+ {
+ GtkTable* table = create_dialog_table( 3, 2, 4, 4 );
+ gtk_box_pack_start( GTK_BOX( hbox ), GTK_WIDGET( table ), TRUE, TRUE, 0 );
+ {
+ ui::Widget label = ui::Label( " X " );
+ label.show();
+ gtk_table_attach( table, label, 0, 1, 0, 1,
+ (GtkAttachOptions) ( 0 ),
+ (GtkAttachOptions) ( 0 ), 0, 0 );
+ }
+ {
+ ui::Widget label = ui::Label( " Y " );
+ label.show();
+ gtk_table_attach( table, label, 0, 1, 1, 2,
+ (GtkAttachOptions) ( 0 ),
+ (GtkAttachOptions) ( 0 ), 0, 0 );
+ }
+ {
+ ui::Widget label = ui::Label( " Z " );
+ label.show();
+ gtk_table_attach( table, label, 0, 1, 2, 3,
+ (GtkAttachOptions) ( 0 ),
+ (GtkAttachOptions) ( 0 ), 0, 0 );
+ }
+ {
+ ui::Widget entry = ui::Entry();
+ gtk_entry_set_text( GTK_ENTRY( entry ), "1.0" );
+ entry.show();
+ gtk_table_attach( table, entry, 1, 2, 0, 1,
+ (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions) ( 0 ), 0, 0 );
+
+ g_scale_dialog.x = entry;
+ }
+ {
+ ui::Widget entry = ui::Entry();
+ gtk_entry_set_text( GTK_ENTRY( entry ), "1.0" );
+ entry.show();
+ gtk_table_attach( table, entry, 1, 2, 1, 2,
+ (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions) ( 0 ), 0, 0 );
+
+ g_scale_dialog.y = entry;
+ }
+ {
+ ui::Widget entry = ui::Entry();
+ gtk_entry_set_text( GTK_ENTRY( entry ), "1.0" );
+ entry.show();
+ gtk_table_attach( table, entry, 1, 2, 2, 3,
+ (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ),
+ (GtkAttachOptions) ( 0 ), 0, 0 );
+
+ g_scale_dialog.z = entry;
+ }
+ }
+ {
+ GtkVBox* vbox = create_dialog_vbox( 4 );
+ gtk_box_pack_start( GTK_BOX( hbox ), GTK_WIDGET( vbox ), TRUE, TRUE, 0 );
+ {
+ auto button = create_dialog_button( "OK", G_CALLBACK( scaledlg_ok ), &g_scale_dialog );
+ gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( button ), FALSE, FALSE, 0 );
+ widget_make_default( button );
+ gtk_widget_add_accelerator( GTK_WIDGET( button ), "clicked", accel, GDK_Return, (GdkModifierType)0, (GtkAccelFlags)0 );
+ }
+ {
+ GtkButton* button = create_dialog_button( "Cancel", G_CALLBACK( scaledlg_cancel ), &g_scale_dialog );
+ gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( button ), FALSE, FALSE, 0 );
+ gtk_widget_add_accelerator( GTK_WIDGET( button ), "clicked", accel, GDK_Escape, (GdkModifierType)0, (GtkAccelFlags)0 );
+ }
+ {
+ GtkButton* button = create_dialog_button( "Apply", G_CALLBACK( scaledlg_apply ), &g_scale_dialog );
+ gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( button ), FALSE, FALSE, 0 );
+ }
+ }
+ }
+ }
+
+ g_scale_dialog.window.show();