ReactOS "Lean Explorer"

Moderators: forart, Davy Bartoloni, gabrielilardi

Dax89
Posts: 84
Joined: Mon May 12, 2008 6:26 pm
Location: Provincia di Nuoro
Contact:

ReactOS "Lean Explorer"

Post by Dax89 »

Ciao a tutti :D
Stavo smanettando con l'explorer di reactos, per curiosità sono andato sul suo sito (http://www.foxplanet.de/explorer) e ho trovato una versione "mini", senza fronzoli, proprio quello che cercavo io.

Ho provato a ricompilarlo, ma...il programma crasha su Vista, mi dice che non riesce a trovare un Entry Point all'api DrawShadowText esportata da comctl32.dll (mah...a me sembra un api per il disegno...non dovrebbe stare in GDI32??? :shock: ), però io non trovo niente nel codice che faccia riferimento a questa API.

Su ReactOS invece, parte però appena clicco su una cartella, crasha...

E' stato già provato??? Avete sperimentanto comportamenti anomali??? O solo io???

(PS: Compilato su Vista con GCC 3.4.5)

User avatar
Davy Bartoloni
Posts: 1483
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo
Contact:

Re: ReactOS "Lean Explorer"

Post by Davy Bartoloni »


Dax89
Posts: 84
Joined: Mon May 12, 2008 6:26 pm
Location: Provincia di Nuoro
Contact:

Re: ReactOS "Lean Explorer"

Post by Dax89 »

Mmmh, forse mi sono spiegato male (chiedo scusa!! :oops: )
Mi riferivo a questo: http://shell.franken.de/svn/sky/ros-exp ... /explorer/

Diversa da quella che c'è su ReactOS.

Ecco uno screen, su ReactOS della variante della shell (ho scaricato l'ultimo trunk stamattina :D ):
[ external image ]

Come si può notare mancano le stringhe (devo ancora capire il perchè :shock: )

gabrielilardi
Moderator Team
Posts: 873
Joined: Sat Sep 02, 2006 1:30 am
Location: Italy

Re: ReactOS "Lean Explorer"

Post by gabrielilardi »

Dax89 wrote:Diversa da quella che c'è su ReactOS.
Da quello che so io è una versione primitiva di quello attuale...

Dax89
Posts: 84
Joined: Mon May 12, 2008 6:26 pm
Location: Provincia di Nuoro
Contact:

Re: ReactOS "Lean Explorer"

Post by Dax89 »

No non è primitiva, è una versione che ha meno "optional" rispetto a quella che viene usata solitamente. :D
Mi sono scaricato i sorgenti e ci sto lavorando su.
Mi piacerebbe usare una shell stile explorer, però...con qualche modifica personale e soprattutto, senza roba INUTILE :mrgreen:

User avatar
Davy Bartoloni
Posts: 1483
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo
Contact:

Re: ReactOS "Lean Explorer"

Post by Davy Bartoloni »

anche io.. ricordo che tempo addietro quel branch lean.. era indietro di 2 anni rispetto al normale explorer di M.Fuchs.. boh
in ogni caso,se pensi possa essere utilizzato e pensi possa valerne la pena, appena possibile, comunicaci ulteriori info... riguardante l'ambiente che allestirai per lo sviluppo e compilazione.. in modo da poter far partire magari altri progetti paralleli al tuo per la creazione di un nuovo explorer :) magari ogni persona si potra' occupare di una parte diversa. :)

Dax89
Posts: 84
Joined: Mon May 12, 2008 6:26 pm
Location: Provincia di Nuoro
Contact:

Re: ReactOS "Lean Explorer"

Post by Dax89 »

Beh, secondo me ne vale la pena...giusto per dare un aspetto "quasi" nuovo a ReactOS che ne ha bisogno (nuovi look attirano nuovi utenti :lol: )

Per ora sto risolvendo i Bug.
Ho recuperato le stringhe, era un problema con i file RC, ora è tutto risolto.
Ho lasciato solo 2 desktop multipli (4 erano un'esagerazione, anche ReactOS ne ha 2)
(PS: Ora la taskbar è così perchè la sto modificando, ho fatto uno screen al volo :oops:)
[ external image ]

I tasti avanti e indietro non funzionano, come anche il copia e incolla (che novità!! :lol:).
Il codice è molto semplice da capire, infatti non ci vuole molto per fare le modifiche.

Vi faccio sapere tutte le modifiche che farò in seguito :D
Sto usando CodeBlocks con GCC 3.4.5, la shell la sto testando direttamente su ReactOS (r-41511)

User avatar
Davy Bartoloni
Posts: 1483
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo
Contact:

Re: ReactOS "Lean Explorer"

Post by Davy Bartoloni »

ottimo!, i desktop multipli.. da quel che so' nn saranno parte dell' explorer_new.. la barra "spessa" fa molto 7 style :) appena hai tempo , posti un link al tuo precompilato?
bisognerebbe pure togliere la scritta "start" (testuale) dal pulsante mettendo invece un bel BMP moderno (sicuramente ... graficamente piu' gradevole)

Dax89
Posts: 84
Joined: Mon May 12, 2008 6:26 pm
Location: Provincia di Nuoro
Contact:

Re: ReactOS "Lean Explorer"

Post by Dax89 »

Ecco il link di explorer precompilato:
Lean-Explorer.rar

I sorgenti con soluzione CodeBlocks + Modifiche:
LeanExplorer-Src.rar

Le modifiche che ho fatto sono le seguenti (molto semplici :lol: )

N.B: C'è un noiosissimo bug, che se si clicca qualunque icona nel desktop, la shell crasha,
Il bug sta quì, file: shellfs.cpp

Code: Select all

ShellPath ShellEntry::create_absolute_pidl() const
{
	CONTEXT("ShellEntry::create_absolute_pidl()");

	if (_up)  // <== CRASH!!! _up non è NULL
        {
		ShellDirectory* dir = _up;

		if (dir->_pidl->mkid.cb)	// Caching of absolute PIDLs could enhance performance.
			return _pidl.create_absolute_pidl(dir->create_absolute_pidl());
	}

	return _pidl;
}
In desktopbar.h che si occupa di tutta la parte di sotto della shell (start, taskbar, traybar, etc) ho semplicemente cambiato la costante dell'altezza

Code: Select all

#define	DESKTOPBARBAR_HEIGHT	43

/* Prima Era
  * #define	DESKTOPBARBAR_HEIGHT	29
  */

In taskbar.cpp, che è la parte che si occupa di far apparire i programmi aperti ho eliminato la parte che si occupava di scrivere il testo e ridimensionare i pulsanti sulla base di esso, quindi:

In ResizeButtons() è rimasto questo:

Code: Select all

void TaskBar::ResizeButtons()
{
	int btns = _map.size();

	if (btns > 0)
	{
		SendMessage(_htoolbar, TB_SETBUTTONSIZE, 0, MAKELONG(TASKBUTTONWIDTH_MAX, 40));
		SendMessage(_htoolbar, TB_AUTOSIZE, 0, 0);
	}
}
E nella callback EnumWndProc è rimasta solo la parte che disegna il pulsante più l'icona (quest'ultima ancora da centrare sul pulsante)

Code: Select all

BOOL CALLBACK TaskBar::EnumWndProc(HWND hwnd, LPARAM lparam)
{
	TaskBar* pThis = (TaskBar*)lparam;

	DWORD style = GetWindowStyle(hwnd);
	DWORD ex_style = GetWindowExStyle(hwnd);

	if ((style&WS_VISIBLE) && !(ex_style&WS_EX_TOOLWINDOW) &&
		!GetParent(hwnd) && !GetWindow(hwnd,GW_OWNER))
		{

		TaskBarMap::iterator found = pThis->_map.find(hwnd);
		int last_id = 0;

		if (found != pThis->_map.end()) {
			last_id = found->second._id;

			if (!last_id)
				found->second._id = pThis->_next_id++;
		} else {
			HBITMAP hbmp;
			HICON hIcon = get_window_icon(hwnd);

			if (hIcon) {
				hbmp = create_bitmap_from_icon(hIcon, GetSysColorBrush(COLOR_BTNFACE), WindowCanvas(pThis->_htoolbar));
				DestroyIcon(hIcon); // some icons can be freed, some not - so ignore any error return of DestroyIcon()
			} else
				hbmp = 0;

			TBADDBITMAP ab = {0, (UINT_PTR)hbmp};
			int bmp_idx = SendMessage(pThis->_htoolbar, TB_ADDBITMAP, 1, (LPARAM)&ab);

			TaskBarEntry entry;

			entry._id = pThis->_next_id++;
			entry._hbmp = hbmp;
			entry._bmp_idx = bmp_idx;

			pThis->_map[hwnd] = entry;
			found = pThis->_map.find(hwnd);
		}

		TBBUTTON btn = {-2/*I_IMAGENONE*/, 0, TBSTATE_ENABLED/*|TBSTATE_ELLIPSES*/, BTNS_BUTTON, {0, 0}, 0, 0};
		TaskBarEntry& entry = found->second;

		++entry._used;
		btn.idCommand = entry._id;

		HWND foreground = GetForegroundWindow();
		HWND foreground_owner = GetWindow(foreground, GW_OWNER);

		if (hwnd==foreground || hwnd==foreground_owner)
		{
			btn.fsState |= TBSTATE_PRESSED|TBSTATE_CHECKED;
			pThis->_last_foreground_wnd = hwnd;
		}

		if (!last_id) {
			 // create new toolbar buttons for new windows
			btn.iBitmap = entry._bmp_idx;
			entry._btn_idx = SendMessage(pThis->_htoolbar, TB_BUTTONCOUNT, 0, 0);

			SendMessage(pThis->_htoolbar, TB_INSERTBUTTON, entry._btn_idx, (LPARAM)&btn);

			pThis->ResizeButtons();
		} else {
			 // refresh attributes of existing buttons
			if (btn.fsState != entry._fsState)
				SendMessage(pThis->_htoolbar, TB_SETSTATE, entry._id, MAKELONG(btn.fsState,0));
		}

		entry._fsState = btn.fsState;

		 // move minimized windows out of sight
		if (IsIconic(hwnd)) {
			RECT rect;

			GetWindowRect(hwnd, &rect);

			if (rect.bottom > 0)
				SetWindowPos(hwnd, 0, -32000, -32000, 0, 0, SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
		}
	}

	return TRUE;
}
Per il numero di desktop multipli basta lavorare sulla costante DESKTOP_COUNT in globals.h.

Per la scritta del menu start, credo si possa eliminare in desktopbar.h, nella funzione Init(), disegna tutto lì, avvio rapido, menu start, taskbar, traybar, etc etc:

Code: Select all

LRESULT DesktopBar::Init(LPCREATESTRUCT pcs)
{
	 // create start button
	ResString start_str(IDS_START);
	WindowCanvas canvas(_hwnd);
	RECT rect = {0, 0, 0, 0};

        /* Questo pezzo quì??? */
	DrawText(canvas, start_str, -1, &rect, DT_SINGLELINE|DT_CALCRECT);
        /* Questo pezzo quì??? */

	int start_btn_width = rect.right+16+8;

        ...
        ...
Per i desktop multipli, secondo me sono utili, non 4, ma 2 (Vabbè lo confesso, sono di parte, a me piacciono da matti :mrgreen: )
Di Explorer_New, non c'è neanche uno screen, sull'aspetto che dovrebbe avere??? Io non lo mai visto :cry:

gabrielilardi
Moderator Team
Posts: 873
Joined: Sat Sep 02, 2006 1:30 am
Location: Italy

Re: ReactOS "Lean Explorer"

Post by gabrielilardi »

Dax89 wrote:Ecco il link di explorer precompilato:
Grazie delle spiegazioni :) . Ci do un'occhiata subito.

Per explorer_new mi sa che non ha mai girato su ros, appariva la taskbar e spariva subito se non sbaglio, magari disegnava le icone sul desktop che non sparivano. Invece andava su XP, per vederlo basta che uccidi explorer.exe e lanci explorer_new, ti passo questo file con qualche versione vecchia così ti diverti :wink:.

User avatar
Davy Bartoloni
Posts: 1483
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo
Contact:

Re: ReactOS "Lean Explorer"

Post by Davy Bartoloni »

Dax89 wrote:Ecco il link di explorer precompilato:
Lean-Explorer.rar

I sorgenti con soluzione CodeBlocks + Modifiche:
LeanExplorer-Src.rar
THX!

s1501
Posts: 133
Joined: Sun Nov 02, 2008 8:28 pm

Re: ReactOS "Lean Explorer"

Post by s1501 »

per l'aspetto non ti preoccupare, ci penso me :)

si potrebbe continuare dalla grafica che avevo fatto per il progetto di davy :)

Ey3
Posts: 790
Joined: Thu Nov 15, 2007 9:13 pm
Location: Italy

Re: ReactOS "Lean Explorer"

Post by Ey3 »

s1501 wrote:per l'aspetto non ti preoccupare, ci penso me :)

si potrebbe continuare dalla grafica che avevo fatto per il progetto di davy :)
Ci pensa te :lol: :mrgreen: :mrgreen: :lol:

User avatar
Davy Bartoloni
Posts: 1483
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo
Contact:

Re: ReactOS "Lean Explorer"

Post by Davy Bartoloni »

con l'occasione ho modificato le iconcine dell' excplorer standard di ROS... "CANDYZZANDOLE".. decisamente piu' bello ora a vedersi .. ( snapshot su pagina REACTIT scritta da Forart )

Dax89
Posts: 84
Joined: Mon May 12, 2008 6:26 pm
Location: Provincia di Nuoro
Contact:

Re: ReactOS "Lean Explorer"

Post by Dax89 »

Eh sì, sono decisamente più carine di quelle standard. :wink:

Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot], Google [Bot] and 1 guest