ReactOS "Lean Explorer"

Moderators: Davy Bartoloni, gabrielilardi, forart

ReactOS "Lean Explorer"

Postby Dax89 » Sun Jun 21, 2009 3:53 pm

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)
Dax89
 
Posts: 84
Joined: Mon May 12, 2008 6:26 pm
Location: Provincia di Nuoro

Re: ReactOS "Lean Explorer"

Postby Davy Bartoloni » Sun Jun 21, 2009 4:30 pm

Davy Bartoloni
 
Posts: 1457
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo

Re: ReactOS "Lean Explorer"

Postby Dax89 » Sun Jun 21, 2009 5:08 pm

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

Diversa da quella che c'è su ReactOS.

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

Come si può notare mancano le stringhe (devo ancora capire il perchè :shock: )
Dax89
 
Posts: 84
Joined: Mon May 12, 2008 6:26 pm
Location: Provincia di Nuoro

Re: ReactOS "Lean Explorer"

Postby gabrielilardi » Sun Jun 21, 2009 8:34 pm

Dax89 wrote:Diversa da quella che c'è su ReactOS.

Da quello che so io è una versione primitiva di quello attuale...
gabrielilardi
Moderator Team
 
Posts: 873
Joined: Sat Sep 02, 2006 1:30 am
Location: Italy

Re: ReactOS "Lean Explorer"

Postby Dax89 » Mon Jun 22, 2009 9:08 pm

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:
Dax89
 
Posts: 84
Joined: Mon May 12, 2008 6:26 pm
Location: Provincia di Nuoro

Re: ReactOS "Lean Explorer"

Postby Davy Bartoloni » Mon Jun 22, 2009 9:36 pm

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. :)
Davy Bartoloni
 
Posts: 1457
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo

Re: ReactOS "Lean Explorer"

Postby Dax89 » Mon Jun 22, 2009 10:13 pm

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:)
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)
Dax89
 
Posts: 84
Joined: Mon May 12, 2008 6:26 pm
Location: Provincia di Nuoro

Re: ReactOS "Lean Explorer"

Postby Davy Bartoloni » Tue Jun 23, 2009 9:33 pm

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)
Davy Bartoloni
 
Posts: 1457
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo

Re: ReactOS "Lean Explorer"

Postby Dax89 » Tue Jun 23, 2009 10:26 pm

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:
Dax89
 
Posts: 84
Joined: Mon May 12, 2008 6:26 pm
Location: Provincia di Nuoro

Re: ReactOS "Lean Explorer"

Postby gabrielilardi » Wed Jun 24, 2009 12:47 am

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:.
gabrielilardi
Moderator Team
 
Posts: 873
Joined: Sat Sep 02, 2006 1:30 am
Location: Italy

Re: ReactOS "Lean Explorer"

Postby Davy Bartoloni » Wed Jun 24, 2009 12:58 am

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

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


THX!
Davy Bartoloni
 
Posts: 1457
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo

Re: ReactOS "Lean Explorer"

Postby s1501 » Wed Jun 24, 2009 11:24 am

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

si potrebbe continuare dalla grafica che avevo fatto per il progetto di davy :)
s1501
 
Posts: 133
Joined: Sun Nov 02, 2008 8:28 pm

Re: ReactOS "Lean Explorer"

Postby Ey3 » Wed Jun 24, 2009 2:45 pm

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:
Ey3
 
Posts: 774
Joined: Thu Nov 15, 2007 9:13 pm
Location: Italy

Re: ReactOS "Lean Explorer"

Postby Davy Bartoloni » Wed Jun 24, 2009 2:58 pm

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 )
Davy Bartoloni
 
Posts: 1457
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo

Re: ReactOS "Lean Explorer"

Postby Dax89 » Wed Jun 24, 2009 7:10 pm

Eh sì, sono decisamente più carine di quelle standard. :wink:
Dax89
 
Posts: 84
Joined: Mon May 12, 2008 6:26 pm
Location: Provincia di Nuoro

Next

Return to Italian

Who is online

Users browsing this forum: No registered users and 0 guests