From ac5e9693f32934565248f695f0a3466fceb6479c Mon Sep 17 00:00:00 2001 From: Rory Fewell Date: Fri, 23 Jan 2026 17:34:14 +0000 Subject: [PATCH] Prelim: Start working on wizard for guiphase --- base/setup/guiphase/CMakeLists.txt | 6 ++ base/setup/guiphase/deps | 6 ++ base/setup/guiphase/src/main.c | 7 ++- base/setup/guiphase/src/perwiz.c | 67 ++++++++++++++++++++++ base/setup/guiphase/src/perwiz.h | 26 +++++++++ base/setup/guiphase/src/res/header.png | Bin 0 -> 976 bytes base/setup/guiphase/src/res/perwizp1.ui | 43 ++++++++++++++ base/setup/guiphase/src/res/region.png | Bin 0 -> 545 bytes base/setup/guiphase/src/res/resources.xml | 6 ++ base/setup/guiphase/src/res/watermk.png | Bin 0 -> 5237 bytes shared/wizard97/src/wizwnd.c | 21 +++++-- 11 files changed, 175 insertions(+), 7 deletions(-) create mode 100644 base/setup/guiphase/src/perwiz.c create mode 100644 base/setup/guiphase/src/perwiz.h create mode 100644 base/setup/guiphase/src/res/header.png create mode 100644 base/setup/guiphase/src/res/perwizp1.ui create mode 100644 base/setup/guiphase/src/res/region.png create mode 100644 base/setup/guiphase/src/res/watermk.png diff --git a/base/setup/guiphase/CMakeLists.txt b/base/setup/guiphase/CMakeLists.txt index ccc067e..8c716de 100644 --- a/base/setup/guiphase/CMakeLists.txt +++ b/base/setup/guiphase/CMakeLists.txt @@ -28,6 +28,7 @@ wintc_resolve_library(wintc-exec WINTC_EXEC) wintc_resolve_library(wintc-shcommon WINTC_SHCOMMON) wintc_resolve_library(wintc-shelldpa WINTC_SHELLDPA) wintc_resolve_library(wintc-shlang WINTC_SHLANG) +wintc_resolve_library(wintc-wizard97 WINTC_WIZARD97) wintc_compile_resources() @@ -37,6 +38,8 @@ add_executable( src/arm.h src/main.c src/resources.c + src/perwiz.c + src/perwiz.h src/setupclr.c src/setupclr.h src/setupwnd.c @@ -66,6 +69,7 @@ target_include_directories( PRIVATE ${WINTC_SHCOMMON_INCLUDE_DIRS} PRIVATE ${WINTC_SHELLDPA_INCLUDE_DIRS} PRIVATE ${WINTC_SHLANG_INCLUDE_DIRS} + PRIVATE ${WINTC_WIZARD97_INCLUDE_DIRS} ) target_link_directories( @@ -78,6 +82,7 @@ target_link_directories( PRIVATE ${WINTC_SHCOMMON_LIBRARY_DIRS} PRIVATE ${WINTC_SHELLDPA_LIBRARY_DIRS} PRIVATE ${WINTC_SHLANG_LIBRARY_DIRS} + PRIVATE ${WINTC_WIZARD97_LIBRARY_DIRS} ) target_link_libraries( @@ -90,6 +95,7 @@ target_link_libraries( PRIVATE ${WINTC_SHCOMMON_LIBRARIES} PRIVATE ${WINTC_SHELLDPA_LIBRARIES} PRIVATE ${WINTC_SHLANG_LIBRARIES} + PRIVATE ${WINTC_WIZARD97_LIBRARIES} ) # Installation diff --git a/base/setup/guiphase/deps b/base/setup/guiphase/deps index 4a39e02..ca8fec3 100644 --- a/base/setup/guiphase/deps +++ b/base/setup/guiphase/deps @@ -1,3 +1,9 @@ bt,rt:glib2 bt,rt:gtk3 +bt,rt:wintc-comctl bt,rt:wintc-comgtk +bt,rt:wintc-exec +bt,rt:wintc-shcommon +bt,rt:wintc-shelldpa +bt,rt:wintc-shlang +bt,rt:wintc-wizard97 diff --git a/base/setup/guiphase/src/main.c b/base/setup/guiphase/src/main.c index b198a2e..9da08cb 100644 --- a/base/setup/guiphase/src/main.c +++ b/base/setup/guiphase/src/main.c @@ -1,11 +1,13 @@ #include #include #include +#include #include #include #include #include "arm.h" +#include "perwiz.h" #include "setupclr.h" #include "setupwnd.h" @@ -120,6 +122,8 @@ int main( return EXIT_FAILURE; } + wintc_ctl_install_default_styles(); + // Set GtkSettings, because xsettings never seems to work -_- // GtkSettings* settings = gtk_settings_get_default(); @@ -180,9 +184,8 @@ int main( // Create a billy basic test window (will be replaced by a wizard // eventually // - GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + GtkWidget* window = wintc_setup_personalize_wizard_new(); - gtk_window_set_title(GTK_WINDOW(window), "Hello World!"); gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(wnd_setup)); g_signal_connect( diff --git a/base/setup/guiphase/src/perwiz.c b/base/setup/guiphase/src/perwiz.c new file mode 100644 index 0000000..41850a5 --- /dev/null +++ b/base/setup/guiphase/src/perwiz.c @@ -0,0 +1,67 @@ +#include +#include +#include +#include + +#include "perwiz.h" + +// +// GTK OOP CLASS/INSTANCE DEFINITIONS +// +struct _WinTCSetupPersonalizeWizardClass +{ + WinTCWizard97WindowClass __parent__; +}; + +struct _WinTCSetupPersonalizeWizard +{ + WinTCWizard97Window __parent__; +}; + +// +// GTK TYPE DEFINITION & CTORS +// +G_DEFINE_TYPE( + WinTCSetupPersonalizeWizard, + wintc_setup_personalize_wizard, + WINTC_TYPE_WIZARD97_WINDOW +) + +static void wintc_setup_personalize_wizard_class_init( + WinTCSetupPersonalizeWizardClass* klass +) +{ + WinTCWizard97WindowClass* wizard_class = + WINTC_WIZARD97_WINDOW_CLASS(klass); + + wintc_wizard97_window_class_setup_from_resources( + wizard_class, + "/uk/oddmatics/wintc/wsetupx/watermk.png", + "/uk/oddmatics/wintc/wsetupx/header.png", + "/uk/oddmatics/wintc/wsetupx/perwizp1.ui", + NULL + ); +} + +static void wintc_setup_personalize_wizard_init( + WinTCSetupPersonalizeWizard* self +) +{ + wintc_wizard97_window_init_wizard( + WINTC_WIZARD97_WINDOW(self) + ); +} + +// +// PUBLIC FUNCTIONS +// +GtkWidget* wintc_setup_personalize_wizard_new(void) +{ + return GTK_WIDGET( + g_object_new( + WINTC_TYPE_SETUP_PERSONALIZE_WIZARD, + "title", "Windows XP Professional Setup", + NULL + ) + ); +} diff --git a/base/setup/guiphase/src/perwiz.h b/base/setup/guiphase/src/perwiz.h new file mode 100644 index 0000000..f280a88 --- /dev/null +++ b/base/setup/guiphase/src/perwiz.h @@ -0,0 +1,26 @@ +#ifndef __PERWIZ_H__ +#define __PERWIZ_H__ + +#include +#include +#include + +// +// GTK OOP BOILERPLATE +// +#define WINTC_TYPE_SETUP_PERSONALIZE_WIZARD (wintc_setup_personalize_wizard_get_type()) + +G_DECLARE_FINAL_TYPE( + WinTCSetupPersonalizeWizard, + wintc_setup_personalize_wizard, + WINTC, + SETUP_PERSONALIZE_WIZARD, + WinTCWizard97Window +) + +// +// PUBLIC FUNCTIONS +// +GtkWidget* wintc_setup_personalize_wizard_new(void); + +#endif diff --git a/base/setup/guiphase/src/res/header.png b/base/setup/guiphase/src/res/header.png new file mode 100644 index 0000000000000000000000000000000000000000..d02395b4027d446ec5a10abc9adf8dcc19581c4d GIT binary patch literal 976 zcmV;>126oEP)%Aco^ktiKEDMgC=Xtu{@8RIv zZJ+LF+lH?Ad_K`04q2g)Q-`#Mw28x<&i8$?shx`)`O-m z*O{JmpCG|k`U`GkN}?^f-aCDa;S;-dCV>9+dQI@m=Ju}dq#f+C(S%C5_zq02bshzY zQX2sI6^KOWwxfWirLq%f3K2(*%=6lX2skTUML6A)F@F#cYls$3UVhJj+)}duPN22Wf5X1h&iNb)_8KvW8sXPr}^`|P8O^2wr9Iu zDv_rp=#*B&)TK7F{&Q?ScarP`Lgi;`0Z|UsLJqtcJGVO+&E9p1L|;T@W^361DJe$f z4I~h5Pec5^j4?Iwr0iqQ7sQDxkf2~DZMLpB*11{5YvKMgvM|r^7PzBBGLZd z=)57dUvvJ*v)qe)q9#8gzmbTwpf?(LBDeFHq0H5nI}I47#Ky zK4Sf%)Kme~G+JtgsISx{714TpB-Vb;PHvoNsZ!*N_Uln)xl=1~l266=AWpPtBtFHB ykr&1Z+xF4cKjr=Z|8{%^62~t^wTZ!J_WK374-k~ol*1VS0000 + + + True + False + Regional and Language Options + You can customize Windows XP for different regions and languages. + horizontal + + + + True + False + /uk/oddmatics/wintc/wsetupx/region.png + + + False + False + 0 + + + + + + This is when you'd select regional and language options. + True + False + 25 + True + 0.0 + + + + + False + False + 1 + + + + diff --git a/base/setup/guiphase/src/res/region.png b/base/setup/guiphase/src/res/region.png new file mode 100644 index 0000000000000000000000000000000000000000..1ec65a296173cfcbcbff4a2ad870f82ece04ce61 GIT binary patch literal 545 zcmV++0^a?JP)fnAK7>F3dlYl0?8WceDBSk94xpx9W__Ppt;Q&y$P(hm$#14dGI`EI} zh6@&`39{I5o%OCWUlPs7J=eJeWAnK5q{ssHW5;4=NE_hcJW&PzrOglL;uh-Wa00la zZC$j5HV+-#I_s<4I|1F|@muH+E=q@wp!ypw%vbOLE+7%YD{sI#6%n+sZvw9DR3V~> zkADHX%|yimNpnQi>8i9USOHMql-gG(A+;GkfL1{1!utZw$UD`u$m5!v*~=s4ZX~AY jAI|^e_ByEIdvpE+zWyc*^Tj*(00000NkvXXu0mjfV3+;d literal 0 HcmV?d00001 diff --git a/base/setup/guiphase/src/res/resources.xml b/base/setup/guiphase/src/res/resources.xml index ef65d20..0e933c4 100644 --- a/base/setup/guiphase/src/res/resources.xml +++ b/base/setup/guiphase/src/res/resources.xml @@ -14,6 +14,10 @@ logo.png throbber.png + header.png + region.png + watermk.png + @@ -23,5 +27,7 @@ setupwnd.ui + + perwizp1.ui diff --git a/base/setup/guiphase/src/res/watermk.png b/base/setup/guiphase/src/res/watermk.png new file mode 100644 index 0000000000000000000000000000000000000000..6c478404930478a54980bf704d6f255a558aed58 GIT binary patch literal 5237 zcmV-*6pHJKP)RCr$Poe6RzDGWvJx%hZ));IH1Rux?&31~rpNWLQ+o@qcV zdVB=AeSLlX{C<6XJ$~^Q1&s{yFU;^LOFdY=k7BS{r9y(Kp~-! zP)O{uvCGCT8%pR)39-xe6)Pcj&HDo}B$U&aa$=@JIX%VnP{=L{`Mcqd(MAml*+U^W z{O!}*F^!T!B0tg<-gbOwT~v@pNWwvPN$%l zncm4+uEse(=~{V$LUwU76jFVZ)JinU=ad)9>0J7{9zpl#XI{@AlPW#^>>`n@%aB2ocVLmT3W3wP{@TgU{YrtYIivQ`1|^A zo0aPWdEVX!MtOZuNFyg%IlE>@8bhWk6##8jOGKIfv?x)eX%4bH8n9Ha$X3Emq z9;ree^~EvY@&6j73~}P|mr}4Zta1)0`#Me*S_WGo8ChPckhwT7r(QMSN}HjevS&4` z$CVsq)=WAEr1F`;FzQCBMnV{mi`H3jOcx*RgxInKUG3jfe;s*)?UwO@Lf$xr42tvt z<+UT`o;ONBO%;=)hPgc2Nk>cqC}a=C*E%c2k>M`|WKho9c_h_8Z7d0e+(04YxG^|9 zKxeh{&h3yjyKU{HgF;T&xM`gg$B+S>mfdzvVZ)9--PKb{nu|r#jZ#ZY`VI@!_pNQe zaj`syjN`gAUOO+T=c_HX%Yo-hi!VQyehxd*SW-Lbppc6zWKgCOOw=`PDh`e9e!!&n z7KkA?iy^6N(3GNSkBYcz35A@XblR9m>#ST1DUI#Y<06SdN@7ANBovYr=Y@msSV1M{ zlp!yrl-fy$7;=KLYMs@pkm2Ut)ae=^sa-e}5(-HwWbHgr17%GmwUZ7Cxrsu4)G>dQ zrvWlm>=-5}Bowl$kTrG8-SNW(w4{vSjfrL z;Cf2WFK6_-eNvUfB@}XT9uhxwkw@SVwb%Tq$3rQb7?SE$J(7m zB_)JHE(G7~7?KBM{?;?jMi2_QIE=ab4mt5%Znw>7q z8^Z{0)=kE7OwEGJb<4GE zjZ)1j(;Ai(6cq|7RR&J}PR??*5+R1%EQXw=eB63FO*$wfNAaWqdnac>A$vGW>f9Cc zYp-Q<)yYG?PLmD_**@vQbIYHa|M&ObslA<1`SKKyqa8;BYJYnS5mjfLt{Wij_#Dpp{{DXa zYW^N&;$N+uP%hYNwUgRAxAW}boNs6!R1~rYKoXmDo}xi-fAx`FY#$E z@5SDXxXmtBqhgXZ(^H>l$IHr&wEh;R7-wpuHw0@!By}2=72+FTD}Yxuxb$UDIJ6h|ne-xx9|m=wy{%16~-n>!jWeVYHP)gd1 zbI3)P?Nyd*35Pm$V$UaiHvtf>Z+|cG*H0DQAyL z=R!rbhigZhPrO`*M;KnyjE$X6eMQBYE_QGSxQGg3$^D5*vw zy=?^KPL_!VWuM!6%1%B#0g^JpZ4C1D9RbQu*6G^b$lDQpg&|c)Z6i>w?+D19%u`6~ zR_ofCS+cDg27C4+pmVleJ4*GJYT&o`{oy3LrovM15#T!aXvdK^{wrx)S~mXw?m&jh zBn?L1IU^9mkb_R*OAU0?glJRA=+km@h8MMJMnD2xu%CmEf=ioTQf1m6fYk6Xy-ZEn zN~%f2z}x&t?WBWMFQ0sTbNWc50hbXNsccf%xcT`|0!SBAphqmng=JJe9+Uub7?3+a zN5M@)nfYG!Fc00ZB0xvSp*bi+-23xY_<;KjSuyX@9b!95(R!tqoB<#SOrdzR;%TAH z4?Ps}ay27{P&?Qt#{)Sm)h9S>4|s7O5b~CfdH@OOKEF@&WU=)*-&rsMDxXj_`(*`% zZ0@A+`D@fS5BAq%u+eYoj8O^*2bd+JaJ`@ebbyY6|8ERwt%QIN@KNw(#V}Wh z3n!ohbR6gcCmgQCyKF!R2zzdXt6%b>hz6W{!AbGJO|Nl7z8|tw31GY@j9jR=`NW)X zVgRagaiusHbn%Tz%CA&9bsD4Lf~}CHz*JKyXA;1!jRI3pQR!Siq;|OFF8MfcST$PR zNGK{xQ7J!B>8<{;fRe3{y*tx77`v6H{6VE#kCz3EPjR$R$j}(;PQu>#vMvRg85GJD z$)bL?LYCmLXar|c>;k70Ixk{i#sLQgs?%nTQO->7u&xT3bX+YsXjaJ3Xp6>hCWmy8 zM&;K+M@{xo?QgBe%>Nt+xPxZaDCbJK3w*8pq{?3>LG*se(sLl;c?a%uBJ{Jjyyq>r z_4Urz`nY26_F36)?PqKGS3j6vVYoY#HiNm&L~HGDzw(c#4#SgQRtg!O+LJj<)~v$}zsepoJ>! zR4?bW4qmTz&9d7%9&^jTm+ZI^*6OGQI=3`(ms@VxSm8wRZ$EKv9D|b_^G` zobsk+dpX>r-MH@-NX)g70GS)`7KJN83HWSw zZqvOKF(sk!vZ-__4TI1!_&Er3&{@>g(oWB1ITLy9JOhD*;^~&@dn@8Zh4idEUfZ^| z+G$$f;aav==dRW+jXT#b!~7bo#l~heAZD~z3RGyLw4C4k1CD)WICjN4xsb%M`0atr z?Qo%vy3L4WQb=Gd+2z{sov-ti8i`YO&C3OZ8XvA5-}$g)KVN!3>z4}$r+r*ozVi*b zQo|Y0-SSXi0;}C)cjue8iQSxZ%>lLH<0P6bu?= z3}a2%_MZ+QhsKW-5Ehe|s>63WfE)%S1%d^P>nkN<$RR+EgfT4nRGmK4p^)8yq#SRl zjO!~Tfb0t73>epjl6Wo~yKLSuPEO@!!np3T9bKuR2DQi1a#x$PVFZv558M?lX}>(c zxbCtIg*2T=o?u)PN&smFq(>OnTe< z_Iv@yXbttcW-7h)-PEg>FTJ+dTfeB+D|<%& zrqaDHvsUf93yj{EZS1lcvF_bq^b93pNFs)$Vl68L9&Lx}*Q|6XBoy+*z$_3ELo#>Q zcU`W%F56JZib4X${=4dQj1faBW604lU$6RRFVRIHj|A%QwAY|`wR?Ak^tfz8Aqxr# z7~fY;n6Wk`W?Usk3@L~qy()QYyDrP75<&|op^!|4Y<2qX<)M&_^F<1hUdln$d)IUh zlu$@0Vq=2ZD_cD%Rx!bj8KSM$?Exb*3Fxt0*Wv0tK2H{@84iWCQ2=V3y{4BS>;@+k z5(=441}TJAa6%!Y^EazO^{RBzcFlsadMLWvZgaQ(QjpGo5;0`-I>MX-D5u>u-3mtW z9t1ID`L5`@!p7~_3@D+H1%>1~?e6)8LkWe1LY5|#HH@6)dwYe%?)rSr+6zMVh7k%0 zg$xQg9Y$QKDIbd8JvL1HHws2_*@i-16%sI>$AlUWEzCK)h#|4duD(izg0XeEzu1RD zLLsd-c2cE;LNZ>4K*l&mkBD-Wr+2FzFFzq7*E?iGy70Tf9H^9&Ltktu%3)m zyE(8UhU^?eQch}3=QvqX2iIPjkE(-b_xr65kGrsbGQa6p-*b6Z{hVHb&|LIQom^1FHyv}4q5x4kXrw^D#vyD=tgtf^~r}Aayvm&yx9 zxotY<+Z@PaFz)apasG(@O4B?1)yhpq-_C^Hw5wkObS8|D5Y(<=Ep9( zhhL`JltN+MSZV#|{G0Ex!(doDWwt#j6xQvP*8ji81ei2k($;w{2Zhv({Sswb0pWDAT@h0?1&~YJ^T>fC zm&XFi7`j+NTW#mdW0!qvAOoa*;Ax2!OJ$*u0J3QlVhtq}atk2WQA#KzfP_L?%Y3^% z?WSSXa(-h0l#2Zv>!_4UqDN7`db)KtqWb@^Y(`bdZr>HUf1haWD=bWjr>! zWN=6GP$Gt8y^3(KuePb~3MFDl067VNC?u}jOhT_*?G;MIkmN({?!0)j2A!eAk_{jy z0-lW_kM@+d;c;6>9JP3@W1`P)U3GTJetzrl{gY-$N5d;HquOgS$7we}i7c2P*| zzO`URo0?P|)19N0a_nYD>zX~w;n=6ELP9B}(+WTi0TSnwTrdITFdzXX2TA}r6i7fx zK?xuMB*nb7$mME(=s&(p_aK(1(2t&!D^0WI0`5QlRE+Kmv2)b z<0Vo8p@jl+;oNf>-v~&lgGa(gL3%$WEcNK7Kw2mu14aJl;^$+qp`*D0jypBl v0aSfC=s3%7PWftMK(%8=`W@iRuR#9;=a?m9h#list_pages; for (guint i = 0; iter; iter = iter->next, i++)